fix infinite loop for absolute pathnames
authorDiane Trout <diane@caltech.edu>
Tue, 12 Dec 2006 02:27:22 +0000 (02:27 +0000)
committerDiane Trout <diane@caltech.edu>
Tue, 12 Dec 2006 02:27:22 +0000 (02:27 +0000)
and add a --prelink-only update
and update to qt 4.2.2

makelib/osxdist.py

index 397832ec06f789e820a77d069da008ab1b445077..be6f605b908b52bc734e5ad2b086a38af15476d1 100644 (file)
@@ -59,7 +59,7 @@ def mkdir(path):
   path_list = []
   head, tail = os.path.split(path)
   path_list.insert(0, tail)
-  while len(head) > 0:
+  while head != os.path.sep and len(head) > 0:
     head, tail = os.path.split(head)
     path_list.insert(0, tail)
   created_path = ""
@@ -119,8 +119,9 @@ def prelinkqt(app_name, bundle_dir, qt_lib_dir):
   OS X's treatment of dynamic loading is annoying
   properly prelink all the annoying qt components.
   """
+  print >>sys.stderr, "Prelinking", app_name, "in", bundle_dir,
   framework_subpath = os.path.join("%(framework)s.framework", "Versions", "4", "%(framework)s")
-  frameworks = ['QtCore', 'QtGui', 'QtOpenGL', 'QtAssistantClient', 'QtNetwork']
+  frameworks = ['QtCore', 'QtGui', 'QtOpenGL', 'QtAssistant', 'QtNetwork']
 
   qt_framework=os.path.join(qt_lib_dir, framework_subpath)
   app_binary=bundle_dir+"/Contents/MacOS/"+app_name
@@ -143,6 +144,7 @@ def prelinkqt(app_name, bundle_dir, qt_lib_dir):
       contents_exe_path = "@executable_path/../Frameworks/" + framework_subpath
       contents_exe_path %= ({'framework': frame2})
       call(['install_name_tool','-change',qtframe2,contents_exe_path,appframe])
+  print "."
       
 def validate_bundle(bundle_path):
   """
@@ -173,16 +175,18 @@ def validate_bundle(bundle_path):
   return valid
   
 def main(args):
-  qtroot = "/usr/local/qt/4.2.1"
+  qtroot = "/usr/local/qt/4.2.2"
   app_name = None
   build_num = None
   bundle_dir = None
   dmgfile = None
   desturl = None
+  prelink_only = False
   
   opts, args = getopt.getopt(args, "a:b:d:n:q:h", 
                              ["appbundle=", "build-num=", "destination=",
-                              "name=", "qt-root=", "help"])
+                              "name=", "prelink-only", "qt-root=", "help"])
+
   for option, argument in opts:
     if option in ("-a", "--appbundle"):
       bundle_dir = argument
@@ -192,6 +196,8 @@ def main(args):
       desturl = argument
     elif option in ("-n", "--name"):
       app_name = argument
+    elif option in ("--prelink-only"):
+      prelink_only = True
     elif option in ("-q", "--qt-root"):
       qtroot = argument
     elif option in ("-h", "--help"):
@@ -222,6 +228,8 @@ def main(args):
   else:
     dmg_name = app_name
     
+  bundle_dir = os.path.expanduser(bundle_dir)
+  
   if not os.path.exists(bundle_dir):
     print >>sys.stderr, "couldn't find an app at %s" % (app_bundle)
     return 1
@@ -229,12 +237,14 @@ def main(args):
   qt_lib_dir = os.path.join(qtroot, 'lib')
 
   prelinkqt(app_name, bundle_dir, qt_lib_dir)
-  if validate_bundle(bundle_dir):
-    dmgfile = makedmg([bundle_dir]+args, dmg_name)
-  else:
+  if not validate_bundle(bundle_dir):
     print >>sys.stderr, "Invalid libraries found"
     return 1
 
+  if prelink_only:
+    return 0
+  
+  dmgfile = makedmg([bundle_dir]+args, dmg_name)
   if dmgfile and desturl:
     print "Uploading",dmgfile,"to",desturl
     ship(dmgfile, desturl)