def _make_py2app_cmd(dist_dir,distribution,options,exe): cmd = py2app(distribution) for (nm,val) in options.iteritems(): setattr(cmd,nm,val) cmd.dist_dir = dist_dir cmd.app = [Target(script=exe.script,dest_base=exe.name, prescripts=[StringIO(_EXE_PRESCRIPT_CODE)])] cmd.finalize_options() cmd.plist["CFBundleExecutable"] = exe.name old_run = cmd.run def new_run(): # py2app munges the environment in ways that break things. old_deployment_target = os.environ.get("MACOSX_DEPLOYMENT_TARGET",None) old_run() if old_deployment_target is None: os.environ.pop("MACOSX_DEPLOYMENT_TARGET",None) else: os.environ["MACOSX_DEPLOYMENT_TARGET"] = old_deployment_target # We need to script file to have the same name as the exe, which # it won't if they have changed it explicitly. resdir = os.path.join(dist_dir,distribution.get_name()+".app","Contents/Resources") scriptf = os.path.join(resdir,exe.name+".py") if not os.path.exists(scriptf): old_scriptf = os.path.basename(exe.script) old_scriptf = os.path.join(resdir,old_scriptf) shutil.move(old_scriptf,scriptf) cmd.run = new_run return cmd
def _make_py2app_cmd(dist_dir,distribution,options,exe): cmd = py2app(distribution) for (nm,val) in options.iteritems(): setattr(cmd,nm,val) cmd.dist_dir = dist_dir cmd.app = [Target(script=exe.script,dest_base=exe.name, prescripts=[StringIO(_EXE_PRESCRIPT_CODE)])] cmd.finalize_options() cmd.plist["CFBundleExecutable"] = exe.name old_run = cmd.run def new_run(): old_run() # We need to script file to have the same name as the exe, which # it won't if they have changed it explicitly. resdir = os.path.join(dist_dir,distribution.get_name()+".app","Contents/Resources") scriptf = os.path.join(resdir,exe.name+".py") if not os.path.exists(scriptf): old_scriptf = os.path.basename(exe.script) old_scriptf = os.path.join(resdir,old_scriptf) shutil.move(old_scriptf,scriptf) cmd.run = new_run return cmd