Browse Source

Resolve symlinks for sys.executable, so that ppython symlink will always point to the right version on non-windows

rdb 16 years ago
parent
commit
d6c565860d
2 changed files with 4 additions and 3 deletions
  1. 2 1
      makepanda/installpanda.py
  2. 2 2
      makepanda/makepandacore.py

+ 2 - 1
makepanda/installpanda.py

@@ -102,6 +102,7 @@ def WriteKeysFile(fname, info):
 def InstallPanda(destdir="", prefix="/usr", outputdir="built"):
     if (not prefix.startswith("/")): prefix = "/" + prefix
     PPATH=get_python_lib(1)
+    PEXEC=os.path.join(os.path.dirname(sys.executable), os.readlink(sys.executable))
     oscmd("mkdir -p "+destdir+prefix+"/bin")
     oscmd("mkdir -p "+destdir+prefix+"/include")
     oscmd("mkdir -p "+destdir+prefix+"/share/panda3d")
@@ -138,7 +139,7 @@ def InstallPanda(destdir="", prefix="/usr", outputdir="built"):
     oscmd("echo '"+prefix+"/share/panda3d' >    "+destdir+PPATH+"/panda3d.pth")
     oscmd("echo '"+prefix+libdir+"/panda3d'>>   "+destdir+PPATH+"/panda3d.pth")
     oscmd("chmod +x "+destdir+"/etc/ld.so.conf.d/panda3d.conf")
-    oscmd("ln -s "+sys.executable+"             "+destdir+prefix+"/bin/ppython")
+    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")):

+ 2 - 2
makepanda/makepandacore.py

@@ -1362,9 +1362,9 @@ def SdkLocatePython(force_use_sys_executable = False):
         else:
             SDK["PYTHON"] = sysconfig.get_python_inc()
             SDK["PYTHONVERSION"] = "python" + sysconfig.get_python_version()
-            SDK["PYTHONEXEC"] = sys.executable
+            SDK["PYTHONEXEC"] = os.path.join(os.path.dirname(sys.executable), os.readlink(sys.executable))
     else:
-        SDK["PYTHONEXEC"] = sys.executable
+        SDK["PYTHONEXEC"] = os.path.join(os.path.dirname(sys.executable), os.readlink(sys.executable))
 
 def SdkLocateVisualStudio():
     if (sys.platform != "win32"): return