Daily Snapshots (Buildbot)

Return to Panda Features in Development

Daily Snapshots (Buildbot)

Postby rdb » Fri Jan 01, 2010 2:33 pm

Hey all,

Since a few weeks I'm using buildbot internally for my builds, and I figured I'd let it build nightly snapshots so that everyone can benefit from it. So, I moved it over to panda3d.org:

http://www.panda3d.org/buildbot/

It's scheduled to build every 24 hours from CVS. Not only does this save you guys from the effort of building it from CVS, it also allows us to catch bugs early.
In case you're interested to see builds progress, and see build logs, visit: http://panda3d.org:8010/waterfall

Right now it only provides Windows and OSX builds, but that will change soon.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby rdb » Fri Jan 01, 2010 2:52 pm

For the record, the latest development build also contains PandAI and enn0x' PhysX support.
You can import those modules by importing from "panda3d.ai" and "panda3d.physx".
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby FenrirWolf » Fri Jan 01, 2010 4:26 pm

Ooh, nice. I was thinking recently how handy it would be if Panda3d had some nightly build repository.

Thanks for this!
User avatar
FenrirWolf
 
Posts: 267
Joined: Mon Jun 08, 2009 3:24 pm
Location: Mississippi, US

Postby rdb » Sat Jan 02, 2010 9:46 am

Update: I've updated the buildbot to also generate snapshots of the manual, both zip and chm:
http://www.panda3d.org/buildbot/
The manual doesn't change as often as the source, so I've set it to build weekly. I can force builds on request though.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby drwr » Sat Jan 02, 2010 1:01 pm

This rocks!

David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby radu » Sun Jan 03, 2010 7:16 am

This is indeed GREAT.
I would dare ask for something though: would it be too much to set the builds for the files with the manuals to start with "Panda3d-" as well?
User avatar
radu
 
Posts: 150
Joined: Fri Nov 06, 2009 11:09 am
Location: Bucharest

Postby rdb » Sun Jan 03, 2010 7:37 am

Er, I could do that, but is there any particular reason to do so?
I did it like this because of conventions, we have always shipped the manual as manual-x.x.x.zip.

Furthermore, if I call it panda3d-x.x.x.zip/chm, if I add the API reference later, they would have the same name.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby kaweh » Tue Jan 05, 2010 12:04 pm

Great work!

Report from OS X 10.6.2:

- Installation was fine (i checked /Developer/... and all seemed good)

