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)
+ # FIXME: For some reason the above os.path.split lost the root '/'
+ if path[0] == os.path.sep and path_list[0] != os.path.sep:
+ path_list.insert(0, os.path.sep)
created_path = ""
for path_element in path_list:
created_path = os.path.join(created_path, path_element)
if d[-1] == '/':
d = d[:-1]
tail = os.path.split(d)[-1]
- copytree(d, os.path.join(mount_point, tail))
+ if (os.path.isdir(d)):
+ copytree(d, os.path.join(mount_point, tail))
+ else:
+ copy(d, os.path.join(mount_point, tail))
call(['hdiutil','detach',mount_point])
call(['hdiutil','convert',rwdmg,'-format','UDZO','-o',dmg])
OS X's treatment of dynamic loading is annoying
properly prelink all the annoying qt components.
"""
- framework_subpath = os.path.join("%(framework)s.framework", "Versions", "4.0", "%(framework)s")
- frameworks = ['QtCore', 'QtGui', 'QtOpenGL', 'QtNetwork']
+ 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', 'QtAssistant', 'QtNetwork']
qt_framework=os.path.join(qt_lib_dir, framework_subpath)
app_binary=bundle_dir+"/Contents/MacOS/"+app_name
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):
"""
return valid
def main(args):
- qtroot = "/usr/local/qt/4.1.4"
+ qtroot = "/usr/local/qt/4.2.3"
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
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"):
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
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)