mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
Bumps the ci-deps group with 2 updates in the / directory: [actions/cache](https://github.com/actions/cache) and [indygreg/apple-code-sign-action](https://github.com/indygreg/apple-code-sign-action). Updates `actions/cache` from 5 to 6 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/releases">actions/cache's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update packages, migrate to ESM by <a href="https://github.com/Samirat"><code>@Samirat</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1760">actions/cache#1760</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v6.0.0">https://github.com/actions/cache/compare/v5...v6.0.0</a></p> <h2>v5.1.0</h2> <h2>What's Changed</h2> <ul> <li>Bump <code>@actions/cache</code> to v5.1.0 - handle read-only cache access by <a href="https://github.com/jasongin"><code>@jasongin</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1775">actions/cache#1775</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.1.0">https://github.com/actions/cache/compare/v5...v5.1.0</a></p> <h2>v5.0.5</h2> <h2>What's Changed</h2> <ul> <li>Update ts-http-runtime dependency by <a href="https://github.com/yacaovsnc"><code>@yacaovsnc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1747">actions/cache#1747</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.5">https://github.com/actions/cache/compare/v5...v5.0.5</a></p> <h2>v5.0.4</h2> <h2>What's Changed</h2> <ul> <li>Add release instructions and update maintainer docs by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1696">actions/cache#1696</a></li> <li>Potential fix for code scanning alert no. 52: Workflow does not contain permissions by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1697">actions/cache#1697</a></li> <li>Fix workflow permissions and cleanup workflow names / formatting by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1699">actions/cache#1699</a></li> <li>docs: Update examples to use the latest version by <a href="https://github.com/XZTDean"><code>@XZTDean</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li> <li>Fix proxy integration tests by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1701">actions/cache#1701</a></li> <li>Fix cache key in examples.md for bun.lock by <a href="https://github.com/RyPeck"><code>@RyPeck</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li> <li>Update dependencies & patch security vulnerabilities by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1738">actions/cache#1738</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/XZTDean"><code>@XZTDean</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li> <li><a href="https://github.com/RyPeck"><code>@RyPeck</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.4">https://github.com/actions/cache/compare/v5...v5.0.4</a></p> <h2>v5.0.3</h2> <h2>What's Changed</h2> <ul> <li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li> <li>Bump <code>@actions/core</code> to v2.0.3</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.3">https://github.com/actions/cache/compare/v5...v5.0.3</a></p> <h2>v.5.0.2</h2> <h1>v5.0.2</h1> <h2>What's Changed</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's changelog</a>.</em></p> <blockquote> <h1>Releases</h1> <h2>How to prepare a release</h2> <blockquote> <p>[!NOTE] Relevant for maintainers with write access only.</p> </blockquote> <ol> <li>Switch to a new branch from <code>main</code>.</li> <li>Run <code>npm test</code> to ensure all tests are passing.</li> <li>Update the version in <a href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li> <li>Run <code>npm run build</code> to update the compiled files.</li> <li>Update this <a href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a> with the new version and changes in the <code>## Changelog</code> section.</li> <li>Run <code>licensed cache</code> to update the license report.</li> <li>Run <code>licensed status</code> and resolve any warnings by updating the <a href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a> file with the exceptions.</li> <li>Commit your changes and push your branch upstream.</li> <li>Open a pull request against <code>main</code> and get it reviewed and merged.</li> <li>Draft a new release <a href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a> use the same version number used in <code>package.json</code> <ol> <li>Create a new tag with the version number.</li> <li>Auto generate release notes and update them to match the changes you made in <code>RELEASES.md</code>.</li> <li>Toggle the set as the latest release option.</li> <li>Publish the release.</li> </ol> </li> <li>Navigate to <a href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a> <ol> <li>There should be a workflow run queued with the same version number.</li> <li>Approve the run to publish the new version and update the major tags for this action.</li> </ol> </li> </ol> <h2>Changelog</h2> <h3>6.1.0</h3> <ul> <li>Bump <code>@actions/cache</code> to v6.1.0 to pick up <a href="https://redirect.github.com/actions/toolkit/pull/2435">actions/toolkit#2435 Handle cache write error due to read-only token</a></li> <li>Switch redundant "Cache save failed" warning to debug log in save-only</li> </ul> <h3>6.0.0</h3> <ul> <li>Updated <code>@actions/cache</code> to ^6.0.1, <code>@actions/core</code> to ^3.0.1, <code>@actions/exec</code> to ^3.0.0, <code>@actions/io</code> to ^3.0.2</li> <li>Migrated to ESM module system</li> <li>Upgraded Jest to v30 and test infrastructure to be ESM compatible</li> </ul> <h3>5.0.4</h3> <ul> <li>Bump <code>minimatch</code> to v3.1.5 (fixes ReDoS via globstar patterns)</li> <li>Bump <code>undici</code> to v6.24.1 (WebSocket decompression bomb protection, header validation fixes)</li> <li>Bump <code>fast-xml-parser</code> to v5.5.6</li> </ul> <h3>5.0.3</h3> <ul> <li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li> <li>Bump <code>@actions/core</code> to v2.0.3</li> </ul> <h3>5.0.2</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/cache/commit/55cc8345863c7cc4c66a329aec7e433d2d1c52a9"><code>55cc834</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1768">#1768</a> from jasongin/readonly-cache</li> <li><a href="https://github.com/actions/cache/commit/d8cd72f230726cdf4457ebb61ec1b593a8d12337"><code>d8cd72f</code></a> Bump <code>@actions/cache</code> to v6.1.0 - handle cache write error due to RO token</li> <li><a href="https://github.com/actions/cache/commit/2c8a9bd7457de244a408f35966fab2fb45fda9c8"><code>2c8a9bd</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1760">#1760</a> from actions/samirat/esm_migration_and_package_update</li> <li><a href="https://github.com/actions/cache/commit/e9b91fdc3fea7d79165fceb79042ef45c2d51023"><code>e9b91fd</code></a> Prettier fixes</li> <li><a href="https://github.com/actions/cache/commit/e4884b8ff7f92ef6b52c79eda480bbc86e685adb"><code>e4884b8</code></a> Rebuild dist</li> <li><a href="https://github.com/actions/cache/commit/10baf0191a3c426ea0fa4a3253a5c04233b6e18f"><code>10baf01</code></a> Fixed licenses</li> <li><a href="https://github.com/actions/cache/commit/e39b386c9004d72a15d864ade8c0b3a702d47a37"><code>e39b386</code></a> Fix test mock return order</li> <li><a href="https://github.com/actions/cache/commit/b6928203372a8571ff984c0c883ef3a1adfb0c06"><code>b692820</code></a> PR feedback</li> <li><a href="https://github.com/actions/cache/commit/60749128a44d25d3c520a489e576380cf00ff3f1"><code>6074912</code></a> Rebuild dist bundles as ESM to match type:module</li> <li><a href="https://github.com/actions/cache/commit/5a912e8b4af820fa082a0e75cfd2c782f8fbfe0e"><code>5a912e8</code></a> Fix lint and jest issues</li> <li>Additional commits viewable in <a href="https://github.com/actions/cache/compare/v5...v6">compare view</a></li> </ul> </details> <br /> Updates `indygreg/apple-code-sign-action` from 1.1 to 1.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/indygreg/apple-code-sign-action/releases">indygreg/apple-code-sign-action's releases</a>.</em></p> <blockquote> <h2>v1.2</h2> <ul> <li>Use Node 24</li> <li>Upgraded a bunch of JS packages and GitHub Actions to newer versions.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/5e7a4a01fe4dffe948ef3bcf1f4538d963cb0c72"><code>5e7a4a0</code></a> ci: try to get superlint working</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/7f0907c84f8b68c8f1984ff263d324c1cce7d5fe"><code>7f0907c</code></a> Sync linter CI job with reference repo</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/ff12e78172ee6d6ef5795e283781716beafa3218"><code>ff12e78</code></a> Remove exports from index.js</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/770da749199c68745f62c806c8f124d9a2460b18"><code>770da74</code></a> More export fixes</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/d518541e903902dbfbbad25890ec19b27dffea15"><code>d518541</code></a> Fix import in index.js</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/438214a5fbcb443aefaa10b3c9224f872cfe27fd"><code>438214a</code></a> use <code>import</code> instead of <code>require</code></li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/264357680eaff3f84804a0f31edb9137b57bcc34"><code>2643576</code></a> Modernize action</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/7c7d8b0a07e0a8550c0785566284e4acda0cf836"><code>7c7d8b0</code></a> node: upgrade vercel/ncc to latest</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/36ea96e14b7799106808f4e2e6811b84482faa64"><code>36ea96e</code></a> node: make semver compatible package updates</li> <li><a href="https://github.com/indygreg/apple-code-sign-action/commit/379f0ae50edc7e725f0a29cb6e5c9d90f911124a"><code>379f0ae</code></a> build(deps): bump actions/checkout from 6 to 7 (<a href="https://redirect.github.com/indygreg/apple-code-sign-action/issues/79">#79</a>)</li> <li>Additional commits viewable in <a href="https://github.com/indygreg/apple-code-sign-action/compare/44d0985b7f4363198e80b6fea63ac3e9dd3e9957...5e7a4a01fe4dffe948ef3bcf1f4538d963cb0c72">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
219 lines
7.7 KiB
YAML
219 lines
7.7 KiB
YAML
name: MacOS Build Steps
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
jobName:
|
|
required: true
|
|
type: string
|
|
artifactPrefixName:
|
|
required: true
|
|
type: string
|
|
os:
|
|
required: false
|
|
type: string
|
|
default: macos-26
|
|
arch:
|
|
required: false
|
|
type: string
|
|
default: x86-64
|
|
patchesUrl:
|
|
required: false
|
|
type: string
|
|
default: https://github.com/PCSX2/pcsx2_patches/releases/latest/download
|
|
fetchTags:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
stableBuild:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
sign_and_notarize:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
|
|
jobs:
|
|
build_macos:
|
|
name: ${{ inputs.jobName }}
|
|
runs-on: ${{ inputs.os }}
|
|
# Set some sort of timeout in the event of run-away builds. We are limited on concurrent jobs so, get rid of them.
|
|
timeout-minutes: 120
|
|
env:
|
|
POWERSHELL_TELEMETRY_OPTOUT: 1
|
|
CCACHE_BASEDIR: ${{ github.workspace }}
|
|
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
|
CCACHE_COMPRESS: true
|
|
CCACHE_COMPRESSLEVEL: 9
|
|
CCACHE_MAXSIZE: 100M
|
|
# Only way to use a secret in an if statement
|
|
SIGN_KEY: ${{ secrets.APPLE_SIGN_P12_B64 }}
|
|
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v7
|
|
|
|
# actions/checkout elides tags, fetch them primarily for releases
|
|
- name: Fetch Tags
|
|
if: ${{ inputs.fetchTags }}
|
|
run: git fetch --tags --no-recurse-submodules
|
|
|
|
- name: Add stable release identifier file
|
|
if: ${{ inputs.stableBuild == true || inputs.stableBuild == 'true' }}
|
|
shell: bash
|
|
run: |
|
|
echo "#define DEFAULT_UPDATER_CHANNEL \"stable\"" > ./pcsx2-qt/DefaultUpdaterChannel.h
|
|
cat ./pcsx2-qt/DefaultUpdaterChannel.h
|
|
|
|
- name: Use Xcode 26.2
|
|
run: sudo xcode-select -s /Applications/Xcode_26.2.app
|
|
|
|
- name: Install Metal Toolchain
|
|
run: |
|
|
for i in {1..5}; do
|
|
if xcrun metal -v; then break; fi
|
|
xcodebuild -downloadComponent MetalToolchain
|
|
done
|
|
|
|
- name: Prepare Artifact Metadata
|
|
id: artifact-metadata
|
|
shell: bash
|
|
env:
|
|
PREFIX: ${{ inputs.artifactPrefixName }}
|
|
EVENT_NAME: ${{ github.event_name }}
|
|
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
PR_NUM: ${{ github.event.pull_request.number }}
|
|
PR_SHA: ${{ github.event.pull_request.head.sha }}
|
|
run: ./.github/workflows/scripts/common/name-artifacts.sh
|
|
|
|
- name: Install Packages
|
|
env:
|
|
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
|
HOMEBREW_NO_ANALYTICS: 1
|
|
run: |
|
|
if ! brew install ccache nasm; then
|
|
brew update
|
|
brew install ccache nasm
|
|
fi
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: ~/deps
|
|
key: ${{ inputs.os }} ${{ inputs.arch }} deps ${{ hashFiles('.github/workflows/scripts/macos/*', '.github/workflows/scripts/common/*.patch') }}
|
|
|
|
- name: Build Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
run: |
|
|
.github/workflows/scripts/macos/build-dependencies${{ case(inputs.arch == 'x86-64', '', '-universal') }}.sh "$HOME/deps"
|
|
|
|
- name: Download patches
|
|
run: |
|
|
cd bin/resources
|
|
aria2c -Z "${{ inputs.patchesUrl }}/patches.zip"
|
|
|
|
# -- SETUP CCACHE - https://cristianadam.eu/20200113/speeding-up-c-plus-plus-github-actions-using-ccache/
|
|
- name: Prepare ccache timestamp
|
|
id: ccache_cache_timestamp
|
|
run: echo "timestamp=$(date -u "+%Y-%m-%d-%H;%M;%S")" >> $GITHUB_OUTPUT
|
|
|
|
- name: Cache ccache cache
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: .ccache
|
|
key: ${{ inputs.os }} ${{ inputs.arch }} ccache ${{ steps.ccache_cache_timestamp.outputs.timestamp }}
|
|
restore-keys: ${{ inputs.os }} ${{ inputs.arch }} ccache
|
|
|
|
- name: Generate CMake Files
|
|
run: |
|
|
cmake -DCMAKE_PREFIX_PATH="$HOME/deps" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_OSX_ARCHITECTURES="${{ case(inputs.arch == 'x86-64', 'x86_64', inputs.arch) }}" \
|
|
-DDISABLE_ADVANCE_SIMD=ON \
|
|
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=${{ case(inputs.arch == 'x86-64', 'ON', 'OFF') }} \
|
|
-DUSE_LINKED_FFMPEG=ON \
|
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
|
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \
|
|
-B build .
|
|
|
|
- name: Build PCSX2
|
|
working-directory: build
|
|
run: |
|
|
ccache -p
|
|
ccache -s
|
|
ccache -z
|
|
make -j$(getconf _NPROCESSORS_ONLN) # macOS doesn't use make install
|
|
ccache -s
|
|
# Ensure there's no global constructors in multi-isa files
|
|
for dir in */CMakeFiles/GS-{avx,avx2}.dir; do
|
|
if find "$dir" -name "*.o" | xargs nm | grep _GLOBAL_; then
|
|
echo "::error::Multi-isa files must not have global constructors!"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
- name: Build GSRunner
|
|
if: inputs.arch != 'x86-64'
|
|
working-directory: build
|
|
run: make -j$(getconf _NPROCESSORS_ONLN) pcsx2-gsrunner
|
|
|
|
- name: Run Tests
|
|
working-directory: build
|
|
run: make -j$(getconf _NPROCESSORS_ONLN) unittests
|
|
|
|
- name: Prepare Build Artifacts
|
|
run: |
|
|
mv build/pcsx2*/PCSX2.app PCSX2.app
|
|
|
|
- name: Pull the Signing Keys and Notarization Credentials
|
|
if: ${{ inputs.sign_and_notarize == true && env.SIGN_KEY }}
|
|
run: |
|
|
echo "${{ secrets.APPLE_SIGN_P12_B64 }}" | base64 -d > cert.p12
|
|
echo "${{ secrets.APPLE_APPSTORECONNECT_CFG }}" | base64 -d > key.json
|
|
|
|
- name: Sign the Application
|
|
if: ${{ inputs.sign_and_notarize == true && env.SIGN_KEY }}
|
|
uses: indygreg/apple-code-sign-action@5e7a4a01fe4dffe948ef3bcf1f4538d963cb0c72
|
|
with:
|
|
input_path: 'PCSX2.app'
|
|
p12_file: cert.p12
|
|
p12_password: "${{ secrets.APPLE_SIGN_P12_PASS }}"
|
|
sign_args: |
|
|
--for-notarization
|
|
--code-signature-flags=runtime
|
|
--entitlements-xml-file=pcsx2/Resources/PCSX2.entitlements
|
|
notarize: true
|
|
# max_wait_seconds is only present on my fork located at F0bes/apple-code-sign-action@demo4
|
|
# If we are timing out we should switch to the newest upstream (if I get it upstreamed)
|
|
# or use my fork.
|
|
# max_wait_seconds: '2000'
|
|
staple: true
|
|
# Generated using rcodesign
|
|
# Despite what the docs say, I found that this file is required and I had 0 luck
|
|
# passing the issuer id, key, etc through arguments.
|
|
app_store_connect_api_key_json_file: 'key.json'
|
|
|
|
- name: Zip Build Artifacts
|
|
if: inputs.arch == 'x86-64'
|
|
run: |
|
|
TAG="$(git tag --points-at HEAD)"
|
|
if [ -z "$TAG" ]; then
|
|
APPNAME="${{ steps.artifact-metadata.outputs.artifact-name }}"
|
|
else
|
|
APPNAME="PCSX2-$TAG"
|
|
fi
|
|
mv PCSX2.app "$APPNAME.app"
|
|
tar --options xz:compression-level=9 -cvJf "${{ steps.artifact-metadata.outputs.artifact-name }}.tar.xz" "$APPNAME.app"
|
|
mkdir ci-artifacts
|
|
cp "${{ steps.artifact-metadata.outputs.artifact-name }}.tar.xz" ci-artifacts/macOS.tar.xz
|
|
|
|
- name: Upload Artifact
|
|
if: inputs.arch == 'x86-64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ steps.artifact-metadata.outputs.artifact-name }}
|
|
path: "*.tar.xz"
|