panda white window of death

I have a problem compiling panda3d on OSX, 10.4.11, PPC
I browsed several reciepes how to do it and this is how i try to brew it…

First i created a folder where the source tree should live in:

cd
mkdir src
cd src

Then i checked out the current cvs tree:

cvs -z3 -d:pserver:anonymous@panda3d.cvs.sourceforge.net:/cvsroot/panda3d co panda3d

I also checked, install or upgrade these packages:

sudo port info jpeg
# jpeg 6b, Revision 2, graphics/jpeg (Variants: universal)
sudo port info libpng
# libpng 1.2.23, graphics/libpng (Variants: universal, darwin_8)
sudo port info tiff
# tiff 3.8.2, Revision 1, graphics/tiff (Variants: universal, macosx, darwin_8)
sudo port info freetype
# freetype 2.3.5, print/freetype (Variants: universal, bytecode, doc)
sudo port info libtar
# libtar 1.2.11, Revision 1, devel/libtar (Variants: universal)
sudo port info ode
# ode 0.8, devel/ode (Variants: universal)

Then i create the installation directory

sudo mkdir -pv /usr/local/panda
sudo chmod 777 /usr/local/panda

I also prepare the following environment variables, i have to say that setting DYLD_LIBRARY_PATH always makes me feel a little clumsy, is there a way how i could avoid that? Could at least some of those settings go into Config.pp?

export PATH=/opt/local/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/local/panda/bin:$PATH
export PYTHONPATH=/usr/local/panda/lib:/usr/local/panda/lib/direct
export LOCAL_PPREMAKE_CONFIG=${HOME}/src/panda3d/Config.pp
export PPREMAKE_CONFIG=${HOME}/src/panda3d/Config.pp
export DTOOL=${HOME}/src/panda3d/dtool
export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}/usr/local/panda/lib
export CPLUS_INCLUDE_PATH=/opt/local/include:/opt/local/include/ffmpeg:/opt/local/include/opencv

I also fix some problems with the linkage of ffmpeg in advance, sed is my friend
i enclose the #include statements with extern “C” {}

find ~/src/panda3d  -regex '.*[c|cxx|h]' -type f -exec sed -i -e 's/#include \"avio.h\"/extern \"C\" {\
#include \"avio.h\"\
}/g' {} \;
find ~/src/panda3d -regex '.*[c|cxx|h]' -type f -exec sed -i -e 's/#include \"avformat.h\"/extern \"C\" {\
#include \"avformat.h\"\
}/g' {} \;
find ~/src/panda3d -regex '.*[c|cxx|h]' -type f -exec sed -i -e 's/#include \"avcodec.h\"/extern \"C\" {\
#include \"avcodec.h\"\
}/g' {} \;

Then i get serious and put in my Config.pp:

cd panda3d
cp ~/src/Config.pp .

The files contents looks like this:

Reading that you might guess that i don’t feel confident enough to try out
fmod ex integration until now. That’s right since i want to get rid of
another problem first. I am going to explain that very soon. The
compilation itself runs very smooth:

cd ppremake
aclocal
autoheader
automake --foreign -a
autoconf
./configure
make install

cd ../dtool
make clean
make uninstall
ppremake
find ~/src/panda3d/dtool -name Makefile -exec sed -i -e 's/dynamic_lookup/dynamic_lookup -headerpad_max_install_names/g' {} \;
make install

A note here - I get this output from ppremake:

After building and installing dtools i compile panda which takes more that 1,5 hours:

cd ../panda
make clean
make uninstall
ppremake
find ~/src/panda3d/panda -name Makefile -exec sed -i -e 's/dynamic_lookup/dynamic_lookup -headerpad_max_install_names/g' {} \;
make install

Here I want to note that I ‘hardcode’ -headerpad_max_install_names into the Makefiles everywhere where I suppose a .dylib ot .so file to be baked. That should help me to avoid problems later on when I want to move panda to be distributed on a dvd (or usb stick). After the build step for panda itself i also install the “direct” part of panda, again with relocateable libs:

cd ../direct
make clean
make uninstall
ppremake
find ~/src/panda3d/direct -name Makefile -exec sed -i -e 's/dynamic_lookup/dynamic_lookup -headerpad_max_install_names/g' {} \;
make install

