Cannot find the python SDK

That’s the message I get when I do a:

makepanda/makepanda.py --everything

Python exists on my system. I can run it from the command line and get it’s >>> prompt. Nothing I can see in the docs and I’m new enough to Linux to be stumped. I’m running Mandrake 10.0 Community.

This means that in order to develop C++ libraries for python, you need some C++ header files that come with python. These header files are called the “python SDK”.

Linux distributions often include two packages like:

python2.2
python2.2-dev

The second package, the ‘dev’ package, is the one that contains the SDK (the header files). Now, I don’t know what mandrake calls this package. But you need to find it.

More difficult is the fact that mandrake doesn’t include several of the tools you need to build panda. For example, mandrake doesn’t include ‘bison’ and ‘flex’, tools which are normally standard under linux but for some reason are missing from mandrake.

Let’s say, some time in the future, after I’ve got Panda working, I decide to try to build a Mandrake rpm. What am I letting myself in for? Tough? Easy?

On redhat, building an rpm is trivial. All you have to do is type

rpm -tb panda3d-1.0.4.tar.gz

That’s all. It does the rest. The RPM ends up in /usr/src/redhat/RPMS

I tried the same thing on mandrake, and it gave some error message that made it clear that the rpm-build tools are not installed. I spent a few hours trying to figure out how to get the rpm-build tools, but I failed.

So really, it’s a question of knowing where to get the right software.

Update: when you figure it out, tell me. I’d love to distribute a mandrake RPM.

It appears I do have python on my system.

I fired up python from the command line and got it to talk to me. Going to the Mandrake RPM gui tool that lists installed RPMs I pulled up the following results:

python-2.3.3-2mdk
python-base-2.3.3-2mdk
python-numeric-23.1-2mdk

Looking at the RPMs that aren’t installed that have “python” in their name, there’s:

libpython2.3-devel-2.3.3-2mdk

The description on this one is:The libraries and header files needed for Python development

Nothing has “SDK” as part of the name though. I hate to blindly install stuff, hoping to hit the right combination.

Also, I seem to be on Python 2.3 and you’re telling me to look for Python 2.2. Is there a problem with using 2.3? I downloaded the latest source.

libpython2.3-devel-2.3.3-2mdk

That’s exactly what you need.

Now, after you install that, it will probably fail again at a different place, saying something like “zlib.h not found” or maybe “png.h not found” or some other missing header files. Look for the relevant “-devel-” packages. That’s what’s missing.

You were right about it pooping out someplace else :frowning:

I’m running Mandrake 10.0.

Here’s what I get that seems related to the problem:

This is the relevant part of the error message:

dtool/src/prc/prcKeyRegistry.h:31:25: openssl/evp.h: No such file or directory

You need to get all the missing header files. In this case, it appears to be openssl-related.

  • Josh

OK, got past that one, on to the next one…is there an emoticon for “sigh”?

I did a google of libpystub.so and came up dry after I perused all the RPMs installed and not installed and didn’t find libpystub.so in any of them with “python” in the RPM name. Then I had the bright idea of searching my own system and, as I’m sure you know, found it in panda3d-1.0.4/built/lib/libpystub.so

In the built/lib directory, libpystub.so and libdtoolconfig.so have ownerships of root/root while the rest of the files are owned by my user-id. Could this have come from compiling initially under my user-id and then compiling a second time under root?

I tried compiling under both root and my user-id. No joy.

Suggestions?

OK, I’ve seen that one before.

Here’s the deal: makepanda builds the library ‘libpystub.so’, then makepanda builds the executable ‘interrogate’ which uses ‘libpystub.so’, then makepanda tries to run interrogate. In order for it to be able to run ‘interrogate’, the directory containing ‘libpystub.so’ needs to be in your shared-library path. Now, supposedly, makepanda contains the necessary code to put the built/lib directory into your LD_LIBRARY_PATH. But apparently, that code isn’t working. Somebody reported this problem before, but then the problem spontaneously went away, so we couldn’t diagnose it. Could you analyze?

Tell me how to help and assume I’m fairly light in my exposure to Linux.

just did a “echo $LD_LIBRARY_PATH” as both user and root and it came back blank for both.

I’m not sure this is going to be easy.

Makepanda doesn’t set LD_LIBRARY_PATH permanently. It only sets it for its child processes. Either it’s not really setting it, or it’s setting it and it’s having no effect.

I suppose I’d delete ‘interrogate’ and replace it with a script that prints out LD_LIBRARY_PATH. That will tell you whether or not makepanda is really setting LD_LIBRARY_PATH. The script would look like this:

#!/bin/sh
echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH
exit 1

The ‘exit 1’ is an error code. It will prevent makepanda from going on and on and on.

Lemme make sure I understand.

Delete or rename /built/bin/interrogate with a bash shell script which’ll be named “interrogate” as well?

And the script contains the three lines in your post?

And then I run a makepanda --everything with no other changes?

Exactly right. You can always get the real ‘interrogate’ back by deleting it and letting ‘makepanda’ rebuild it. This is just a test to see what’s going on.

Sorry it’s taking me so long to respond. I’m visiting relatives. Starting tomorrow, I’m not going to be available hardly at all, so you may need to seek help from other people on this forum. There are some smart ones here.

I appreciate any assistance, Josh.

OK, here’s the results:


erTo.h weakPointerToBase.h weakPointerToVoid.h weakReferenceList.h windowsRegistry.h zStream.h zStreamBuf.h express_composite1.cxx express_composite2.cxx
LD_LIBRARY_PATH=

Looks like LD_LIBRARY_PATH is blank.

Since Josh looks to be unavailable for a bit, does anyone have some thoughts on this?

Hmm. Can you show me (a) the value of LD_LIBRARY_PATH before you start makepanda, and (b) the contents of the file /etc/ld.so.conf ? That is, I’d like to see the output of the following two commands:

env | grep LD_LIBRARY_PATH
cat /etc/ld.so.conf

Also, exactly what parameters are you passing to makepanda?

David

to the "env | grep LD_LIBRARY_PATH " I got nothing.

I did an “env” just to make sure I hadn’t mispelled the search string and nothing even close.

to the “cat /etc/ld.so.conf”


include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/lib/qt3/lib
/usr/local/lib
/usr/local/lib/libmcrypt
/home/allen/Downloads/Panda/panda3d-1.0.4/built/lib

I start makepanda with "makepanda/makepand.py --everything

I’ve got a “built” directory so it seems to me that the compile worked at least once but i couldn’t get panda to start in the manner that the docs suggested it should so I figured something was less then right.

Ah ha! I think I have it.

Try running, as root, the command “ldconfig”. Then try to run makepanda again as a normal user.

David

results of running ldconfig as root:

did a “makepanda/makepanda.py --everything” as user and got the following:


Starting compile in "panda/src/chan" (15 min 15 sec):

g++ -ftemplate-depth-30 -c -o built/tmp/chan_composite1.o -I"/usr/include/python2.3" -Ithirdparty/linux-libs-a/nspr/include -Ibuilt/tmp -Ipanda/src/chan -Ibuilt/include -O2 -DBUILDING_PANDA panda/src/chan/chan_composite1.cxx
built/include/pandaNode.h: In member function `virtual TypeHandle PandaNode::force_init_type()':
built/include/pandaNode.h:413: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:https://qa.mandrakesoft.com/> for instructions.

The above seems like the relevent stuff. If more is needed, let me know and I’ll run the compile again and post more.

Funny thing is, after my very first compile I was getting what seemed to be some Panda-related activity. The mouse pointer would turn into a cross-hair pointer while within the console window. If I clicked within the window, while the mouse pointer was a crosshair, that would terminate whatever it was that was running.

Allen

Hmm, a compiler core dump, not such a good thing. What a bucket of worms this is! What version of the compiler are you running?


gcc --version

Did you try making clean by blowing away the built directory first?

The crosshairs thing certainly isn’t Panda behavior. I’ve never heard of that before. Does it happen when you compile other programs?

David