From 339aa8d6ba7af3ad976fbc862d3aa9b48714543e Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:19:53 +0700 Subject: [PATCH 01/16] Create iOS artifact and release --- .github/workflows/build.yml | 48 +++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5ed374a485..6a062b72ef 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -224,12 +224,17 @@ jobs: sudo apt-get update -y -qq sudo apt-get install libsdl2-dev libgl1-mesa-dev libglu1-mesa-dev libsdl2-ttf-dev libfontconfig1-dev - - name: Create macOS git-version.cpp for tagged release - if: github.ref_type == 'tag' && runner.os == 'macOS' && matrix.extra == 'test' + - name: Create macOS & iOS git-version.cpp for tagged release + if: github.ref_type == 'tag' && runner.os == 'macOS' && (matrix.extra == 'test' || matrix.extra == 'ios') run: | echo "const char *PPSSPP_GIT_VERSION = \"${GITHUB_REF_NAME}\";" > git-version.cpp echo "#define PPSSPP_GIT_VERSION_NO_UPDATE 1" >> git-version.cpp + # Create Version.txt file (should probably do this during building process) + mkdir build-ios + mkdir build-ios/PPSSPP.app + echo $(echo $GITHUB_REF_NAME | cut -c 2-) > build-ios/PPSSPP.app/Version.txt + - name: Setup ccache uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18 # Disable ccache on macos for now, it's become buggy for some reason. @@ -260,7 +265,7 @@ jobs: ${{ matrix.args }} - name: Package build - if: matrix.extra == 'test' + if: matrix.extra == 'test' || matrix.extra == 'ios' run: | mkdir ppsspp if [ -e build*/$BUILD_CONFIGURATION/PPSSPPSDL ]; then @@ -272,6 +277,14 @@ jobs: zip -qry PPSSPPSDL.zip PPSSPPSDL.app rm -rf PPSSPPSDL.app popd + elif [ -e build*/PPSSPP.app ]; then + mkdir ppsspp/Payload + cp -a build*/PPSSPP.app ppsspp/Payload + # GitHub Actions zipping kills symlinks and permissions. + pushd ppsspp + zip -qry PPSSPP.ipa Payload + rm -rf Payload + popd elif [ -e build*/PPSSPPSDL ]; then cp build*/PPSSPPSDL ppsspp/ cp -r assets ppsspp/assets @@ -294,16 +307,27 @@ jobs: name: ${{ matrix.os }} build path: ppsspp/ - - name: Create macOS release - if: github.ref_type == 'tag' && runner.os == 'macOS' && matrix.extra == 'test' - working-directory: ppsspp - run: mv PPSSPPSDL.zip PPSSPPSDL-macOS-${GITHUB_REF_NAME}.zip - - - name: Upload macOS release - uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2 - if: github.ref_type == 'tag' && runner.os == 'macOS' && matrix.extra == 'test' + - name: Upload iOS build + uses: actions/upload-artifact@v4 + if: matrix.extra == 'ios' with: - files: ppsspp/*.zip + name: ${{ matrix.id }} build + path: ppsspp/ + + - name: Create macOS & iOS release + if: github.ref_type == 'tag' && runner.os == 'macOS' && (matrix.extra == 'test' || matrix.extra == 'ios') + working-directory: ppsspp + run: | + mv PPSSPPSDL.zip PPSSPPSDL-macOS-${GITHUB_REF_NAME}.zip + mv PPSSPP.ipa PPSSPP-iOS-${GITHUB_REF_NAME}.ipa + + - name: Upload macOS & iOS release + uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2 + if: github.ref_type == 'tag' && runner.os == 'macOS' && (matrix.extra == 'test' || matrix.extra == 'ios') + with: + files: | + ppsspp/*.zip + ppsspp/*.ipa body: > PPSSPP is a cross-platform PSP emulator. Visit PPSSPP [official website](https://ppsspp.org) From 6d38fca137da94c320a8953fd80ebc6fcac257d4 Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:51:40 +0700 Subject: [PATCH 02/16] iOS artifact might need Version.txt file too. --- .github/workflows/build.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6a062b72ef..a3b58a3b9d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -224,17 +224,21 @@ jobs: sudo apt-get update -y -qq sudo apt-get install libsdl2-dev libgl1-mesa-dev libglu1-mesa-dev libsdl2-ttf-dev libfontconfig1-dev + - name: Create iOS Version.txt file + if: runner.os == 'macOS' && matrix.extra == 'ios' + run: | + # Create Version.txt file (should probably do this during building process) + mkdir build-ios + mkdir build-ios/PPSSPP.app + GIT_VERSION=$(git describe --always --tags) + echo $(echo $GIT_VERSION | cut -c 2-) > build-ios/PPSSPP.app/Version.txt + - name: Create macOS & iOS git-version.cpp for tagged release if: github.ref_type == 'tag' && runner.os == 'macOS' && (matrix.extra == 'test' || matrix.extra == 'ios') run: | echo "const char *PPSSPP_GIT_VERSION = \"${GITHUB_REF_NAME}\";" > git-version.cpp echo "#define PPSSPP_GIT_VERSION_NO_UPDATE 1" >> git-version.cpp - # Create Version.txt file (should probably do this during building process) - mkdir build-ios - mkdir build-ios/PPSSPP.app - echo $(echo $GITHUB_REF_NAME | cut -c 2-) > build-ios/PPSSPP.app/Version.txt - - name: Setup ccache uses: hendrikmuhs/ccache-action@63069e3931dedbf3b63792097479563182fe70d1 # v1.2.18 # Disable ccache on macos for now, it's become buggy for some reason. From e0e047e16280179b64054c20068459a9de1fb6e7 Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 10 Jun 2025 19:36:55 +0700 Subject: [PATCH 03/16] Need to separate the renaming to prevent failure when one of the file doesn't existed yet. --- .github/workflows/build.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a3b58a3b9d..3d59bebd75 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -318,12 +318,15 @@ jobs: name: ${{ matrix.id }} build path: ppsspp/ - - name: Create macOS & iOS release - if: github.ref_type == 'tag' && runner.os == 'macOS' && (matrix.extra == 'test' || matrix.extra == 'ios') + - name: Create iOS release + if: github.ref_type == 'tag' && runner.os == 'macOS' && matrix.extra == 'ios' working-directory: ppsspp - run: | - mv PPSSPPSDL.zip PPSSPPSDL-macOS-${GITHUB_REF_NAME}.zip - mv PPSSPP.ipa PPSSPP-iOS-${GITHUB_REF_NAME}.ipa + run: mv PPSSPP.ipa PPSSPP-iOS-${GITHUB_REF_NAME}.ipa + + - name: Create macOS release + if: github.ref_type == 'tag' && runner.os == 'macOS' && matrix.extra == 'test' + working-directory: ppsspp + run: mv PPSSPPSDL.zip PPSSPPSDL-macOS-${GITHUB_REF_NAME}.zip - name: Upload macOS & iOS release uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2 From 50a16206dcb5c95380e02e39be2445c509a989a7 Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Wed, 11 Jun 2025 02:52:11 +0700 Subject: [PATCH 04/16] Updated as adviced by Pesa. --- .github/workflows/build.yml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3d59bebd75..642329d2da 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -225,16 +225,15 @@ jobs: sudo apt-get install libsdl2-dev libgl1-mesa-dev libglu1-mesa-dev libsdl2-ttf-dev libfontconfig1-dev - name: Create iOS Version.txt file - if: runner.os == 'macOS' && matrix.extra == 'ios' + if: matrix.id == 'ios' run: | # Create Version.txt file (should probably do this during building process) - mkdir build-ios - mkdir build-ios/PPSSPP.app + mkdir -p build-ios/PPSSPP.app GIT_VERSION=$(git describe --always --tags) - echo $(echo $GIT_VERSION | cut -c 2-) > build-ios/PPSSPP.app/Version.txt + echo ${GIT_VERSION#v} > build-ios/PPSSPP.app/Version.txt - name: Create macOS & iOS git-version.cpp for tagged release - if: github.ref_type == 'tag' && runner.os == 'macOS' && (matrix.extra == 'test' || matrix.extra == 'ios') + if: github.ref_type == 'tag' && (matrix.id == 'macos' || matrix.id == 'ios') run: | echo "const char *PPSSPP_GIT_VERSION = \"${GITHUB_REF_NAME}\";" > git-version.cpp echo "#define PPSSPP_GIT_VERSION_NO_UPDATE 1" >> git-version.cpp @@ -313,24 +312,24 @@ jobs: - name: Upload iOS build uses: actions/upload-artifact@v4 - if: matrix.extra == 'ios' + if: matrix.id == 'ios' with: name: ${{ matrix.id }} build path: ppsspp/ - name: Create iOS release - if: github.ref_type == 'tag' && runner.os == 'macOS' && matrix.extra == 'ios' + if: github.ref_type == 'tag' && matrix.id == 'ios' working-directory: ppsspp run: mv PPSSPP.ipa PPSSPP-iOS-${GITHUB_REF_NAME}.ipa - name: Create macOS release - if: github.ref_type == 'tag' && runner.os == 'macOS' && matrix.extra == 'test' + if: github.ref_type == 'tag' && matrix.id == 'macos' working-directory: ppsspp run: mv PPSSPPSDL.zip PPSSPPSDL-macOS-${GITHUB_REF_NAME}.zip - name: Upload macOS & iOS release uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2 - if: github.ref_type == 'tag' && runner.os == 'macOS' && (matrix.extra == 'test' || matrix.extra == 'ios') + if: github.ref_type == 'tag' && (matrix.id == 'macos' || matrix.id == 'ios') with: files: | ppsspp/*.zip From 4422a7f61522b77a2ccf90823b73716ce8556768 Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Wed, 11 Jun 2025 05:37:31 +0700 Subject: [PATCH 05/16] Shorter to use id than extra. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 642329d2da..707910cfe9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -268,7 +268,7 @@ jobs: ${{ matrix.args }} - name: Package build - if: matrix.extra == 'test' || matrix.extra == 'ios' + if: matrix.extra == 'test' || matrix.id == 'ios' run: | mkdir ppsspp if [ -e build*/$BUILD_CONFIGURATION/PPSSPPSDL ]; then From e0ab357bfb549de2ccb4f04cce874cf58f26df20 Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:01:26 +0700 Subject: [PATCH 06/16] Create b-ios.sh --- b-ios.sh | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 b-ios.sh diff --git a/b-ios.sh b/b-ios.sh new file mode 100644 index 0000000000..9dede812cc --- /dev/null +++ b/b-ios.sh @@ -0,0 +1,139 @@ +#!/bin/sh + +set -ex + +# Assuming we're at the ppsspp (repo's root) directory +mkdir -p build # For the final IPA & DEB file +#rm -rf build-ios # Should we started from scratch instead of continuing from cache? +mkdir -p build-ios +cd build-ios +rm -rf PPSSPP.app # There seems to be an existing symlink, may be from ccache? We don't want to include old stuff that might be removed to be included in the final IPA file. +# It seems xcodebuild is looking for "git-version.cpp" file inside "build-ios" directory instead of at repo's root dir. +echo "const char *PPSSPP_GIT_VERSION = \"$(git describe --always --tags)\";" > git-version.cpp +echo "#define PPSSPP_GIT_VERSION_NO_UPDATE 1" >> git-version.cpp +# Generate exportOptions.plist for xcodebuild +echo ' + + + + method + development + signingStyle + manual + +' > exportOptions.plist +# TODO: Generate a self-signed certificate (but probably not a good idea to generate a different cert all the time). Example at https://stackoverflow.com/questions/27474751/how-can-i-codesign-an-app-without-being-in-the-mac-developer-program/53562496#53562496 + +# Should we run this script first before building? (Seems to only generate icons for Gold version) +#brew install pillow #python3 -m pip install --upgrade --break-system-packages --user Pillow +#pushd ../ios/assets.xcassets/AppIcon.appiconset +#python3 ../../generate_icons.py +#ls -la +#popd + +# There are 2 ways to build PPSSPP for iOS, using make or xcodebuild +# Generate xcodeproject (only needed when building using xcode, similar to ./b.sh --ios-xcode) +cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/ios.cmake -GXcode .. +# Build PPSSPP using xcode +#xcodebuild clean build -project PPSSPP.xcodeproj CODE_SIGNING_ALLOWED=NO -sdk iphoneos -configuration Release +xcodebuild -project PPSSPP.xcodeproj -scheme PPSSPP -sdk iphoneos -configuration Release clean build archive -archivePath ./build/PPSSPP.xcarchive CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO #CODE_SIGN_IDENTITY="iPhone Distribution: Your NAME / Company (TeamID)" #PROVISIONING_PROFILE="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" +# Export IPA file from xcarchive (probably only works with signed build) +#xcodebuild -exportArchive -archivePath ./build/PPSSPP.xcarchive -exportPath ./build -exportOptionsPlist exportOptions.plist +# This folder only exist when building with xcodebuild +if [ -e Release-iphoneos ]; then + # It seems there is an existing (from ccache?) PPSSPP.app symlink, so we copy & overwrites the content instead of the symlink, to the same location with what make use. + mkdir -p PPSSPP.app + cp -Rfa Release-iphoneos/PPSSPP.app/. PPSSPP.app/ +fi + +# Build PPSSPP using Makefile (Might have missing stuff like Icons, similar to ./b.sh --ios) +#cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/ios.cmake .. +#make -j4 + +# When building with Makefile, we're missing these icon image files (may be need to run generate_icons.py first?). Let's use whatever we have (wrong size tho) +#cp -a assets/icon_regular_72.png Payload/PPSSPP.app/AppIcon60x60@2x.png +#cp -a assets/icon_regular_72.png Payload/PPSSPP.app/AppIcon76x76@2x~ipad.png + +cp ../ext/vulkan/iOS/Frameworks/libMoltenVK.dylib PPSSPP.app/Frameworks +ln -s ./ Payload +#ldid -w -S -IlibMoltenVK -K../../certificate.p12 -Upassword PPSSPP.app/Frameworks/libMoltenVK.dylib +if [ -e PPSSPP.app/Frameworks/libMoltenVK.dylib ]; then + echo "Signing PPSSPP.app/Frameworks/libMoltenVK.dylib ..." + ldid -S -IlibMoltenVK PPSSPP.app/Frameworks/libMoltenVK.dylib +fi + +echo ' + + + + platform-application + + com.apple.private.security.no-container + + com.apple.security.iokit-user-client-class + + AGXDeviceUserClient + IOMobileFramebufferUserClient + IOSurfaceRootUserClient + + get-task-allow + + +' > ent.xml +#ldid -S ent.xml Payload/PPSSPP.app/PPSSPP +#ldid -w -Sent.xml -K../../certificate.p12 -Upassword PPSSPP.app +if [ -e PPSSPP.app/PPSSPP ]; then + echo "Signing PPSSPP.app/PPSSPP ..." + ldid -Sent.xml PPSSPP.app/PPSSPP +fi +version_number=`echo "$(git describe --tags --match="v*" | sed -e 's@-\([^-]*\)-\([^-]*\)$@-\1-\2@;s@^v@@;s@%@~@g')"` +echo ${version_number} > PPSSPP.app/Version.txt +sudo -S chown -R 1004:3 Payload + +# Put the xcarchive file in the artifact too, just to examine the contents +#cp -a build/PPSSPP.xcarchive ../build/ + +echo "Making ipa ..." +zip -r9 ../build/PPSSPP_v${version_number}.ipa Payload/PPSSPP.app +echo "IPA DONE :)" + +echo "Making deb ..." +package_name="org.ppsspp.ppsspp-dev-latest_v${version_number}_iphoneos-arm" +mkdir $package_name +mkdir ${package_name}/DEBIAN +# TODO: Generate Preferences folder and it's contents too. Example of the contents at https://github.com/Halo-Michael/ppsspp-builder/tree/master/Preferences + +echo "Package: org.ppsspp.ppsspp-dev-latest +Name: PPSSPP (Dev-Latest) +Architecture: iphoneos-arm +Description: A PSP emulator +Icon: file:///Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png +Homepage: https://build.ppsspp.org/ +Conflicts: com.myrepospace.theavenger.PPSSPP, net.angelxwind.ppsspp, net.angelxwind.ppsspp-testing, org.ppsspp.ppsspp, org.ppsspp.ppsspp-dev-working +Provides: com.myrepospace.theavenger.PPSSPP, net.angelxwind.ppsspp, net.angelxwind.ppsspp-testing +Replaces: com.myrepospace.theavenger.PPSSPP, net.angelxwind.ppsspp, net.angelxwind.ppsspp-testing +Depiction: https://cydia.ppsspp.org/?page/org.ppsspp.ppsspp-dev-latest +Maintainer: Henrik Rydgård +Author: Henrik Rydgårdq +Section: Games +Version: 0v${version_number} +" > ${package_name}/DEBIAN/control +chmod 0755 ${package_name}/DEBIAN/control +mkdir ${package_name}/Library +mkdir ${package_name}/Library/PPSSPPRepoIcons +if [ -e ../ios/org.ppsspp.ppsspp.png ]; then + cp ../ios/org.ppsspp.ppsspp.png ${package_name}/Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png # 120x120 pixels? (ie. 60x60@2x) + chmod 0755 ${package_name}/Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png +fi +mkdir ${package_name}/Library/PreferenceLoader +if [ -e ../ios/Preferences ]; then + cp -a ../ios/Preferences ${package_name}/Library/PreferenceLoader/ +fi +mkdir ${package_name}/Applications +cp -a PPSSPP.app ${package_name}/Applications/PPSSPP.app +sudo -S chown -R 1004:3 ${package_name} +sudo -S dpkg -b ${package_name} ../build/${package_name}.deb +sudo -S rm -r ${package_name} +echo "User = $USER" +sudo -S chown $USER ../build/${package_name}.deb +echo "Done, you should get the ipa and deb now :)" From 7a7fa245018c502eb0d835e9793a0870a377548b Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:20:34 +0700 Subject: [PATCH 07/16] Use b-ios.sh to build xcodeproj --- .github/workflows/build.yml | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 707910cfe9..e1e4659bc8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -188,7 +188,7 @@ jobs: extra: ios cc: clang cxx: clang++ - args: ./b.sh --ios + args: chmod +x b-ios.sh && ./b-ios.sh id: ios runs-on: ${{ matrix.os }} @@ -224,6 +224,17 @@ jobs: sudo apt-get update -y -qq sudo apt-get install libsdl2-dev libgl1-mesa-dev libglu1-mesa-dev libsdl2-ttf-dev libfontconfig1-dev + - name: Install iOS dependencies + if: matrix.id == 'ios' + run: | + brew install ldid dpkg pillow + # Check Xcode version + xcodebuild -version + # List available Xcode versions + ls /Applications | grep Xcode + # Select a specific Xcode version. The recommended Xcode version is 9.4.1 according to https://github.com/Halo-Michael/ppsspp-builder + #sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer + - name: Create iOS Version.txt file if: matrix.id == 'ios' run: | @@ -270,7 +281,7 @@ jobs: - name: Package build if: matrix.extra == 'test' || matrix.id == 'ios' run: | - mkdir ppsspp + mkdir -p ppsspp if [ -e build*/$BUILD_CONFIGURATION/PPSSPPSDL ]; then cp build*/$BUILD_CONFIGURATION/PPSSPPSDL ppsspp/ elif [ -e build*/PPSSPPSDL.app ]; then @@ -280,14 +291,12 @@ jobs: zip -qry PPSSPPSDL.zip PPSSPPSDL.app rm -rf PPSSPPSDL.app popd - elif [ -e build*/PPSSPP.app ]; then - mkdir ppsspp/Payload - cp -a build*/PPSSPP.app ppsspp/Payload - # GitHub Actions zipping kills symlinks and permissions. - pushd ppsspp - zip -qry PPSSPP.ipa Payload - rm -rf Payload - popd + elif [ -e build-ios/PPSSPP.app ]; then + # Get the final files generated by b-ios.h script + find build -name 'PPSSPP*.ipa' -exec cp -a '{}' ppsspp/ \; + find build -name 'PPSSPP*.xcarchive' -exec cp -a '{}' ppsspp/ \; + find build -name 'PPSSPP*.deb' -exec cp -a '{}' ppsspp/ \; + find build -name 'org.ppsspp*.deb' -exec cp -a '{}' ppsspp/ \; elif [ -e build*/PPSSPPSDL ]; then cp build*/PPSSPPSDL ppsspp/ cp -r assets ppsspp/assets @@ -334,6 +343,8 @@ jobs: files: | ppsspp/*.zip ppsspp/*.ipa + ppsspp/*.deb + ppsspp/*.xcarchive body: > PPSSPP is a cross-platform PSP emulator. Visit PPSSPP [official website](https://ppsspp.org) From c02da6735a85f7dfc9bf7f7371328bc66576d05c Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:39:28 +0700 Subject: [PATCH 08/16] We don't need to rename the IPA anymore --- .github/workflows/build.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e1e4659bc8..c7f17e7eea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -326,11 +326,6 @@ jobs: name: ${{ matrix.id }} build path: ppsspp/ - - name: Create iOS release - if: github.ref_type == 'tag' && matrix.id == 'ios' - working-directory: ppsspp - run: mv PPSSPP.ipa PPSSPP-iOS-${GITHUB_REF_NAME}.ipa - - name: Create macOS release if: github.ref_type == 'tag' && matrix.id == 'macos' working-directory: ppsspp From 104b021db0be4d9b04d7864c77044a0a9d5df04a Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Sat, 14 Jun 2025 23:55:00 +0700 Subject: [PATCH 09/16] Let's use AppIcon60x60@2x.png as alternative --- b-ios.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/b-ios.sh b/b-ios.sh index 9dede812cc..4529ee2e84 100644 --- a/b-ios.sh +++ b/b-ios.sh @@ -121,8 +121,13 @@ Version: 0v${version_number} chmod 0755 ${package_name}/DEBIAN/control mkdir ${package_name}/Library mkdir ${package_name}/Library/PPSSPPRepoIcons +# Seems to be 120x120 pixels (ie. 60x60@2x ?) if [ -e ../ios/org.ppsspp.ppsspp.png ]; then - cp ../ios/org.ppsspp.ppsspp.png ${package_name}/Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png # 120x120 pixels? (ie. 60x60@2x) + cp ../ios/org.ppsspp.ppsspp.png ${package_name}/Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png + chmod 0755 ${package_name}/Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png +# Let's use AppIcon60x60@2x.png as alternative +elif [ -e 'PPSSPP.app/AppIcon60x60@2x.png' ]; then + cp 'PPSSPP.app/AppIcon60x60@2x.png' ${package_name}/Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png chmod 0755 ${package_name}/Library/PPSSPPRepoIcons/org.ppsspp.ppsspp-dev-latest.png fi mkdir ${package_name}/Library/PreferenceLoader From 4684edb032cc28e1d35579f564d59f0460ec4e90 Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Sun, 15 Jun 2025 00:20:18 +0700 Subject: [PATCH 10/16] Use the same naming format with macOS release --- b-ios.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b-ios.sh b/b-ios.sh index 4529ee2e84..22d098f103 100644 --- a/b-ios.sh +++ b/b-ios.sh @@ -94,7 +94,7 @@ sudo -S chown -R 1004:3 Payload #cp -a build/PPSSPP.xcarchive ../build/ echo "Making ipa ..." -zip -r9 ../build/PPSSPP_v${version_number}.ipa Payload/PPSSPP.app +zip -r9 ../build/PPSSPP-iOS-v${version_number}.ipa Payload/PPSSPP.app echo "IPA DONE :)" echo "Making deb ..." From 29f2bba65f3375bf7b4fa74dd60ca189a244f5ef Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Sun, 15 Jun 2025 06:09:03 +0700 Subject: [PATCH 11/16] Exclude xcarchive from release, it's not for end users. --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c7f17e7eea..e7a7072f1b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -339,7 +339,6 @@ jobs: ppsspp/*.zip ppsspp/*.ipa ppsspp/*.deb - ppsspp/*.xcarchive body: > PPSSPP is a cross-platform PSP emulator. Visit PPSSPP [official website](https://ppsspp.org) From 2f0f19003454b452501d024275e51d85b1e3b706 Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 17 Jun 2025 03:12:00 +0700 Subject: [PATCH 12/16] Added more entitlement keys. --- b-ios.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/b-ios.sh b/b-ios.sh index 22d098f103..e8e9549a24 100644 --- a/b-ios.sh +++ b/b-ios.sh @@ -70,6 +70,10 @@ echo ' com.apple.private.security.no-container + com.apple.private.security.no-sandbox + + com.apple.developer.kernel.extended-virtual-addressing + com.apple.security.iokit-user-client-class AGXDeviceUserClient From c7a8dc4380aab4d54c8acff9a9a0e89db2a3931a Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 17 Jun 2025 03:53:19 +0700 Subject: [PATCH 13/16] This key also needed when sandbox is disabled. --- b-ios.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/b-ios.sh b/b-ios.sh index e8e9549a24..1c4b418f5b 100644 --- a/b-ios.sh +++ b/b-ios.sh @@ -68,6 +68,8 @@ echo ' platform-application + com.apple.private.security.storage.AppDataContainers + com.apple.private.security.no-container com.apple.private.security.no-sandbox From bcee242d36d1cfc3c72e51a746bc57c9a7579bba Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 17 Jun 2025 03:58:31 +0700 Subject: [PATCH 14/16] This key may also affects sandbox. --- b-ios.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/b-ios.sh b/b-ios.sh index 1c4b418f5b..1416e3f391 100644 --- a/b-ios.sh +++ b/b-ios.sh @@ -70,6 +70,8 @@ echo ' com.apple.private.security.storage.AppDataContainers + com.apple.private.security.container-required + com.apple.private.security.no-container com.apple.private.security.no-sandbox From 03d6ba6afc834dc326419447058921c20fde467c Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 17 Jun 2025 04:07:20 +0700 Subject: [PATCH 15/16] This key may also be needed when sandbox is disabled. --- b-ios.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/b-ios.sh b/b-ios.sh index 1416e3f391..11fe0a2319 100644 --- a/b-ios.sh +++ b/b-ios.sh @@ -70,6 +70,8 @@ echo ' com.apple.private.security.storage.AppDataContainers + com.apple.private.security.storage.MobileDocuments + com.apple.private.security.container-required com.apple.private.security.no-container From 2d88c51cf3930168bd0c3ca3e7e946feab50f4da Mon Sep 17 00:00:00 2001 From: AdamN <7974720+anr2me@users.noreply.github.com> Date: Tue, 17 Jun 2025 04:13:12 +0700 Subject: [PATCH 16/16] Not sure about this, but Dolphin-ios have this key, regardless for trollstore or not. --- b-ios.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/b-ios.sh b/b-ios.sh index 11fe0a2319..a7acd7bad7 100644 --- a/b-ios.sh +++ b/b-ios.sh @@ -80,6 +80,8 @@ echo ' com.apple.developer.kernel.extended-virtual-addressing + com.apple.developer.kernel.increased-memory-limit + com.apple.security.iokit-user-client-class AGXDeviceUserClient