diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py
index ba48ee95d3..0d3cd814e4 100755
--- a/makepanda/makepanda.py
+++ b/makepanda/makepanda.py
@@ -4945,26 +4945,37 @@ def MakeInstallerOSX():
if not libdep.startswith("/"):
oscmd("install_name_tool -change %s /Developer/Panda3D/lib/%s %s" % (libdep, os.path.basename(libdep), libname), True)
- # Scripts to configure this version of Panda3D (in environment.plist)
+ # Temporary script that should clean up the poison that the early 1.7.0 builds injected into environment.plist
oscmd("mkdir -p dstroot/scripts/base/")
postinstall = open("dstroot/scripts/base/postinstall", "w")
print >>postinstall, "#!/usr/bin/python"
- print >>postinstall, "import os, plistlib"
+ print >>postinstall, "import os, sys, plistlib"
print >>postinstall, "home = os.environ['HOME']"
print >>postinstall, "if not os.path.isdir(os.path.join(home, '.MacOSX')):"
- print >>postinstall, " os.mkdir(os.path.join(home, '.MacOSX'))"
+ print >>postinstall, " sys.exit()"
print >>postinstall, "plist = dict()"
print >>postinstall, "envfile = os.path.join(home, '.MacOSX', 'environment.plist')"
print >>postinstall, "if os.path.exists(envfile):"
- print >>postinstall, " plist = plistlib.readPlist(envfile)"
+ print >>postinstall, " try:"
+ print >>postinstall, " plist = plistlib.readPlist(envfile)"
+ print >>postinstall, " except: sys.exit(0)"
+ print >>postinstall, "else:"
+ print >>postinstall, " sys.exit(0)"
print >>postinstall, "paths = {'PATH' : '/Developer/Tools/Panda3D', 'DYLD_LIBRARY_PATH' : '/Developer/Panda3D/lib', 'PYTHONPATH' : '/Developer/Panda3D/lib',"
print >>postinstall, " 'MAYA_SCRIPT_PATH' : '/Developer/Panda3D/plugins', 'MAYA_PLUG_IN_PATH' : '/Developer/Panda3D/plugins'}"
print >>postinstall, "for env, path in paths.items():"
- print >>postinstall, " if env not in plist:"
- print >>postinstall, " plist[env] = path"
- print >>postinstall, " elif path not in plist[env]:"
- print >>postinstall, " plist[env] = '%s:%s' % (path, plist[env])"
- print >>postinstall, "plistlib.writePlist(plist, envfile)"
+ print >>postinstall, " if env in plist:"
+ print >>postinstall, " paths = plist[env].split(':')"
+ print >>postinstall, " if '' in paths: paths.remove('')"
+ print >>postinstall, " if path in paths: paths.remove(path)"
+ print >>postinstall, " if len(paths) == 0:"
+ print >>postinstall, " del plist[env]"
+ print >>postinstall, " else:"
+ print >>postinstall, " plist[env] = ':'.join(paths)"
+ print >>postinstall, "if len(plist) == 0:"
+ print >>postinstall, " os.remove(envfile)"
+ print >>postinstall, "else:"
+ print >>postinstall, " plistlib.writePlist(plist, envfile)"
postinstall.close()
postflight = open("dstroot/scripts/base/postflight", "w")
print >>postflight, "#!/usr/bin/env bash\n"
@@ -4976,7 +4987,8 @@ def MakeInstallerOSX():
oscmd("mkdir -p dstroot/tools/Developer/Tools/Panda3D")
oscmd("mkdir -p dstroot/tools/Developer/Panda3D")
- oscmd("ln -s /Developer/Tools/Panda3D dstroot/tools/Developer/Panda3D/bin")
+ oscmd("ln -s /Developer/Tools/Panda3D")
+ WriteFile("dstroot/tools/etc/paths.d/Panda3D", "/Developer/Tools/Panda3D")
for base in os.listdir(GetOutputDir()+"/bin"):
binname = "dstroot/tools/Developer/Tools/Panda3D/" + base
# OSX needs the -R argument to copy symbolic links correctly, it doesn't have -d. How weird.
@@ -5109,7 +5121,7 @@ function have16installed() {
print >>dist, ' '
print >>dist, ' '
print >>dist, ' file:./Contents/Packages/uninstall16.pkg'
- print >>dist, ' file:./Contents/Packages/base.pkg' % (GetDirectorySize("dstroot/base") / 1024)
+ print >>dist, ' file:./Contents/Packages/base.pkg' % (GetDirectorySize("dstroot/base") / 1024)
print >>dist, ' file:./Contents/Packages/tools.pkg' % (GetDirectorySize("dstroot/tools") / 1024)
if PkgSkip("PYTHON")==0:
print >>dist, ' file:./Contents/Packages/pythoncode.pkg' % (GetDirectorySize("dstroot/pythoncode") / 1024)