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