From eeb0130156bc33ef4d99cf5528bc9e28382aec6a Mon Sep 17 00:00:00 2001 From: Conrad Kramer Date: Mon, 8 May 2023 18:14:21 -0400 Subject: [PATCH] Add Swift module for libburrow This commit also renames the app target to App. --- .github/actions/build-for-testing/action.yml | 1 + .github/workflows/build-apple.yml | 6 +-- Apple/App/{Burrow.xcconfig => App.xcconfig} | 5 +- Apple/Burrow.xcodeproj/project.pbxproj | 53 +++++++++++-------- .../{Burrow.xcscheme => App.xcscheme} | 6 +-- .../xcschemes/NetworkExtension.xcscheme | 7 ++- Apple/Configuration/Compiler.xcconfig | 1 + Apple/NetworkExtension/Info.plist | 2 + .../NetworkExtension.xcconfig | 5 +- .../libburrow}/build-rust.sh | 2 +- Apple/NetworkExtension/libburrow/libburrow.h | 1 + .../libburrow/module.modulemap | 4 ++ 12 files changed, 57 insertions(+), 36 deletions(-) rename Apple/App/{Burrow.xcconfig => App.xcconfig} (82%) rename Apple/Burrow.xcodeproj/xcshareddata/xcschemes/{Burrow.xcscheme => App.xcscheme} (95%) rename Apple/{Configuration => NetworkExtension/libburrow}/build-rust.sh (97%) create mode 100644 Apple/NetworkExtension/libburrow/libburrow.h create mode 100644 Apple/NetworkExtension/libburrow/module.modulemap diff --git a/.github/actions/build-for-testing/action.yml b/.github/actions/build-for-testing/action.yml index 9691122..964cd08 100644 --- a/.github/actions/build-for-testing/action.yml +++ b/.github/actions/build-for-testing/action.yml @@ -30,6 +30,7 @@ runs: -authenticationKeyIssuerID ${{ inputs.app-store-key-issuer-id }} \ -authenticationKeyPath "${PWD}/AuthKey_${{ inputs.app-store-key-id }}.p8" \ -onlyUsePackageVersionsFromResolvedFile \ + -skipPackagePluginValidation \ -scheme '${{ inputs.scheme }}' \ -destination '${{ inputs.destination }}' \ -resultBundlePath BuildResults.xcresult diff --git a/.github/workflows/build-apple.yml b/.github/workflows/build-apple.yml index 3b9516a..1aadcc2 100644 --- a/.github/workflows/build-apple.yml +++ b/.github/workflows/build-apple.yml @@ -14,20 +14,20 @@ jobs: fail-fast: false matrix: include: - - scheme: Burrow + - scheme: App destination: generic/platform=iOS platform: iOS sdk-name: iphoneos rust-targets: - aarch64-apple-ios - - scheme: Burrow + - scheme: App destination: platform=iOS Simulator,OS=16.2,name=iPhone 14 Pro platform: iOS Simulator sdk-name: iphonesimulator rust-targets: - aarch64-apple-ios-sim - x86_64-apple-ios - - scheme: Burrow + - scheme: App destination: platform=macOS platform: macOS sdk-name: macos diff --git a/Apple/App/Burrow.xcconfig b/Apple/App/App.xcconfig similarity index 82% rename from Apple/App/Burrow.xcconfig rename to Apple/App/App.xcconfig index a4922de..1d63205 100644 --- a/Apple/App/Burrow.xcconfig +++ b/Apple/App/App.xcconfig @@ -2,6 +2,7 @@ PRODUCT_NAME = Burrow PRODUCT_BUNDLE_IDENTIFIER = $(APP_BUNDLE_IDENTIFIER) +PRODUCT_MODULE_NAME = BurrowApp INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphone*] = YES INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphone*] = YES @@ -11,7 +12,7 @@ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad[sdk=iphone*] = UIInterfaceOr INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone[sdk=iphone*] = UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight TARGETED_DEVICE_FAMILY[sdk=iphone*] = 1,2 -INFOPLIST_KEY_LSApplicationCategoryType[sdk=macos*] = public.app-category.utilities +INFOPLIST_KEY_LSApplicationCategoryType[sdk=macosx*] = public.app-category.utilities CODE_SIGN_ENTITLEMENTS = App/App-iOS.entitlements -CODE_SIGN_ENTITLEMENTS[sdk=macos*] = App/App-macOS.entitlements +CODE_SIGN_ENTITLEMENTS[sdk=macosx*] = App/App-macOS.entitlements diff --git a/Apple/Burrow.xcodeproj/project.pbxproj b/Apple/Burrow.xcodeproj/project.pbxproj index adee0ed..e69eb6c 100644 --- a/Apple/Burrow.xcodeproj/project.pbxproj +++ b/Apple/Burrow.xcodeproj/project.pbxproj @@ -12,7 +12,8 @@ D05B9F7629E39EEC008CB1F9 /* BurrowApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B9F7529E39EEC008CB1F9 /* BurrowApp.swift */; }; D05B9F7829E39EEC008CB1F9 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05B9F7729E39EEC008CB1F9 /* ContentView.swift */; }; D05B9F7A29E39EED008CB1F9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D05B9F7929E39EED008CB1F9 /* Assets.xcassets */; }; - D0B98FC529FDA49E004E7149 /* libburrow.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B98FC429FDA476004E7149 /* libburrow.a */; }; + D0BCC6092A09A03E00AD070D /* libburrow.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCC6032A09535900AD070D /* libburrow.a */; }; + D0BCC60A2A09A0B800AD070D /* build-rust.sh in Resources */ = {isa = PBXBuildFile; fileRef = D0B98FBF29FD8072004E7149 /* build-rust.sh */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -43,7 +44,7 @@ D020F63D29E4A1FF002790F6 /* Identity.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Identity.xcconfig; sourceTree = ""; }; D020F64029E4A1FF002790F6 /* Compiler.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Compiler.xcconfig; sourceTree = ""; }; D020F64229E4A1FF002790F6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D020F64929E4A34B002790F6 /* Burrow.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Burrow.xcconfig; sourceTree = ""; }; + D020F64929E4A34B002790F6 /* App.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = App.xcconfig; sourceTree = ""; }; D020F64A29E4A452002790F6 /* App.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = App.xcconfig; sourceTree = ""; }; D020F65329E4A697002790F6 /* BurrowNetworkExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = BurrowNetworkExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; D020F65729E4A697002790F6 /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = ""; }; @@ -59,7 +60,10 @@ D05B9F7729E39EEC008CB1F9 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; D05B9F7929E39EED008CB1F9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; D0B98FBF29FD8072004E7149 /* build-rust.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "build-rust.sh"; sourceTree = ""; }; - D0B98FC429FDA476004E7149 /* libburrow.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libburrow.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D0B98FD829FDDB6F004E7149 /* libburrow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libburrow.h; sourceTree = ""; }; + D0B98FDC29FDDDCF004E7149 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + D0BCC5FE2A086E1C00AD070D /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; + D0BCC6032A09535900AD070D /* libburrow.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libburrow.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -67,7 +71,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D0B98FC529FDA49E004E7149 /* libburrow.a in Frameworks */, + D0BCC6092A09A03E00AD070D /* libburrow.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -88,7 +92,6 @@ D020F64A29E4A452002790F6 /* App.xcconfig */, D020F66329E4A703002790F6 /* Extension.xcconfig */, D020F64029E4A1FF002790F6 /* Compiler.xcconfig */, - D0B98FBF29FD8072004E7149 /* build-rust.sh */, D020F64229E4A1FF002790F6 /* Info.plist */, ); path = Configuration; @@ -102,6 +105,7 @@ D020F66729E4A95D002790F6 /* NetworkExtension-iOS.entitlements */, D020F66629E4A95D002790F6 /* NetworkExtension-macOS.entitlements */, D020F66229E4A6E5002790F6 /* NetworkExtension.xcconfig */, + D0B98FD729FDDB57004E7149 /* libburrow */, ); path = NetworkExtension; sourceTree = ""; @@ -113,7 +117,6 @@ D020F65629E4A697002790F6 /* NetworkExtension */, D020F63C29E4A1FF002790F6 /* Configuration */, D05B9F7329E39EEC008CB1F9 /* Products */, - D0B98FC129FDA45D004E7149 /* Frameworks */, ); sourceTree = ""; }; @@ -130,21 +133,27 @@ isa = PBXGroup; children = ( D05B9F7529E39EEC008CB1F9 /* BurrowApp.swift */, - D05B9F7729E39EEC008CB1F9 /* ContentView.swift */, + D05B9F7729E39EEC008CB1F9 /* TunnelView.swift */, + D0B98FC629FDC5B5004E7149 /* Tunnel.swift */, + D0BCC5FE2A086E1C00AD070D /* Status.swift */, + D0BCC5FC2A086D4700AD070D /* NetworkExtension+Async.swift */, D05B9F7929E39EED008CB1F9 /* Assets.xcassets */, D020F66829E4AA74002790F6 /* App-iOS.entitlements */, D020F66929E4AA74002790F6 /* App-macOS.entitlements */, - D020F64929E4A34B002790F6 /* Burrow.xcconfig */, + D020F64929E4A34B002790F6 /* App.xcconfig */, ); path = App; sourceTree = ""; }; - D0B98FC129FDA45D004E7149 /* Frameworks */ = { + D0B98FD729FDDB57004E7149 /* libburrow */ = { isa = PBXGroup; children = ( - D0B98FC429FDA476004E7149 /* libburrow.a */, + D0B98FBF29FD8072004E7149 /* build-rust.sh */, + D0B98FDC29FDDDCF004E7149 /* module.modulemap */, + D0B98FD829FDDB6F004E7149 /* libburrow.h */, + D0BCC6032A09535900AD070D /* libburrow.a */, ); - name = Frameworks; + path = libburrow; sourceTree = ""; }; /* End PBXGroup section */ @@ -154,7 +163,7 @@ isa = PBXNativeTarget; buildConfigurationList = D020F65E29E4A697002790F6 /* Build configuration list for PBXNativeTarget "NetworkExtension" */; buildPhases = ( - D0B98FC029FD809A004E7149 /* Compile Rust */, + D0BCC60B2A09A0C100AD070D /* Compile Rust */, D020F64F29E4A697002790F6 /* Sources */, D020F65029E4A697002790F6 /* Frameworks */, D020F65129E4A697002790F6 /* Resources */, @@ -168,9 +177,9 @@ productReference = D020F65329E4A697002790F6 /* BurrowNetworkExtension.appex */; productType = "com.apple.product-type.app-extension"; }; - D05B9F7129E39EEC008CB1F9 /* Burrow */ = { + D05B9F7129E39EEC008CB1F9 /* App */ = { isa = PBXNativeTarget; - buildConfigurationList = D05B9F8129E39EED008CB1F9 /* Build configuration list for PBXNativeTarget "Burrow" */; + buildConfigurationList = D05B9F8129E39EED008CB1F9 /* Build configuration list for PBXNativeTarget "App" */; buildPhases = ( D05B9F6E29E39EEC008CB1F9 /* Sources */, D05B9F6F29E39EEC008CB1F9 /* Frameworks */, @@ -182,7 +191,7 @@ dependencies = ( D020F65C29E4A697002790F6 /* PBXTargetDependency */, ); - name = Burrow; + name = App; productName = Burrow; productReference = D05B9F7229E39EEC008CB1F9 /* Burrow.app */; productType = "com.apple.product-type.application"; @@ -218,7 +227,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - D05B9F7129E39EEC008CB1F9 /* Burrow */, + D05B9F7129E39EEC008CB1F9 /* App */, D020F65229E4A697002790F6 /* NetworkExtension */, ); }; @@ -229,6 +238,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + D0BCC60A2A09A0B800AD070D /* build-rust.sh in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -243,7 +253,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - D0B98FC029FD809A004E7149 /* Compile Rust */ = { + D0BCC60B2A09A0C100AD070D /* Compile Rust */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; @@ -257,11 +267,10 @@ outputFileListPaths = ( ); outputPaths = ( - "$(BUILT_PRODUCTS_DIR)/libburrow.a", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PROJECT_DIR}/Configuration/build-rust.sh\"\n"; + shellScript = "\"${PROJECT_DIR}/NetworkExtension/libburrow/build-rust.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -325,14 +334,14 @@ }; D05B9F8229E39EED008CB1F9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D020F64929E4A34B002790F6 /* Burrow.xcconfig */; + baseConfigurationReference = D020F64929E4A34B002790F6 /* App.xcconfig */; buildSettings = { }; name = Debug; }; D05B9F8329E39EED008CB1F9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D020F64929E4A34B002790F6 /* Burrow.xcconfig */; + baseConfigurationReference = D020F64929E4A34B002790F6 /* App.xcconfig */; buildSettings = { }; name = Release; @@ -358,7 +367,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D05B9F8129E39EED008CB1F9 /* Build configuration list for PBXNativeTarget "Burrow" */ = { + D05B9F8129E39EED008CB1F9 /* Build configuration list for PBXNativeTarget "App" */ = { isa = XCConfigurationList; buildConfigurations = ( D05B9F8229E39EED008CB1F9 /* Debug */, diff --git a/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/Burrow.xcscheme b/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/App.xcscheme similarity index 95% rename from Apple/Burrow.xcodeproj/xcshareddata/xcschemes/Burrow.xcscheme rename to Apple/Burrow.xcodeproj/xcshareddata/xcschemes/App.xcscheme index 005a84e..7bb7808 100644 --- a/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/Burrow.xcscheme +++ b/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/App.xcscheme @@ -16,7 +16,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "D05B9F7129E39EEC008CB1F9" BuildableName = "Burrow.app" - BlueprintName = "Burrow" + BlueprintName = "App" ReferencedContainer = "container:Burrow.xcodeproj"> @@ -45,7 +45,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "D05B9F7129E39EEC008CB1F9" BuildableName = "Burrow.app" - BlueprintName = "Burrow" + BlueprintName = "App" ReferencedContainer = "container:Burrow.xcodeproj"> @@ -62,7 +62,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "D05B9F7129E39EEC008CB1F9" BuildableName = "Burrow.app" - BlueprintName = "Burrow" + BlueprintName = "App" ReferencedContainer = "container:Burrow.xcodeproj"> diff --git a/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/NetworkExtension.xcscheme b/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/NetworkExtension.xcscheme index 24ca402..e03c201 100644 --- a/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/NetworkExtension.xcscheme +++ b/Apple/Burrow.xcodeproj/xcshareddata/xcschemes/NetworkExtension.xcscheme @@ -1,7 +1,6 @@ @@ -62,7 +61,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "D05B9F7129E39EEC008CB1F9" BuildableName = "Burrow.app" - BlueprintName = "Burrow" + BlueprintName = "App" ReferencedContainer = "container:Burrow.xcodeproj"> @@ -81,7 +80,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "D05B9F7129E39EEC008CB1F9" BuildableName = "Burrow.app" - BlueprintName = "Burrow" + BlueprintName = "App" ReferencedContainer = "container:Burrow.xcodeproj"> diff --git a/Apple/Configuration/Compiler.xcconfig b/Apple/Configuration/Compiler.xcconfig index ebf6136..de6261a 100644 --- a/Apple/Configuration/Compiler.xcconfig +++ b/Apple/Configuration/Compiler.xcconfig @@ -35,6 +35,7 @@ FUSE_BUILD_SCRIPT_PHASES = YES APP_GROUP_IDENTIFIER = group.$(APP_BUNDLE_IDENTIFIER) APP_GROUP_IDENTIFIER[sdk=macosx*] = $(DEVELOPMENT_TEAM).$(APP_BUNDLE_IDENTIFIER) +NETWORK_EXTENSION_BUNDLE_IDENTIFIER = $(APP_BUNDLE_IDENTIFIER).network // Swift SWIFT_VERSION = 5.0 diff --git a/Apple/NetworkExtension/Info.plist b/Apple/NetworkExtension/Info.plist index 3059459..e2cf604 100644 --- a/Apple/NetworkExtension/Info.plist +++ b/Apple/NetworkExtension/Info.plist @@ -2,6 +2,8 @@ + CFBundleName + $(INFOPLIST_KEY_CFBundleDisplayName) NSExtension NSExtensionPointIdentifier diff --git a/Apple/NetworkExtension/NetworkExtension.xcconfig b/Apple/NetworkExtension/NetworkExtension.xcconfig index f606079..3b94990 100644 --- a/Apple/NetworkExtension/NetworkExtension.xcconfig +++ b/Apple/NetworkExtension/NetworkExtension.xcconfig @@ -1,8 +1,11 @@ #include "../Configuration/Extension.xcconfig" PRODUCT_NAME = BurrowNetworkExtension -PRODUCT_BUNDLE_IDENTIFIER = $(APP_BUNDLE_IDENTIFIER).network +PRODUCT_BUNDLE_IDENTIFIER = $(NETWORK_EXTENSION_BUNDLE_IDENTIFIER) + INFOPLIST_FILE = NetworkExtension/Info.plist CODE_SIGN_ENTITLEMENTS = NetworkExtension/NetworkExtension-iOS.entitlements CODE_SIGN_ENTITLEMENTS[sdk=macos*] = NetworkExtension/NetworkExtension-macOS.entitlements + +SWIFT_INCLUDE_PATHS = $(inherited) $(PROJECT_DIR)/NetworkExtension diff --git a/Apple/Configuration/build-rust.sh b/Apple/NetworkExtension/libburrow/build-rust.sh similarity index 97% rename from Apple/Configuration/build-rust.sh rename to Apple/NetworkExtension/libburrow/build-rust.sh index 1f62701..f8c943c 100755 --- a/Apple/Configuration/build-rust.sh +++ b/Apple/NetworkExtension/libburrow/build-rust.sh @@ -9,7 +9,7 @@ fi set -e -cd -- "$(dirname -- "${BASH_SOURCE[0]}")"/../../burrow +cd -- "$(dirname -- "${BASH_SOURCE[0]}")"/../../../burrow RUST_TARGETS=() diff --git a/Apple/NetworkExtension/libburrow/libburrow.h b/Apple/NetworkExtension/libburrow/libburrow.h new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Apple/NetworkExtension/libburrow/libburrow.h @@ -0,0 +1 @@ + diff --git a/Apple/NetworkExtension/libburrow/module.modulemap b/Apple/NetworkExtension/libburrow/module.modulemap new file mode 100644 index 0000000..c53a032 --- /dev/null +++ b/Apple/NetworkExtension/libburrow/module.modulemap @@ -0,0 +1,4 @@ +module libburrow { + header "libburrow.h" + export * +}