diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe056977..475909bf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,11 +1,11 @@ name: Build and Upload SideStore -on: +on: push: branches: - master - develop pull_request: - + jobs: build: name: Build and upload SideStore @@ -15,7 +15,7 @@ jobs: include: - os: 'macos-12' version: '14.0.0' - + runs-on: ${{ matrix.os }} steps: - name: Checkout code @@ -23,76 +23,81 @@ jobs: with: submodules: recursive - - name: Cache rust cargo - id: cache-rust-cargo - uses: actions/cache@v3 - env: - cache-name: cache-rust-cargo - with: - path: ~/.cargo - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + # - name: Cache rust cargo + # id: cache-rust-cargo + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-cargo + # with: + # path: ~/.cargo + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- - - name: Cache rust minimuxer - id: cache-rust-minimuxer - uses: actions/cache@v3 - env: - cache-name: cache-rust-minimuxer - with: - path: ./Dependencies/minimuxer/target - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + # - name: Cache rust minimuxer + # id: cache-rust-minimuxer + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-minimuxer + # with: + # path: ./Dependencies/minimuxer/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- - - name: Cache rust em_proxy - id: cache-rust-em_proxy - uses: actions/cache@v3 - env: - cache-name: cache-rust-em_proxy - with: - path: ./Dependencies/em_proxy/target - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + # - name: Cache rust em_proxy + # id: cache-rust-em_proxy + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-em_proxy + # with: + # path: ./Dependencies/em_proxy/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + # - name: Install dependencies + # run: brew install ldid + # - name: Install rustup + # uses: actions-rs/toolchain@v1 + # with: + # toolchain: stable + # override: true + # target: aarch64-apple-ios + # - name: Create emotional damage + # run: cd Dependencies/em_proxy && cargo build --release --target aarch64-apple-ios + # - name: Build minimuxer + # run: cd Dependencies/minimuxer && cargo build --release --target aarch64-apple-ios - - name: Install dependencies - run: brew install ldid - - name: Install rustup - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - target: aarch64-apple-ios - - name: Create emotional damage - run: cd Dependencies/em_proxy && cargo build --release --target aarch64-apple-ios - - name: Build minimuxer - run: cd Dependencies/minimuxer && cargo build --release --target aarch64-apple-ios - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1.4.1 with: xcode-version: ${{ matrix.version }} + - name: Build SideStore run: | rm -rf ~/Library/Developer/Xcode/DerivedData/ rm ./AltStore.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved xcodebuild -project AltStore.xcodeproj -scheme AltStore -sdk iphoneos archive -archivePath ./archive CODE_SIGNING_REQUIRED=NO AD_HOC_CODE_SIGNING_ALLOWED=YES CODE_SIGNING_ALLOWED=NO DEVELOPMENT_TEAM=XYZ0123456 ORG_IDENTIFIER=com.SideStore | xcpretty && exit ${PIPESTATUS[0]} + - name: Fakesign app - run: | + run: | rm -rf archive.xcarchive/Products/Applications/SideStore.app/Frameworks/AltStoreCore.framework/Frameworks/ ldid -SAltStore/Resources/tempEnt.plist archive.xcarchive/Products/Applications/SideStore.app/SideStore + - name: Convert to IPA - run: | + run: | mkdir Payload mkdir Payload/SideStore.app cp -R archive.xcarchive/Products/Applications/SideStore.app/ Payload/SideStore.app/ zip -r SideStore.ipa Payload + - name: Upload Artifact uses: actions/upload-artifact@v3.1.0 with: diff --git a/AltStore.xcodeproj/project.pbxproj b/AltStore.xcodeproj/project.pbxproj index 4b541ead..60b4947c 100644 --- a/AltStore.xcodeproj/project.pbxproj +++ b/AltStore.xcodeproj/project.pbxproj @@ -36,6 +36,7 @@ B3146ED3284F581E00BBC3FD /* Roxas.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3146ECD284F580500BBC3FD /* Roxas.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B343F858295F6331002B1159 /* libminimuxer_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B343F84C295F6321002B1159 /* libminimuxer_static.a */; }; B343F859295F6335002B1159 /* libem_proxy_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B343F853295F6323002B1159 /* libem_proxy_static.a */; }; + B343F86D295F759E002B1159 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B343F86C295F759E002B1159 /* libresolv.tbd */; }; B376FE3E29258C8900E18883 /* OSLog+SideStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B376FE3D29258C8900E18883 /* OSLog+SideStore.swift */; }; B3919A52292DBE5400519575 /* ProgressRing.swift in Sources */ = {isa = PBXBuildFile; fileRef = D504F42528AD72C50014BB5D /* ProgressRing.swift */; }; B39575F5284F29E20080B4FF /* Roxas.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39575F4284F29E20080B4FF /* Roxas.framework */; }; @@ -404,6 +405,20 @@ remoteGlobalIDString = CA60058A9FBE4D17AF51A7D5; remoteInfo = "run-bin"; }; + B343F86E295F76FD002B1159 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B343F847295F6321002B1159 /* minimuxer.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = CA609C732349A560B9642892; + remoteInfo = "minimuxer-staticlib"; + }; + B343F870295F7704002B1159 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B343F84D295F6323002B1159 /* em_proxy.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = CA60C44C93D7A30E3695DD59; + remoteInfo = "em_proxy-staticlib"; + }; BF66EE832501AE50007EE018 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFD247622284B9A500981D42 /* Project object */; @@ -482,6 +497,7 @@ B3146EC6284F580500BBC3FD /* Roxas.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Roxas.xcodeproj; path = Dependencies/Roxas/Roxas.xcodeproj; sourceTree = ""; }; B343F847295F6321002B1159 /* minimuxer.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = minimuxer.xcodeproj; path = Dependencies/minimuxer.xcodeproj; sourceTree = SOURCE_ROOT; }; B343F84D295F6323002B1159 /* em_proxy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = em_proxy.xcodeproj; path = Dependencies/em_proxy.xcodeproj; sourceTree = SOURCE_ROOT; }; + B343F86C295F759E002B1159 /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/usr/lib/libresolv.tbd; sourceTree = DEVELOPER_DIR; }; B376FE3D29258C8900E18883 /* OSLog+SideStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OSLog+SideStore.swift"; sourceTree = ""; }; B39575F4284F29E20080B4FF /* Roxas.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Roxas.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B39F16122918D7C5002E9404 /* Consts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Consts.swift; sourceTree = ""; }; @@ -811,6 +827,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B343F86D295F759E002B1159 /* libresolv.tbd in Frameworks */, B343F859295F6335002B1159 /* libem_proxy_static.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1506,6 +1523,7 @@ BFD247852284BB3300981D42 /* Frameworks */ = { isa = PBXGroup; children = ( + B343F86C295F759E002B1159 /* libresolv.tbd */, 191E5FB5290A5E1F001A3B7C /* libminimuxer.a */, 19104DA32909BC1000C49C7B /* libem_proxy.a */, B39575F4284F29E20080B4FF /* Roxas.framework */, @@ -1775,6 +1793,7 @@ buildRules = ( ); dependencies = ( + B343F871295F7704002B1159 /* PBXTargetDependency */, ); name = EmotionalDamage; productName = EmotionalDamage; @@ -1792,6 +1811,7 @@ buildRules = ( ); dependencies = ( + B343F86F295F76FD002B1159 /* PBXTargetDependency */, ); name = minimuxer; productName = minimuxer; @@ -2435,6 +2455,16 @@ isa = PBXTargetDependency; productRef = 191E5FD9290AFA49001A3B7C /* OpenSSL */; }; + B343F86F295F76FD002B1159 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "minimuxer-staticlib"; + targetProxy = B343F86E295F76FD002B1159 /* PBXContainerItemProxy */; + }; + B343F871295F7704002B1159 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "em_proxy-staticlib"; + targetProxy = B343F870295F7704002B1159 /* PBXContainerItemProxy */; + }; BF66EE842501AE50007EE018 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BF66EE7D2501AE50007EE018 /* AltStoreCore */; diff --git a/Dependencies/update.sh b/Dependencies/update.sh new file mode 100755 index 00000000..bdcea4c2 --- /dev/null +++ b/Dependencies/update.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -e; set -o pipefail; set -x; + +echo "Building Rust projects..." +cd em_proxy +cargo xcode --output-dir ../ +cd ../ +cd minimuxer +cargo xcode --output-dir ../ +echo "Done!"