# # # patch "wscript" # from [e93abb9a56240eac950b2b1c4e3a994e8a9e1964] # to [103fd8daa6556d0d830f1538b64ab081478a1411] # ============================================================ --- wscript e93abb9a56240eac950b2b1c4e3a994e8a9e1964 +++ wscript 103fd8daa6556d0d830f1538b64ab081478a1411 @@ -8,24 +8,120 @@ blddir = '_build_' srcdir = '.' blddir = '_build_' +# path to an *.icns file created with the Icon Composer app +iconsfile = 'guitone/res/osx/guitone.icns' +# array of languages (ISO 639 code) for a localized application menu +languages = (['de']) + import os +import sys +import shutil import Params +import Runner +import Utils -import Utils Utils.waf_version(mini="1.0.0", maxi="1.4.9") +app_info = ''' + + + + + CFBundlePackageType + APPL + CFBundleGetInfoString + Created by waf + CFBundleSignature + ???? + NOTE + Do not change this file, it will be overwritten by waf. +''' +app_info_foot = ''' + + +''' + +locversion = ''' + + + + + LprojCompatibleVersion + 123 + LprojLocale + %s + LprojRevisionLevel + 1 + LprojVersion + 123 + + +''' + def build(bld): bld.add_subdirs("guitone") def configure(conf): - conf.check_tool('g++ Qt4') + Runner.set_exec("noredir") + conf.check_tool('g++ Qt4') def set_options(opt): - opt.tool_options('Qt4') - opt.add_option('--exe', action='store_true', default=False, help='exe') - #pass + opt.tool_options('Qt4') + opt.add_option('--exe', action='store_true', default=False, help='execute the application') + if sys.platform == "darwin": + opt.add_option('--bundle', action='store_true', default=False, help='create a MacOS X application bundle') def shutdown(): - if Params.g_options.exe: - os.popen('_build_/default/guitone/guitone') + global APPNAME,blddir,app_info,app_info_foot,iconsfile,locversion,languages + + app_bundle = blddir + '/default/bundle/' + APPNAME + '.app' + prog_bin = blddir + '/default/' + APPNAME + '/' + APPNAME + + if Params.g_options.exe: + if sys.platform == "darwin" and os.path.exists(app_bundle): + os.popen('open "' + app_bundle + '"') + else: + os.popen(prog_bin) + + if Params.g_options.bundle: + try: + # remove any old application bundle + if os.path.exists(app_bundle): + shutil.rmtree(app_bundle) + + os.makedirs(app_bundle + '/Contents/MacOS') + + # create the semi-useful PkgInfo file + f = file(app_bundle + '/Contents/PkgInfo', 'w') + f.write('APPL????') + f.close() + + # copy the binary in position + shutil.copy(prog_bin, app_bundle + '/Contents/MacOS/' + os.path.basename(prog_bin)) + # write Info.plist + f = file(os.path.join(app_bundle, "Contents", "Info.plist"), "w") + f.write(app_info) + f.write("\tCFBundleExecutable\n\t%s\n" % os.path.basename(prog_bin)) + + # if there is an icon file, add it to the bundle + if iconsfile != "": + f.write("\tCFBundleIconFile\n\t%s\n" % os.path.basename(iconsfile)) + os.makedirs(app_bundle + '/Contents/Resources') + shutil.copy(iconsfile, app_bundle + '/Contents/Resources') + + f.write(app_info_foot) + f.close() + + # write locversion.plist files for each given language + for lang in languages: + langdir = app_bundle + '/Contents/Resources/' + lang + '.lproj' + os.makedirs(langdir) + f = file(os.path.join(langdir, "locversion.plist"), "w") + f.write(locversion % lang) + f.close() + + except IOError, arg: + print "IOError", arg +