When that steps are all taken i usually open up another terminal, just to get rid of all the environment variables i had to set before. Especially
DYLD_LIBRARY_PATH is something I would not want to have set just for fun, I allways eye on it as it would mess up my system. I use a trick and link all the libraries into /usr/local/lib so they woule be found without the use of DYLD_LIBRARY_PATH:

sudo ln -s /usr/local/panda/lib/* /usr/local/lib

Then i want to run the last steps of the installation process. I run genPyCode and put Config.prc into etc:

/usr/local/panda/bin/genPyCode
cp ~/src/Config.prc /usr/local/panda/etc/

My Config.prc looks like this:

So far so good. Now comes the twist: My panda does not work at all! If i run pandatest.py i just get a WHITE WINDOW, nothing else. pandarest.py reads (its from the tutorials):

This process hangs, I can not stop it with Ctrl-C, only with Ctrl-Z
followed by

kill -9 %1

The output of the task looks like this:

I have been trying this for a week now and I really have no clue what I could have done wrong. But: The window stays WHITE. Sorry, no panda for me!

I also found a thread here that dealt with the same problem, but I could not really find out if it was solved…

My goal is to make “universal” panda3d binaries that can be relocated on a DVD, or a USB Stick. I hope that panda is not broken and that i can also get sound to work. Please help me, I would definitively be willing to contribute universal binaries as soon as they work!!!

Help! How can I avoid the WHITE WINDOW OF DEATH?

Gogo.

I am still stuck.
I compiled panda > 10 times now, i always get a white window and the process freezes; Is there anyone who can help me? Has anyone had the same problems before and solved them? Please help me!

probably mac users need to help each other but they are far and feiw between.

i hope there are enough mac users here to help me solve that issue :-/

I tried compiling the whole thing again, this time i used the recipe from

edalytical.com/articles/2007/08/ … n-mac-os-x

and again: i only get a white window, i can not get panda to work; Has any other osx user had the same problems? I am getting a bit desperate here. My very first compilation is functional, but i need to apply the linker flag -headerpad_max_install_names to make the libraries relocatable.

Is there a way to make libraries relocatable without needing to re-link them? Is it not possible to have universal binaries for panda? Why do I only get a white window? What information should i provide to the forum so anyone can help me?

The white window sounds like a serious problem with your graphics drivers. Do other 3-D applications work OK on your machine? Can you go to toontown.com or piratesonline.com (both applications written using Panda) and play them successfully?

If those commercial games also fail with a white window, there must be something wrong with your graphics drivers somehow. If they succeed, then there’s something funny with the way you’re building Panda.

Try building just a bare-bones minimum Panda. It should build out of the box, especially if you don’t care about linking with lots of third-party libraries like fmod, and you don’t try to do fancy stuff with relocatable libraries.

David

Hello, David!
I can totally play toontown!
No problems, no white screen.
I was trying to re-compile panda on another machine, i am still getting the same result: Only a white screen, i have to kill the app with kill -9; I am very desperate by now since i tried to build panda with no extra libs at all, just with “-headerpad_max_install_names” as linker parameter.

Now i will try without that parameter.

Hopefully it will work.
Thank you for giving me hints, David!

:slight_smile: finally it started to work again!
the problems vanished as soon as i reformatted my drive, re-installed the complete system (tiger) and then rebuilt panda, without threading support, without ssl.

now i want to try out - step by step - which features are useable on OSX

:slight_smile:

The problem with the header max whatever only exists if you try to use py2app. You can easily build a application the way i did it without the compile parameter. if you build a package manually (platypus and a starting script), you may shorten the lib-path, which makes the header_max… obsolete. I have tried around quite a bit, but the structure i use does work (see my other posts).

Iirc you can build panda3d platform indepentant, however i currently dont remember how (and i have never tried it). I have successfully compiled panda3d under intel tiger quite a lot of times, the big problems arise under leopard. I also never included threading support, so i cant tell if it’s possible. However i do know compiling with ssl is possible.

These are my experiences, i hope those informations help a bit.

Oh 2 more hints:

  • if you recompile, remove the /usr/local/panda (or move it away), i rarely succeeded compiling panda3d successfully if it was there (i’m quite sure no linking against /usr/local/panda/… was active)

  • Check if panda3d’s pview works. If it does not, there is no sense building direct (i hope i dont mix up panda & direct).