- Samples are not included with the installer (not sure if you've planned to include the Samples into the daily snapshots)

- Unfortunately basic usage fails

Code: Select all
$ ppython
Python 2.5.4 (r254:67916, Jul  7 2009, 23:51:24)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import direct.directbase.DirectStart
DirectStart: Starting the game.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Developer/Panda3D/lib/direct/directbase/DirectStart.py", line 3, in <module>
    from direct.showbase import ShowBase
  File "/Developer/Panda3D/lib/direct/showbase/ShowBase.py", line 10, in <module>
    from pandac.PandaModules import *
  File "/Developer/Panda3D/lib/pandac/PandaModules.py", line 2, in <module>
    from libpandaexpressModules import *
  File "/Developer/Panda3D/lib/pandac/libpandaexpressModules.py", line 1, in <module>
    from extension_native_helpers import *
  File "/Developer/Panda3D/lib/pandac/extension_native_helpers.py", line 81, in <module>
    Dtool_PreloadDLL("libpandaexpress")
  File "/Developer/Panda3D/lib/pandac/extension_native_helpers.py", line 79, in Dtool_PreloadDLL
    imp.load_dynamic(module, pathname)
ImportError: dlopen(/Developer/Panda3D/lib/libpandaexpress.dylib, 2): Library not loaded: libp3dtool.1.7.0.dylib
  Referenced from: /Developer/Panda3D/lib/libpandaexpress.dylib
  Reason: image not found
>>>
kaweh
 
Posts: 173
Joined: Thu Mar 30, 2006 7:15 am
Location: Vienna, Austria

Postby rdb » Tue Jan 05, 2010 1:36 pm

Hm. Can you do a few tests for me?
1. Try the following Python code:
Code: Select all
from panda3d.core import Filename

Does it work? If not, what error message does it print?

2. Does /Developer/Panda3D/lib/libp3dtool.1.7.0.dylib exist?
3. Does it have the executable bit set, and have write permissions?
4. Also, does your ~/.MacOSX/environment.plist contain a DYLD_LIBRARY_PATH, pointing to /Developer/Panda3D/lib/ ?
5. Did you logout after installing Panda3D?
6. And, er, when you open a terminal, and echo $DYLD_LIBRARY_PATH, does it output anything?

I indeed didn't include the samples yet. I'll do so soon, when I finish fixing the sample programs for 1.7.0.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby drwr » Tue Jan 05, 2010 1:53 pm

Shouldn't it be Python 2.6 instead of Python 2.5? Is ppython still part of the build process?

David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby kaweh » Tue Jan 05, 2010 1:55 pm

rdb wrote:Hm. Can you do a few tests for me?
1. Try the following Python code:
Code: Select all
from panda3d.core import Filename

Does it work? If not, what error message does it print?


Sure, here we go:

Code: Select all
$ ppython
Python 2.5.4 (r254:67916, Jul  7 2009, 23:51:24)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from panda3d.core import Filename
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Developer/Panda3D/lib/panda3d.py", line 190, in __getattr__
    mod = self.__manager__.libimport(lib)
  File "/Developer/Panda3D/lib/panda3d.py", line 126, in libimport
    return cls.imp.load_dynamic(name, target)
ImportError: dlopen(/Developer/Panda3D/lib/libpandaexpress.dylib, 2): Library not loaded: libp3dtool.1.7.0.dylib
  Referenced from: /Developer/Panda3D/lib/libpandaexpress.dylib
  Reason: image not found
>>>


rdb wrote:2. Does /Developer/Panda3D/lib/libp3dtool.1.7.0.dylib exist?
3. Does it have the executable bit set, and have write permissions?


Code: Select all
$ ls -al /Developer/Panda3D/lib/libp3dtool.1.7.0.dylib
-rwxrwxr-x  1 root  admin  499456  5 Jan 11:16 /Developer/Panda3D/lib/libp3dtool.1.7.0.dylib


rdb wrote:4. Also, does your ~/.MacOSX/environment.plist contain a DYLD_LIBRARY_PATH, pointing to /Developer/Panda3D/lib/ ?


Yes.

rdb wrote:5. Did you logout after installing Panda3D?


Yes.

rdb wrote:6. And, er, when you open a terminal, and echo $DYLD_LIBRARY_PATH, does it output anything?


Hm... DYLD_LIBRARY_PATH was indeed empty. I added /Developer/Panda3D/lib to DYLD_LIBRARY_PATH in my ~/.bash_profile manually and now it works:

Code: Select all
$ ppython
Python 2.5.4 (r254:67916, Jul  7 2009, 23:51:24)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import direct.directbase.DirectStart
DirectStart: Starting the game.
Known pipe types:
  osxGraphicsPipe
(all display modules loaded.)
Tue Jan  5 19:51:01 franz.local ppython[1882] <Error>: kCGErrorIllegalArgument: CGSCopyRegion : Null pointer
Tue Jan  5 19:51:01 franz.local ppython[1882] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
>>> run()
Tue Jan  5 19:51:13 franz.local ppython[1882] <Error>: kCGErrorIllegalArgument: _CGSFindSharedWindow: WID 277
Tue Jan  5 19:51:13 franz.local ppython[1882] <Error>: kCGErrorIllegalArgument: CGSRemoveSurface: Invalid window 0x115


Despite the errors the window opens and can be closed. It seems that DYLD_LIBRARY_PATH is not picked up from ~/.MacOSX/environment.plist - I assume that's the intention behind the environment.plist

Hope that helps, let me know if I can be of any more help. Thanks for the help, I'll dig deeper in the next few days and see how the current pre-release versions behave.
kaweh
 
Posts: 173
Joined: Thu Mar 30, 2006 7:15 am
Location: Vienna, Austria

Postby kaweh » Tue Jan 05, 2010 1:59 pm

drwr wrote:Shouldn't it be Python 2.6 instead of Python 2.5? Is ppython still part of the build process?


Snow Leopard Python 2.6 is 64-bit and doesn't work together with the these versions:

Code: Select all
$ python
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import direct.directbase.DirectStart
DirectStart: Starting the game.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Developer/Panda3D/lib/direct/directbase/DirectStart.py", line 3, in <module>
    from direct.showbase import ShowBase
  File "/Developer/Panda3D/lib/direct/showbase/ShowBase.py", line 10, in <module>
    from pandac.PandaModules import *
  File "/Developer/Panda3D/lib/pandac/PandaModules.py", line 2, in <module>
    from libpandaexpressModules import *
  File "/Developer/Panda3D/lib/pandac/libpandaexpressModules.py", line 1, in <module>
    from extension_native_helpers import *
  File "/Developer/Panda3D/lib/pandac/extension_native_helpers.py", line 81, in <module>
    Dtool_PreloadDLL("libpandaexpress")
  File "/Developer/Panda3D/lib/pandac/extension_native_helpers.py", line 79, in Dtool_PreloadDLL
    imp.load_dynamic(module, pathname)
ImportError: /Developer/Panda3D/lib/libpandaexpress.dylib: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)
>>>
kaweh
 
