pdeploy cegui

Hello,

Is there an easy way to distribute cegui using pdeploy? My users are windows users, I need to generate some exe files…

Thank you

You’ll need to create your own custom packages for this using the pdef syntax described in the manual.

Read in the manual

I hope information found in the manual will be enough.

Thank for your answser anyway

You should look in direct/src/p3d/thirdparty.pdef for an example of how other modules and libraries are packaged.

I’ve downloaded pycegui, and install it.
It takes place in \Panda3D-1.8.1\python\Lib\site-packages\PyCEGUI.

I create a pcegui.pdef like this :

class cegui(package):
	require('panda3d')
	module('PyCEGUI')
	

but I got this error

>>ppackage  -i pcegui pcegui.pdef
:AppRunner: Total Panda3D disk space used: 170 MB
:AppRunner: Configured max usage is: 2048 MB
:Packager: Reading pcegui.pdef
Unknown module: PyCEGUI
Generating cegui/cmu_1.8/cegui.cmu_1.8.mf

I don’t how to go forward? Any clue?

Thank you

Ppackage uses a different version of Python than is on your system, so you need to manually add PyCEGUI to sys.path at the top of your .pdef file (after importing sys of course). However, you need to make sure that the version of Python that your CEGUI build is made for is the same - 32-bits Python 2.7. In your case, since you used the 1.8.1 SDK, it’s probably fine.

Thank you.
I am going step by step, sorry for that, and waste of time.
Apparently, it tries to call dumpbin and mt, not recognize…
And can’t determine assemblies for Pycegui…

C:\pascal\shimstar\cegui>ppackage -i cegui pcegui.pdef
:AppRunner: Total Panda3D disk space used: 170 MB
:AppRunner: Configured max usage is: 2048 MB
:Packager: Reading pcegui.pdef
'dumpbin' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
:Packager(warning): Unable to determine dependencies from /c/apps/Panda3D-1.8.1/python/Lib/site-packages/PyCEGUI/PyCEGUI.pyd
'mt' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
:Packager(warning): Unable to determine dependent assemblies from /c/apps/Panda3D-1.8.1/python/Lib/site-packages/PyCEGUI/PyCEGUI.pyd
Generating cegui/cmu_1.8/win32/cegui.cmu_1.8.win32.mf

can you help me again?

Thank you

Yes, you do need dumpbin.exe and mt.exe, which are available for free if you install Microsoft Visual C++ Express. Either 2008 or 2010 will do. Alternatively, you could try the Windows 7.1 SDK, but I’m not 100% confident that it contains it.

Yeah for information mt.exe is in the sdk, and dumpbin in visual studio.

ok I’ve generated the package.

But, for now, how we do to tell to packp3d there is a local package to use?

I used this syntax to precise where the package is (hosted)

packp3d -o test.p3d -d . -r cegui,1.0,http://shimrod.free.fr/panda3d/package/cegui -r morepy

ps: You can go this website if you want to test…

here the error log

any clue?

It’s a line ending issue. contents.xml claims that your import.xml has a hash of 0716230dc9e616915c036c2d954a78cb, but in reality it has a hash of 70297e7fec80c6b46be4f92c18c61015. When I convert import.xml from UNIX to DOS line endings using unix2dos, it changes back to 0716…

My ftp transfert was by default on ascii. I switch to binary, and it is fine by now.
I will try to pdeploy now, and test it.

Thank you

ps: I don’t know how you determine, it was a hash problem, but great job 8)

Trying to launch p3d, I got this error log now

In my host directory, I got the PyCEGUI.pyd right downloaded. I wonder if I have to have the pycegui’s dll too.
Is it a way to package it?

Thank you

I modify my pdef like this

import sys
sys.path.insert(0,'C:\\apps\\Panda3D-1.8.1\\python\\Lib\\site-packages')

packager.setHost('http://shimrod.free.fr/panda3d/package/cegui')

class cegui(package):
	config( 
        version="1.0", 
        display_name="cegui")
	require('panda3d')
	module('PyCEGUI')
	file("CEGUIBase.dll")
	file("CEGUIExpatParser.dll")
	file("CEGUIFalagardWRBase.dll")
	file("CEGUIOpenGLRenderer.dll")
	file("CEGUISILLYImageCodec.dll")
	file("boost_python-vc90-mt-1_46_1.dll")
	file("SILLY.dll")	

To have all dll dependencies.

But I got this error when I execute my p3D:

And in AppData\Local\Panda3D\hosts\shimrod.free.fr_8fcc48ede46d187c\cegui\1.0\PyCEGUI, I have only PyCegui.pyd, the dll are in previous folder 1.0.
Maybe it is the trick?

What is your mind about this?

Thank you

That’s the first thing I checked as I’ve been bitten by this problem many times before. :wink:

As for the error: you’re missing the PyCEGUIOpenGLRenderer module. Is there a Python module with that name? If so, you have to name it explicitly in a module() call.

In the pdcegui.py:

import PyCEGUI 
import PyCEGUIOpenGLRenderer 

There is no python module Pyceguiopenglrenderer.
Only one dll called PyCEGUIOpenGlRenderer.dll. I think it is the PyCEGUI.pyd that called this dll. So I don’t know to declare it into my pdef.

You have this in your .pdef:

file("CEGUIOpenGLRenderer.dll")

That does not include PyCEGUIOpenGLRenderer.dll. If there indeed exists a PyCEGUIOpenGLRenderer.dll, shouldn’t you also include it in the .pdef using a similar call?

Can you give me back the way to find the directory where files in package are extracted?

ps: I closed the irc channel too soon…

ExecutionEnvironment.getEnvironmentVariable(“SHIMDATAFILES_ROOT”).