From 172d689cd3a6ce0a8fbd331cb09f3e581dc43d7a Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 11 Mar 2017 22:26:02 -0500 Subject: [PATCH] Base our final app on XCode's build result ... instead of creating it from scratch like we did before. --- build.py | 25 ++++++++---------- dupeGuru.xcodeproj/project.pbxproj | 41 ++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/build.py b/build.py index 4dbe373..a9e186f 100644 --- a/build.py +++ b/build.py @@ -104,12 +104,18 @@ def build_xibless(dest='cocoa/autogen'): ) def build_cocoa(dev): - print("Creating OS X app structure") - app = cocoa_app() app_version = get_module_version('core') cocoa_project_path = 'cocoa' filereplace(op.join(cocoa_project_path, 'InfoTemplate.plist'), op.join('build', 'Info.plist'), version=app_version) - app.create(op.join('build', 'Info.plist')) + copy_embeddable_python_dylib('build') + if not op.exists('build/PythonHeaders'): + os.symlink(op.dirname(sysconfig.get_config_h_filename()), 'build/PythonHeaders') + build_help() + print("Compiling with Xcode") + print_and_do('xcodebuild') + if op.exists('build/dupeGuru.app'): + shutil.rmtree('build/dupeGuru.app') + shutil.copytree('build/Release/dupeGuru.app', 'build/dupeGuru.app') print("Building localizations") build_localizations() print("Building xibless UIs") @@ -119,7 +125,7 @@ def build_cocoa(dev): build_cocoa_proxy_module() build_cocoa_bridging_interfaces() print("Building the cocoa layer") - copy_embeddable_python_dylib('build') + app = cocoa_app() pydep_folder = op.join(app.resources, 'py') if not op.exists(pydep_folder): os.mkdir(pydep_folder) @@ -142,17 +148,6 @@ def build_cocoa(dev): compileall.compile_dir(pydep_folder, force=True, legacy=True) delete_files_with_pattern(pydep_folder, '*.py') delete_files_with_pattern(pydep_folder, '__pycache__') - if not op.exists('build/PythonHeaders'): - os.symlink(op.dirname(sysconfig.get_config_h_filename()), 'build/PythonHeaders') - print("Compiling with Xcode") - print_and_do('xcodebuild') - app.copy_executable('build/Release/dupeGuru.app/Contents/MacOS/dupeGuru') - build_help() - print("Copying resources and frameworks") - image_path = 'cocoa/dupeguru.icns' - resources = [image_path, 'build/dg_cocoa.py', 'build/help'] - app.copy_resources(*resources, use_symlinks=dev) - app.copy_frameworks('build/Python') def build_help(): print("Generating Help") diff --git a/dupeGuru.xcodeproj/project.pbxproj b/dupeGuru.xcodeproj/project.pbxproj index 1b568e5..aa03a33 100644 --- a/dupeGuru.xcodeproj/project.pbxproj +++ b/dupeGuru.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 47; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ @@ -80,8 +80,25 @@ CE97215D1E74E41D00A598C9 /* PyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721381E74E41D00A598C9 /* PyTextField.m */; }; CE97215E1E74E41D00A598C9 /* ResultWindow_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97213A1E74E41D00A598C9 /* ResultWindow_UI.m */; }; CE97215F1E74E41D00A598C9 /* XiblessSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97213C1E74E41D00A598C9 /* XiblessSupport.m */; }; + CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A231E74F23000965F37 /* dg_cocoa.py */; }; + CEFC8A261E74F23000965F37 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A241E74F23000965F37 /* dupeguru.icns */; }; + CEFC8A281E74F28100965F37 /* help in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A271E74F28100965F37 /* help */; }; + CEFC8A2B1E74F45400965F37 /* Python in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE6F7D8C1E74E71C004C0518 /* Python */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; /* End PBXBuildFile section */ +/* Begin PBXCopyFilesBuildPhase section */ + CEFC8A2A1E74F44200965F37 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + CEFC8A2B1E74F45400965F37 /* Python in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ CE6F7D891E74E5C2004C0518 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = build/Info.plist; sourceTree = ""; }; CE6F7D8C1E74E71C004C0518 /* Python */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = Python; path = build/Python; sourceTree = ""; }; @@ -232,6 +249,9 @@ CE97213B1E74E41D00A598C9 /* XiblessSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XiblessSupport.h; path = cocoa/autogen/XiblessSupport.h; sourceTree = ""; }; CE97213C1E74E41D00A598C9 /* XiblessSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XiblessSupport.m; path = cocoa/autogen/XiblessSupport.m; sourceTree = ""; }; CE9C2E9D1E74E1640099B9FB /* dupeGuru.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dupeGuru.app; sourceTree = BUILT_PRODUCTS_DIR; }; + CEFC8A231E74F23000965F37 /* dg_cocoa.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = dg_cocoa.py; path = cocoa/dg_cocoa.py; sourceTree = ""; }; + CEFC8A241E74F23000965F37 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = dupeguru.icns; path = cocoa/dupeguru.icns; sourceTree = ""; }; + CEFC8A271E74F28100965F37 /* help */ = {isa = PBXFileReference; lastKnownFileType = folder; name = help; path = build/help; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -446,6 +466,7 @@ CE6F7D8E1E74E919004C0518 /* cocoalib */, CE9C2E9E1E74E1640099B9FB /* Products */, CE6F7D8B1E74E71B004C0518 /* Frameworks */, + CEFC8A221E74F0F700965F37 /* Resources */, ); sourceTree = ""; }; @@ -457,6 +478,16 @@ name = Products; sourceTree = ""; }; + CEFC8A221E74F0F700965F37 /* Resources */ = { + isa = PBXGroup; + children = ( + CEFC8A271E74F28100965F37 /* help */, + CEFC8A231E74F23000965F37 /* dg_cocoa.py */, + CEFC8A241E74F23000965F37 /* dupeguru.icns */, + ); + name = Resources; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -467,6 +498,7 @@ CE9C2E991E74E1640099B9FB /* Sources */, CE9C2E9A1E74E1640099B9FB /* Frameworks */, CE9C2E9B1E74E1640099B9FB /* Resources */, + CEFC8A2A1E74F44200965F37 /* CopyFiles */, ); buildRules = ( ); @@ -493,7 +525,7 @@ }; }; buildConfigurationList = CE9C2E981E74E1640099B9FB /* Build configuration list for PBXProject "dupeGuru" */; - compatibilityVersion = "Xcode 6.3"; + compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( @@ -515,6 +547,9 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */, + CEFC8A261E74F23000965F37 /* dupeguru.icns in Resources */, + CEFC8A281E74F28100965F37 /* help in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -694,6 +729,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = NO; + CODE_SIGN_IDENTITY = ""; HEADER_SEARCH_PATHS = build/PythonHeaders; INFOPLIST_FILE = "$(SRCROOT)/build/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; @@ -710,6 +746,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = NO; + CODE_SIGN_IDENTITY = ""; HEADER_SEARCH_PATHS = build/PythonHeaders; INFOPLIST_FILE = "$(SRCROOT)/build/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";