Forráskód Böngészése

hopefully put the lib64 issues to bed for now

rdb 13 éve
szülő
commit
e013c6f073
1 módosított fájl, 35 hozzáadás és 17 törlés
  1. 35 17
      makepanda/installpanda.py

+ 35 - 17
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)