Posts: 173
Joined: Thu Mar 30, 2006 7:15 am
Location: Vienna, Austria

Postby kaweh » Tue Jan 05, 2010 2:01 pm

PS: It's possible to set python to 32-bit but that's not default - from "man python":

Code: Select all
Versions 2.6 and 3.0 support 64-bit execution (which is on by default).
     Version 2.5 only supports 32-bit execution.

     Like the version of Python, the python command can select between 32 and
     64-bit execution (when both are available).  Use:

           % defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

     to make 32-bit execution the user default (using
     `/Library/Preferences/com.apple.versioner.python' will set the system-
     wide default).  The environment variable VERSIONER_PYTHON_PREFER_32_BIT
     can also be used (has precedence over the preference file):

           % export VERSIONER_PYTHON_PREFER_32_BIT=yes # Bourne-like shells
                or
           % setenv VERSIONER_PYTHON_PREFER_32_BIT yes # C-like shells

     Again, the preference setting and environmental variable applies to both
     python and pythonw.
kaweh
 
Posts: 173
Joined: Thu Mar 30, 2006 7:15 am
Location: Vienna, Austria

Postby drwr » Tue Jan 05, 2010 2:14 pm

Ah, right. In Snow Leopard, you have to run python 2.6 in 32-bit mode, because Panda is (at the moment) compiled only in 32-bit mode.

You can do this on a one-time basis with "arch -i386 python", or you can tell the system to launch Python that way by default with "defaults write com.apple.versioner.python Prefer-32-Bit -bool yes".

David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby rdb » Tue Jan 05, 2010 2:14 pm

drwr wrote:Shouldn't it be Python 2.6 instead of Python 2.5? Is ppython still part of the build process?

Nope, the Mac build is still compiled against Leopard's default copy of Python, 2.5. We might ship our own version of Python later, but this will become easier when we switch to using a Panda3D framework (when we can ditch the whole path mess).
"ppython" still exists, it is a symlink to /usr/bin/python2.5, a handy shortcut to get the right version of Python right away.


kaweh: can you post the contents of environment.plist? There's something that really confuses me here. It apparently *does* locate the Python modules, these are in PYTHONPATH, also set by environment.plist. But it ignores DYLD_LIBRARY_PATH?
Is there perhaps anything (in your .bash_profile or so) that overrides the DYLD_LIBRARY_PATH setting from the environment.plist? When you open a terminal and echo $PYTHONPATH, does that work correctly?

In this case, I can probably workaround the issue by using install_name_tool to write absolute library links. We can fix it for real when we use a Panda3D framework.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby drwr » Tue Jan 05, 2010 2:15 pm

Note that Snow Leopard provides python 2.6 by default.

David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby rdb » Tue Jan 05, 2010 2:17 pm

Yeah, but it also provides Python 2.5, which is why I still compiled it against Python 2.5. I'm fine with upgrading to 2.6, if you want, but that would mean we would need to ship our own copy of Python for the Leopard users.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby drwr » Tue Jan 05, 2010 2:34 pm

Perhaps we should make ppython into a script that sets the ARCHPREFERENCE environment variable before launching python2.5, so that it will prefer 32-bit.

Edit: actually, it looks like python2.5 doesn't include 64-bit binaries anyway, so that shouldn't be an issue. Hmm.

David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby b1g4l » Tue Jan 05, 2010 2:38 pm

This is awesome and much appreciated. Thanks for your efforts.

Alex
b1g4l
 
Posts: 73
Joined: Tue Aug 12, 2008 8:24 pm

Postby rdb » Wed Jan 06, 2010 5:24 am

Ah! I tried googling for the issue and lots of stuff came up. It appears that some security update in OSX made it impossible to set DYLD_LIBRARY_PATH in environment.plist.

I'm going to use install_name_tool and ditch the DYLD_LIBRARY_PATH setting.

kaweh, could you check if this problem is also for the PATH variable? e.g. can you run "pview" correctly?

After that, can you then try the new daily build?
Last edited by rdb on Thu Jan 07, 2010 10:51 am, edited 1 time in total.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

latest windows builds broken?!

Postby sunday_coder » Thu Jan 07, 2010 9:42 am

i think the latest windows installers are broken, they are just 3 mb filesize...

but few days ago everything was fine ;D

edit: my fault, just hit the runtime by accident,
just ignore THIS post ^^ btw, great new feature the buildbot! Maybe it should be linked to the main download page?!

greetingz
sunday_coder
 
Posts: 67
Joined: Tue Apr 21, 2009 4:13 pm

Postby rdb » Thu Jan 07, 2010 10:50 am

Yeah, I'll do that soon.
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby zuck » Thu Jan 07, 2010 11:36 am

Have you already planned to release Linux-32bit builds too? :)
Emanuele Bertoldi
zuck
 
Posts: 115
Joined: Wed Dec 10, 2008 12:37 pm
Location: Udine, ITA

Postby kaweh » Sat Jan 09, 2010 12:27 pm

rdb wrote:Ah! I tried googling for the issue and lots of stuff came up. It appears that some security update in OSX made it impossible to set DYLD_LIBRARY_PATH in environment.plist.

I'm going to use install_name_tool and ditch the DYLD_LIBRARY_PATH setting.


Did you already made a change regarding this issue?

I am testing Panda3D-2010.01.08-11.dmg and behaviour is the same. I did not de-install the previous version though, but just installed the new one.

My environment.plist looks like this now:

Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>DYLD_LIBRARY_PATH</key>
   <string>/Developer/Panda3D/lib</string>
   <key>MAYA_PLUG_IN_PATH</key>
   <string>/Developer/Panda3D/plugins</string>
   <key>MAYA_SCRIPT_PATH</key>
   <string>/Developer/Panda3D/plugins</string>
   <key>PATH</key>
   <string>/Developer/Tools/Panda3D</string>
   <key>PYTHONPATH</key>
   <string>/Developer/Panda3D/lib</string>
</dict>
</plist>


rdb wrote:After that, can you then try the new daily build?


I assume the change would be visible with the mentioned build, or am I missing something?

I still need to use this line in my .bash_profile to make the above installation work:

Code: Select all
export DYLD_LIBRARY_PATH=/Developer/Panda3D/lib:$DYLD_LIBRARY_PATH


rdb wrote:kaweh, could you check if this problem is also for the PATH variable? e.g. can you run "pview" correctly?


No problem with the PATH variable. pview is started. Though I need the above change to DYLD_LIBRARY_PATH to make pview also work correctly, otherwise pview can't pickup the correct libraries.
kaweh
 
Posts: 173
Joined: Thu Mar 30, 2006 7:15 am
Location: Vienna, Austria

Postby rdb » Sat Jan 09, 2010 1:27 pm

Hm. Can you post the output of:
Code: Select all
otool -L /Developer/Panda3D/lib/libpandaexpress.dylib
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby wraithix » Sat Jan 09, 2010 7:49 pm

I'm having trouble importing the PhysX library, here's the exception trace:

Code: Select all
from panda3d.physx import *
  File "C:\Panda3D-1.7.0\panda3d.py", line 145, in __getattr__
    mod = self.__manager__.libimport(self.__library__)
  File "C:\Panda3D-1.7.0\panda3d.py", line 126, in libimport
    return cls.imp.load_dynamic(name, target)
ImportError: DLL load failed: The specified module could not be found.


Am I doing something stupid? Also, has anything else been changed from enn0x's implementation? From what I can tell, Classes are now prefixed with Physx instead of just Phys, and PhysEngine is now called PhysxManager.

Update:
import panda3d.physx seems to work, but an idea of how I need to change my code to use it would be very much appreciated.
wraithix
 
Posts: 27
Joined: Wed Dec 23, 2009 1:57 am

Postby rdb » Sun Jan 10, 2010 5:44 am

Hm, do you see a libpandaphysx.dll file in Panda's bin dir? Can you temporarily rename it to libpandaphysx.pyd, open a terminal, cd to the "bin" directory, launch python and try "import libpandaphysx" ?
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby wraithix » Sun Jan 10, 2010 6:17 am

It imports correctly when I do that:

Code: Select all
>>> from libpandaphysx import *
>>> PhysxManager
<type 'libpandaphysx.PhysxManager'>


It did throw up an error about missing NxCharacter.dll initially, but after copying that into the bin my code still gives the same error. I tried using just import panda3d.physx and then creating the manager with libpandaphysx.PhysxManager, but that didn't work either.
wraithix
 
Posts: 27
Joined: Wed Dec 23, 2009 1:57 am

Postby rdb » Sun Jan 10, 2010 6:28 am

Hm. In C:\Panda3D-1.7.0\panda3d.py, line 126, you should see this:
Code: Select all
return cls.imp.load_dynamic(name, target)

Can you print "name" and "target" right before that line?
I rarely respond to PMs
rdb
 
Posts: 8575
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby wraithix » Sun Jan 10, 2010 6:47 am

Execution never reached line 126, importing succeeded. I stuck a print statement in the first import try block and it succeeded. The cls and name values were panda3d.panda3d_import_manager and libpandaphysx respectively. The only thing that might be worth noting is that it imported it twice, and the exception only occured after the second import:

Code: Select all
Before panda3d.panda3d_import_manager libpandaphysx
Imported panda3d.panda3d_import_manager libpandaphysx
Before panda3d.panda3d_import_manager libpandaphysx
Imported panda3d.panda3d_import_manager libpandaphysx
Traceback (most recent call last):
  File "C:\Game.py", line 17, in <module>
    from src import GameManager
  File "C:\src\GameManager.py", line 19, in <module>
    import CollisionManager, InterfaceManager, ParticleManager, PhysicsManager
  File "C:\src\CollisionManager.py", line 7, in <module>
    from panda3d.physx import *
  File "C:\Panda3D-1.7.0\panda3d.py", line 148, in __getattr__
    mod = self.__manager__.libimport(self.__library__)
  File "C:\Panda3D-1.7.0\panda3d.py", line 108, in libimport
    return __import__(name)
ImportError: DLL load failed: The specified procedure could not be found.
wraithix
 
Posts: 27
Joined: Wed Dec 23, 2009 1:57 am

Next

Return to Panda Features in Development

Who is online

Users browsing this forum: No registered users and 0 guests