From e013c6f073db73127016c9c2af9c9364f30a62d0 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 11 Aug 2012 18:32:13 +0000 Subject: [PATCH] hopefully put the lib64 issues to bed for now --- makepanda/installpanda.py | 52 ++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/makepanda/installpanda.py b/makepanda/installpanda.py index ace7257b61..ae7905ffc1 100644 --- a/makepanda/installpanda.py +++ b/makepanda/installpanda.py @@ -94,8 +94,25 @@ def WriteKeysFile(fname, info): print >>fhandle fhandle.close() +def GetLibDir(): + # This one's a bit tricky. Some systems require us to install + # 64-bits libraries into /usr/lib64, some into /usr/lib. + # Debian forbids installing to lib64 nowadays, and the only distros + # I know of that use lib64 are all RPM-based. So, the 'solution' + # seems to be to use the rpm command to give us the libdir for now. + + handle = os.popen("rpm -E '%_lib'") + result = handle.read().strip() + handle.close() + if len(result) > 0: + assert result == "lib64" or result == "lib" + return result + else: + return "lib" + def InstallPanda(destdir="", prefix="/usr", outputdir="built"): if (not prefix.startswith("/")): prefix = "/" + prefix + libdir = prefix + "/" + GetLibDir() PPATH = get_python_lib(1) if os.path.islink(sys.executable): PEXEC = os.path.join(os.path.dirname(sys.executable), os.readlink(sys.executable)) @@ -109,7 +126,7 @@ def InstallPanda(destdir="", prefix="/usr", outputdir="built"): oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/mime/packages") oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/application-registry") oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/applications") - oscmd("mkdir -m 0755 -p "+destdir+prefix+"/lib/panda3d") + oscmd("mkdir -m 0755 -p "+destdir+libdir+"/panda3d") oscmd("mkdir -m 0755 -p "+destdir+PPATH) if (sys.platform.startswith("freebsd")): oscmd("mkdir -m 0755 -p "+destdir+prefix+"/etc") @@ -142,18 +159,18 @@ def InstallPanda(destdir="", prefix="/usr", outputdir="built"): oscmd("cp doc/LICENSE "+destdir+prefix+"/include/panda3d/LICENSE") oscmd("cp doc/ReleaseNotes "+destdir+prefix+"/share/panda3d/ReleaseNotes") oscmd("echo '"+prefix+"/share/panda3d' > "+destdir+PPATH+"/panda3d.pth") - oscmd("echo '"+prefix+"/lib/panda3d'>> "+destdir+PPATH+"/panda3d.pth") + oscmd("echo '"+libdir+"/panda3d'>> "+destdir+PPATH+"/panda3d.pth") if (sys.platform.startswith("freebsd")): - oscmd("echo '"+prefix+"/lib/panda3d'> "+destdir+"/usr/local/libdata/ldconfig/panda3d") + oscmd("echo '"+libdir+"/panda3d'> "+destdir+"/usr/local/libdata/ldconfig/panda3d") else: - oscmd("echo '"+prefix+"/lib/panda3d'> "+destdir+"/etc/ld.so.conf.d/panda3d.conf") + oscmd("echo '"+libdir+"/panda3d'> "+destdir+"/etc/ld.so.conf.d/panda3d.conf") oscmd("chmod +x "+destdir+"/etc/ld.so.conf.d/panda3d.conf") oscmd("ln -s "+PEXEC+" "+destdir+prefix+"/bin/ppython") oscmd("cp "+outputdir+"/bin/* "+destdir+prefix+"/bin/") for base in os.listdir(outputdir+"/lib"): if (not base.endswith(".a")): # We really need to specify -R in order not to follow symlinks on non-GNU - oscmd("cp -R -P "+outputdir+"/lib/"+base+" "+destdir+prefix+"/lib/panda3d/"+base) + oscmd("cp -R -P "+outputdir+"/lib/"+base+" "+destdir+libdir+"/panda3d/"+base) # rpmlint doesn't like it if we compile pyc. #for base in os.listdir(destdir+prefix+"/share/panda3d/direct"): # if ((base != "extensions") and (base != "extensions_native")): @@ -173,26 +190,27 @@ def InstallPanda(destdir="", prefix="/usr", outputdir="built"): def InstallRuntime(destdir="", prefix="/usr", outputdir="built"): if (not prefix.startswith("/")): prefix = "/" + prefix + libdir = prefix + "/" + GetLibDir() oscmd("mkdir -m 0755 -p "+destdir+prefix+"/bin") oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/mime-info") oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/mime/packages") oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/application-registry") oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/applications") if (os.path.exists(outputdir+"/plugins/nppanda3d.so")): - oscmd("mkdir -m 0755 -p "+destdir+prefix+"/lib") - oscmd("cp "+outputdir+"/plugins/nppanda3d.so "+destdir+prefix+"/lib/nppanda3d.so") + oscmd("mkdir -m 0755 -p "+destdir+libdir) + oscmd("cp "+outputdir+"/plugins/nppanda3d.so "+destdir+libdir+"/nppanda3d.so") if sys.platform.startswith("freebsd"): - oscmd("mkdir -m 0755 -p "+destdir+prefix+"/lib/browser_plugins/symlinks/gecko19") - oscmd("mkdir -m 0755 -p "+destdir+prefix+"/lib/libxul/plugins") - oscmd("ln -s "+prefix+"/lib/nppanda3d.so "+destdir+prefix+"/lib/browser_plugins/symlinks/gecko19/nppanda3d.so") - oscmd("ln -s "+prefix+"/lib/nppanda3d.so "+destdir+prefix+"/lib/libxul/plugins/nppanda3d.so") + oscmd("mkdir -m 0755 -p "+destdir+libdir+"/browser_plugins/symlinks/gecko19") + oscmd("mkdir -m 0755 -p "+destdir+libdir+"/libxul/plugins") + oscmd("ln -s "+libdir+"/nppanda3d.so "+destdir+libdir+"/browser_plugins/symlinks/gecko19/nppanda3d.so") + oscmd("ln -s "+libdir+"/nppanda3d.so "+destdir+libdir+"/libxul/plugins/nppanda3d.so") else: - oscmd("mkdir -m 0755 -p "+destdir+prefix+"/lib/mozilla/plugins") - oscmd("mkdir -m 0755 -p "+destdir+prefix+"/lib/mozilla-firefox/plugins") - oscmd("mkdir -m 0755 -p "+destdir+prefix+"/lib/xulrunner-addons/plugins") - oscmd("ln -s "+prefix+"/lib/nppanda3d.so "+destdir+prefix+"/lib/mozilla/plugins/nppanda3d.so") - oscmd("ln -s "+prefix+"/lib/nppanda3d.so "+destdir+prefix+"/lib/mozilla-firefox/plugins/nppanda3d.so") - oscmd("ln -s "+prefix+"/lib/nppanda3d.so "+destdir+prefix+"/lib/xulrunner-addons/plugins/nppanda3d.so") + oscmd("mkdir -m 0755 -p "+destdir+libdir+"/mozilla/plugins") + oscmd("mkdir -m 0755 -p "+destdir+libdir+"/mozilla-firefox/plugins") + oscmd("mkdir -m 0755 -p "+destdir+libdir+"/xulrunner-addons/plugins") + oscmd("ln -s "+libdir+"/nppanda3d.so "+destdir+libdir+"/mozilla/plugins/nppanda3d.so") + oscmd("ln -s "+libdir+"/nppanda3d.so "+destdir+libdir+"/mozilla-firefox/plugins/nppanda3d.so") + oscmd("ln -s "+libdir+"/nppanda3d.so "+destdir+libdir+"/xulrunner-addons/plugins/nppanda3d.so") WriteMimeFile(destdir+prefix+"/share/mime-info/panda3d-runtime.mime", MIME_INFO_PLUGIN) WriteKeysFile(destdir+prefix+"/share/mime-info/panda3d-runtime.keys", MIME_INFO_PLUGIN) WriteMimeXMLFile(destdir+prefix+"/share/mime/packages/panda3d-runtime.xml", MIME_INFO_PLUGIN)