Edgy E. 64 bit. Build

Doing a build on amd64-x2 for Edgy E.
getting this error.

Any help would be great.

douglas@frog-desktop:~/Desktop/panda3d-1.3.2$ makepanda/makepanda.py --everything
Checking for MAYA6
Checking for MAYA65
Checking for MAYA7


Makepanda Initial Status Report
Makepanda: Compiler: LINUX
Makepanda: Optimize: 3
Makepanda: Keep Pkg: PYTHON ZLIB PNG JPEG TIFF VRPN FMODEX NVIDIACG NSPR OPENSSL FREETYPE FFTW BISON FLEX FFMPEG PANDATOOL PANDAAPP
Makepanda: Omit Pkg: MILES MAYA6 MAYA65 MAYA7 MAX6 MAX7 MAX8 DX8 DX9
Makepanda: Verbose vs. Quiet Level: 1
Makepanda: Don’t generate API reference manual
Makepanda: Version ID: 1.3.0
Makepanda: MAYA6 not yet supported under linux
Makepanda: I have automatically added this command-line option: --no-maya6
Makepanda: MAYA65 not yet supported under linux
Makepanda: I have automatically added this command-line option: --no-maya65
Makepanda: MAYA7 not yet supported under linux
Makepanda: I have automatically added this command-line option: --no-maya7
Makepanda: MAX6 not yet supported under linux
Makepanda: I have automatically added this command-line option: --no-max6
Makepanda: MAX7 not yet supported under linux
Makepanda: I have automatically added this command-line option: --no-max7
Makepanda: MAX8 not yet supported under linux
Makepanda: I have automatically added this command-line option: --no-max8
Makepanda: makepanda currently does not support miles sound system
Makepanda: I have automatically added this command-line option: --no-miles

Generating dependencies…
g++ -ftemplate-depth-30 -fPIC -c -o built/tmp/dtoolbase_composite1.o -I"/usr/include/python2.5" -Ithirdparty/linux-libs-a/nspr/include -Ibuilt/tmp -Idtool/src/dtoolbase -Ibuilt/include -O2 -DBUILDING_DTOOL dtool/src/dtoolbase/dtoolbase_composite1.cxx
dtool/src/dtoolbase/atomicAdjustNsprImpl.I: In static member function ‘static void* AtomicAdjustNsprImpl::set_ptr(void*&, void*)’:
dtool/src/dtoolbase/atomicAdjustNsprImpl.I:75: error: cast from ‘void*’ to ‘PRInt32’ loses precision
Storing dependency cache.
Elapsed Time: 6 sec

missing library?
double-post?

Yes it is, I was getting no response in the other forum so I thought maybe this one was a better place to try. Any ideas anyone on how to make this work? What is the library that is missing? How do I go about finding out?
Thanks DEK

I have exactly the same problem.

Before trying to compile in a debian pure amd64 machine, I downloaded panda3d-1.3.2 and compiled in my debian (sid i386) laptop using makepanda/makepanda.py --everything, it compiled with no problems.

When I did the same on the amd64 machine I got the same errors that you get, I think this is a problem with definition of integers in a 64 bits machine.

Because panda uses nspr to manage these definitions, and nspr came compiled for 32 bits in the thirdparty directory, I installed nspr and nspr-dev using apt-get, and tried to compile panda with makepanda/makepanda.py --nothing, and got the same errors.

I also tried to compile panda using ppremake, because that is apparently what people use to compile panda at disney, but I ended with similar errors.

Does anybody know what definitions have to be changed in makepanda.py to compile panda3d in a linux 64 bits machine?

Regards,

Francisco

To my knowledge, panda has not been ported to 64-bit.

Any plans to port it? Or is it useless to newer computers and I should just give up on it?

Remember, the people developing panda are commercial game developers. Until there’s a commercial market for it, I suspect it will be on the back burner.

Well, my 20min take on the problem is:

rpmbuild -bc panda3d.spec

Fails on my AMD64 FC6 machine with error:

dtool/src/dtoolbase/atomicAdjustNsprImpl.I: In static member function ‘static void* AtomicAdjustNsprImpl::set_ptr(void*&, void*)’:
dtool/src/dtoolbase/atomicAdjustNsprImpl.I:75: error: cast from ‘void*’ to ‘PRInt32’ loses precision

Which tells me that, as you say, Panada hasn’t been updated for 64Bit. However I also know in a good deal of cases there is only a few simple changes required to convert open source code to 64bit . (like changing range limits and not treating pointers at 32Bit ints). This is a very much “If you are lucky” statement.

So I set about to find the first function

return (void *)PR_AtomicSet((PRInt32 *)&var, (PRInt32)new_value);

which appeared to need its parameter requirements away from being 32bit ints.

A grep of the source tree gave me :

dtool/src/dtoolbase/atomicAdjustNsprImpl.I: return PR_AtomicSet((PRInt32 *)&var, new_value);
dtool/src/dtoolbase/atomicAdjustNsprImpl.I: return (void *)PR_AtomicSet((PRInt32 *)&var, (PRInt32)new_value);
Binary file thirdparty/linux-libs-a/nspr/bin/libpandanspr4.so matches
Binary file thirdparty/linux-libs-a/nspr/lib/libpandanspr4.so matches

Which implies to my limited linux knowledge that libpandanspr4.so contains the function I need to change, but it is a binary buiit for 32bit (ie dll equiv? ) and the source code is not included in the zip file I downloaded.

Any one know anything about libpandanspr4.so or where it comes from?

Ok then, else where on the forum I found that it is a netscape package thingy but more importantly there is a --nothing option and now am looking at a bunch of specific panda issues relating to 64bit instead.

I will let you know if I get anywhere :smiley: