mirror of
https://github.com/frida/frida
synced 2026-08-13 06:26:05 -04:00
Some checks failed
CI / sdk-linux (armbe8) (push) Has been skipped
CI / sdk-linux (armhf) (push) Has been skipped
CI / toolchain-linux (arm64) (push) Failing after 2s
CI / toolchain-linux (arm64-musl) (push) Failing after 2s
CI / toolchain-linux (arm64be) (push) Failing after 2s
CI / toolchain-linux (arm64beilp32) (push) Failing after 2s
CI / toolchain-linux (armbe8) (push) Failing after 3s
CI / toolchain-linux (armhf) (push) Failing after 2s
CI / toolchain-linux (armhf-musl) (push) Failing after 3s
CI / toolchain-linux (x86) (push) Failing after 2s
CI / toolchain-linux (x86_64) (push) Failing after 1m22s
CI / toolchain-linux (x86_64-musl) (push) Failing after 50s
CI / sdk-linux (arm64) (push) Has been skipped
CI / sdk-linux (arm64-musl) (push) Has been skipped
CI / sdk-linux (arm64be) (push) Has been skipped
CI / sdk-linux (arm64beilp32) (push) Has been skipped
CI / sdk-linux (armhf-musl) (push) Has been skipped
CI / sdk-linux (mips) (push) Has been skipped
CI / sdk-linux (mips64) (push) Has been skipped
CI / sdk-linux (mips64el) (push) Has been skipped
CI / sdk-linux (mipsel) (push) Has been skipped
CI / sdk-linux (x86) (push) Has been skipped
CI / sdk-linux (x86_64) (push) Has been skipped
CI / sdk-linux (x86_64-musl) (push) Has been skipped
CI / sdk-android-32 (arm) (push) Has been skipped
CI / sdk-android-32 (x86) (push) Has been skipped
CI / sdk-android-64 (arm64) (push) Has been skipped
CI / sdk-android-64 (x86_64) (push) Has been skipped
CI / sdk-none-arm64 (push) Has been skipped
CI / sdk-none-softfloat (arm64) (push) Has been skipped
CI / sdk-none-softfloat (x86_64) (push) Has been skipped
CI / frida-linux (arm64) (push) Has been skipped
CI / frida-linux (arm64-musl) (push) Has been skipped
CI / frida-linux (arm64be) (push) Has been skipped
CI / frida-linux (armbe8) (push) Has been skipped
CI / frida-qnx (push) Has been skipped
CI / frida-gum-none-arm64 (push) Has been skipped
CI / frida-gum-none-softfloat (arm64) (push) Has been skipped
CI / frida-linux (armhf) (push) Has been skipped
CI / frida-linux (armhf-musl) (push) Has been skipped
CI / frida-linux (mips) (push) Has been skipped
CI / frida-linux (mips64) (push) Has been skipped
CI / frida-linux (mips64el) (push) Has been skipped
CI / frida-linux (mipsel) (push) Has been skipped
CI / frida-linux (x86) (push) Has been skipped
CI / frida-linux (x86_64) (push) Has been skipped
CI / frida-linux (x86_64-musl) (push) Has been skipped
CI / frida-android (arm) (push) Has been skipped
CI / frida-android (arm64) (push) Has been skipped
CI / frida-android (x86) (push) Has been skipped
CI / frida-android (x86_64) (push) Has been skipped
CI / frida-barebone-agent-none-arm64 (push) Has been skipped
CI / frida-gum-none-softfloat (x86_64) (push) Has been skipped
CI / frida-barebone-agent-none-softfloat (arm64, binutils-aarch64-linux-gnu, arm64, aarch64-unknown-none, aarch64-linux-gnu-) (push) Has been skipped
CI / frida-barebone-agent-none-softfloat (x86_64, , x86, x86_64-unknown-none, ) (push) Has been skipped
CI / package-linux (arm64) (push) Failing after 0s
CI / package-linux (arm64-musl) (push) Failing after 0s
CI / package-linux (arm64be) (push) Failing after 1s
CI / package-linux (armhf) (push) Failing after 0s
CI / package-linux (armbe8) (push) Failing after 0s
CI / package-linux (armhf-musl) (push) Failing after 0s
CI / package-linux (mips) (push) Failing after 0s
CI / package-linux (mips64el) (push) Failing after 0s
CI / package-linux (mipsel) (push) Failing after 0s
CI / package-linux (x86_64) (push) Failing after 0s
CI / package-linux (x86_64-musl) (push) Failing after 0s
CI / package-android (arm) (push) Failing after 0s
CI / package-android (x86) (push) Failing after 0s
CI / package-android (x86_64) (push) Failing after 0s
CI / package-qnx (armeabi) (push) Failing after 0s
CI / package-none-arm64 (push) Failing after 0s
CI / package-none-softfloat (arm64) (push) Failing after 0s
CI / package-none-softfloat (x86_64) (push) Failing after 0s
CI / package-linux (mips64) (push) Failing after 0s
CI / package-linux (x86) (push) Failing after 0s
CI / package-android (arm64) (push) Failing after 0s
CI / toolchain-windows (arm64) (push) Has been cancelled
CI / toolchain-windows (x86) (push) Has been cancelled
CI / toolchain-macos (arm64) (push) Has been cancelled
CI / toolchain-macos (x86_64) (push) Has been cancelled
CI / sdk-macos (arm64e) (push) Has been cancelled
CI / sdk-macos (x86_64) (push) Has been cancelled
CI / sdk-ios (arm64) (push) Has been cancelled
CI / sdk-ios (arm64-simulator) (push) Has been cancelled
CI / sdk-ios (arm64e) (push) Has been cancelled
CI / sdk-ios (x86_64-simulator) (push) Has been cancelled
CI / sdk-watchos (arm64) (push) Has been cancelled
CI / sdk-watchos (arm64-simulator) (push) Has been cancelled
CI / sdk-tvos (arm64) (push) Has been cancelled
CI / sdk-tvos (arm64-simulator) (push) Has been cancelled
CI / publish-prod (push) Has been cancelled
CI / publish-dev (push) Has been cancelled
CI / assemble-ios-assets (push) Has been cancelled
CI / assemble-tvos-assets (push) Has been cancelled
CI / package-apple-universal (push) Has been cancelled
CI / package-windows (arm64) (push) Has been cancelled
CI / package-windows (x86) (push) Has been cancelled
CI / package-windows (x86_64) (push) Has been cancelled
CI / package-windows-sfx (x86) (push) Has been cancelled
CI / package-windows-sfx (x86_64) (push) Has been cancelled
CI / package-macos (arm64) (push) Has been cancelled
CI / package-macos (arm64e) (push) Has been cancelled
CI / package-macos (x86_64) (push) Has been cancelled
CI / package-ios (arm64) (push) Has been cancelled
CI / package-ios (arm64-simulator) (push) Has been cancelled
CI / package-ios (arm64e) (push) Has been cancelled
CI / package-ios (x86_64-simulator) (push) Has been cancelled
CI / package-watchos (arm64) (push) Has been cancelled
CI / package-watchos (arm64-simulator) (push) Has been cancelled
CI / package-tvos (arm64) (push) Has been cancelled
CI / package-tvos (arm64-simulator) (push) Has been cancelled
CI / frida-windows-intel (x86, mingw-w64-i686-gcc, MINGW32) (push) Has been cancelled
CI / frida-windows-intel (x86_64, mingw-w64-x86_64-gcc, MINGW64) (push) Has been cancelled
CI / frida-windows (push) Has been cancelled
CI / frida-macos (arm64) (push) Has been cancelled
CI / frida-macos (arm64e) (push) Has been cancelled
CI / frida-macos (x86_64) (push) Has been cancelled
CI / frida-ios (arm64) (push) Has been cancelled
CI / frida-ios (arm64-simulator) (push) Has been cancelled
CI / frida-ios (arm64e) (push) Has been cancelled
CI / frida-ios (x86_64-simulator) (push) Has been cancelled
CI / frida-watchos (arm64) (push) Has been cancelled
CI / frida-watchos (arm64-simulator) (push) Has been cancelled
CI / frida-tvos (arm64) (push) Has been cancelled
CI / frida-tvos (arm64-simulator) (push) Has been cancelled
CI / sdk-windows (arm64, md) (push) Has been cancelled
CI / sdk-windows (arm64, mdd) (push) Has been cancelled
CI / sdk-windows (arm64, mt) (push) Has been cancelled
CI / sdk-windows (arm64, mtd) (push) Has been cancelled
CI / sdk-windows (x86, md) (push) Has been cancelled
CI / sdk-windows (x86, mdd) (push) Has been cancelled
CI / sdk-windows (x86, mt) (push) Has been cancelled
CI / sdk-windows (x86, mtd) (push) Has been cancelled
CI / sdk-windows (x86_64, md) (push) Has been cancelled
CI / sdk-windows (x86_64, mdd) (push) Has been cancelled
CI / sdk-windows (x86_64, mt) (push) Has been cancelled
CI / sdk-windows (x86_64, mtd) (push) Has been cancelled
CI / sdk-macos (arm64) (push) Has been cancelled
The softfloat jobs differ by an architecture and, for the agent, by which binutils and Rust target go with it, so they become one matrix each rather than a second copy. The arm64 leg gains an ARCH now that the Makefile takes the one it is built on as its default, which on a runner is x86. The prelink check learns the entry points the kmod glue reaches the Interceptor through, which it has needed since the cloak grew hooks of its own.
2417 lines
89 KiB
YAML
2417 lines
89 KiB
YAML
name: CI
|
|
|
|
on: push
|
|
|
|
env:
|
|
FRIDA_COMPILER_MOD: subprojects/frida-core/src/compiler/go.mod
|
|
ANDROID_NDK_VERSION: r29
|
|
|
|
jobs:
|
|
publish-prod:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- package-windows
|
|
- package-windows-sfx
|
|
- package-macos
|
|
- package-linux
|
|
- package-ios
|
|
- package-watchos
|
|
- package-tvos
|
|
- package-android
|
|
- package-qnx
|
|
- package-apple-universal
|
|
- package-none-arm64
|
|
- package-none-softfloat
|
|
- assemble-ios-assets
|
|
- assemble-tvos-assets
|
|
permissions:
|
|
contents: write
|
|
id-token: write
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Grab needed submodules
|
|
run: python tools/ensure-submodules.py frida-gum frida-core frida-python frida-node
|
|
- name: Install tools
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y reprepro
|
|
sudo npm install -g cloudflare-cli@5.0.5
|
|
- name: Download release assets
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
pattern: release-asset-*
|
|
merge-multiple: true
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for Windows/x86_64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-windows-x86_64
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for Windows/arm64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-windows-arm64
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for macOS/x86_64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-macos-x86_64
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for macOS/arm64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-macos-arm64
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for Linux/x86
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-linux-x86
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for Linux/x86_64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-linux-x86_64
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for Linux/armhf
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-linux-armhf
|
|
path: build/release-assets/
|
|
- name: Download Node-API prebuilds for Linux/arm64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-node-linux-arm64
|
|
path: build/release-assets/
|
|
- name: Package iOS assets
|
|
uses: ./.github/actions/package-ios-assets
|
|
- name: Package tvOS assets
|
|
uses: ./.github/actions/package-tvos-assets
|
|
- name: Rename release assets
|
|
run: .github/scripts/rename-release-assets.sh
|
|
- name: Publish release to GitHub
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
name: "Frida ${{ env.FRIDA_VERSION }}"
|
|
body: "See https://frida.re/news/ for details."
|
|
files: build/release-assets/*
|
|
- name: Prepare Python packages
|
|
uses: ./.github/actions/prepare-python-packages
|
|
- name: Publish Python bindings to pypi.org
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
with:
|
|
packages-dir: build/python-packages/
|
|
- name: Publish .deb packages
|
|
uses: ./.github/actions/publish-debs
|
|
with:
|
|
site: production
|
|
- name: Trigger frida-node publish
|
|
env:
|
|
GH_TOKEN: ${{ secrets.FRIDA_NODE_BOT_PAT }}
|
|
FRIDA_VERSION: ${{ env.FRIDA_VERSION }}
|
|
run: |
|
|
gh api repos/frida/frida-node/dispatches \
|
|
-f event_type=publish-prod-started \
|
|
-f client_payload[frida_version]="${FRIDA_VERSION}"
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 24
|
|
- name: Publish frida-gadget-ios to npm
|
|
run: |
|
|
cd releng/modules/frida-gadget-ios
|
|
npm version $FRIDA_VERSION
|
|
npm publish
|
|
- name: Trigger magisk-frida CI
|
|
run: |
|
|
curl \
|
|
-X POST \
|
|
-H "Accept: application/vnd.github.v3+json" \
|
|
-H "Authorization: token ${{ secrets.MAGISK_FRIDA_TOKEN }}" \
|
|
https://api.github.com/repos/ViRb3/magisk-frida/dispatches \
|
|
-d '{"event_type":"build"}'
|
|
|
|
publish-dev:
|
|
if: github.ref == 'refs/heads/main'
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- frida-windows
|
|
- frida-macos
|
|
- frida-linux
|
|
- assemble-ios-assets
|
|
- assemble-tvos-assets
|
|
permissions:
|
|
id-token: write
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Grab needed submodules
|
|
run: python tools/ensure-submodules.py frida-core frida-python
|
|
- name: Install tools
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y reprepro
|
|
sudo npm install -g cloudflare-cli@5.0.5
|
|
- name: Package iOS assets
|
|
uses: ./.github/actions/package-ios-assets
|
|
- name: Package tvOS assets
|
|
uses: ./.github/actions/package-tvos-assets
|
|
- name: Prepare Python packages
|
|
uses: ./.github/actions/prepare-python-packages
|
|
- name: Publish Python bindings to TestPyPI
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
with:
|
|
packages-dir: build/python-packages/
|
|
repository-url: https://test.pypi.org/legacy/
|
|
- name: Publish .deb packages
|
|
uses: ./.github/actions/publish-debs
|
|
with:
|
|
site: development
|
|
|
|
assemble-ios-assets:
|
|
runs-on: macos-latest
|
|
needs: frida-ios
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Download universal frida-server for iOS/arm64(e)
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-server-ios-arm64e
|
|
path: ios-arm64e/
|
|
- name: Create universal frida-server for iOS
|
|
run: |
|
|
lipo ios-arm64e/frida-server -thin arm64 -output frida-server-arm64
|
|
lipo ios-arm64e/frida-server -thin arm64e -output frida-server-arm64e
|
|
for arch in arm64 arm64e; do
|
|
codesign -f -s "-" --preserve-metadata=entitlements frida-server-$arch
|
|
done
|
|
./releng/mkfatmacho.py \
|
|
frida-server-ios-universal \
|
|
frida-server-arm64 \
|
|
frida-server-arm64e
|
|
- name: Download universal frida-agent for iOS/arm64(e)
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-agent-ios-arm64e
|
|
path: ios-arm64e/
|
|
- name: Sign universal frida-agent for iOS/arm64(e)
|
|
run: codesign -f -s "-" ios-arm64e/frida-agent.dylib
|
|
- name: Assemble iOS assets
|
|
run: |
|
|
mkdir -p ios-assets/usr/bin ios-assets/usr/lib/frida-1.0
|
|
mv frida-server-ios-universal ios-assets/usr/bin/frida-server
|
|
mv ios-arm64e/frida-agent.dylib ios-assets/usr/lib/frida-1.0/frida-agent.dylib
|
|
- name: Upload iOS assets
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ios-assets
|
|
path: ios-assets/*
|
|
|
|
assemble-tvos-assets:
|
|
runs-on: macos-latest
|
|
needs: frida-tvos
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Download frida-server for tvOS/arm64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-server-tvos-arm64
|
|
path: tvos-arm64/
|
|
- name: Prepare frida-server for tvOS/arm64
|
|
run: codesign -f -s "-" --preserve-metadata=entitlements tvos-arm64/frida-server
|
|
- name: Download frida-agent for tvOS/arm64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-agent-tvos-arm64
|
|
path: tvos-arm64/
|
|
- name: Prepare frida-agent for tvOS/arm64
|
|
run: codesign -f -s "-" tvos-arm64/frida-agent.dylib
|
|
- name: Assemble tvOS assets
|
|
run: |
|
|
mkdir -p tvos-assets/usr/bin tvos-assets/usr/lib/frida-1.0
|
|
mv tvos-arm64/frida-server tvos-assets/usr/bin/frida-server
|
|
mv tvos-arm64/frida-agent.dylib tvos-assets/usr/lib/frida-1.0/frida-agent.dylib
|
|
- name: Upload tvOS assets
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: tvos-assets
|
|
path: tvos-assets/*
|
|
|
|
package-apple-universal:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
runs-on: macos-latest
|
|
needs: [frida-macos, frida-ios, frida-watchos, frida-tvos]
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Download frida-gadget for macOS/x86_64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-macos-x86_64
|
|
path: macos-x86_64/
|
|
- name: Download frida-gadget for macOS/arm64(e)
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-macos-arm64e
|
|
path: macos-arm64e/
|
|
- name: Create universal frida-gadget for macOS
|
|
run: |
|
|
lipo \
|
|
macos-x86_64/frida-gadget.dylib \
|
|
macos-arm64e/frida-gadget.dylib \
|
|
-create -output frida-gadget-macos-universal.dylib
|
|
install_name_tool \
|
|
-id @executable_path/../Frameworks/FridaGadget.dylib \
|
|
frida-gadget-macos-universal.dylib
|
|
codesign \
|
|
-f -s "$MACOS_CERTID" \
|
|
frida-gadget-macos-universal.dylib
|
|
- name: Compress universal frida-gadget for macOS
|
|
run: xz -T 0 frida-gadget-macos-universal.dylib
|
|
- name: Upload universal frida-gadget for macOS
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-macos-universal
|
|
path: frida-gadget-macos-universal.dylib.xz
|
|
- name: Download frida-gadget for iOS/arm64(e)
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-ios-arm64e
|
|
path: ios-arm64e/
|
|
- name: Create universal frida-gadget for iOS
|
|
run: |
|
|
mv ios-arm64e/frida-gadget.dylib frida-gadget-ios-universal.dylib
|
|
install_name_tool \
|
|
-id @executable_path/Frameworks/FridaGadget.dylib \
|
|
frida-gadget-ios-universal.dylib
|
|
codesign \
|
|
-f -s "$IOS_CERTID" \
|
|
frida-gadget-ios-universal.dylib
|
|
- name: Compress universal frida-gadget for iOS
|
|
run: |
|
|
gzip -k frida-gadget-ios-universal.dylib
|
|
xz -T 0 frida-gadget-ios-universal.dylib
|
|
- name: Upload universal frida-gadget for iOS (gz)
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-ios-universal-gz
|
|
path: frida-gadget-ios-universal.dylib.gz
|
|
- name: Upload universal frida-gadget for iOS (xz)
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-ios-universal-xz
|
|
path: frida-gadget-ios-universal.dylib.xz
|
|
- name: Download frida-gadget for iOS/x86_64-simulator
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-ios-x86_64-simulator
|
|
path: ios-x86_64-simulator/
|
|
- name: Download frida-gadget for iOS/arm64-simulator
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-ios-arm64-simulator
|
|
path: ios-arm64-simulator/
|
|
- name: Create universal frida-gadget for iOS Simulator
|
|
run: |
|
|
lipo \
|
|
ios-x86_64-simulator/frida-gadget.dylib \
|
|
ios-arm64-simulator/frida-gadget.dylib \
|
|
-create -output frida-gadget-ios-simulator-universal.dylib
|
|
install_name_tool \
|
|
-id @executable_path/Frameworks/FridaGadget.dylib \
|
|
frida-gadget-ios-simulator-universal.dylib
|
|
codesign \
|
|
-f -s "$IOS_CERTID" \
|
|
frida-gadget-ios-simulator-universal.dylib
|
|
- name: Compress universal frida-gadget for iOS Simulator
|
|
run: xz -T 0 frida-gadget-ios-simulator-universal.dylib
|
|
- name: Upload universal frida-gadget for iOS Simulator
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-ios-simulator-universal
|
|
path: frida-gadget-ios-simulator-universal.dylib.xz
|
|
- name: Download frida-gadget for watchOS/arm64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-watchos-arm64
|
|
path: watchos-arm64/
|
|
- name: Download frida-gadget for watchOS/arm64-simulator
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-watchos-arm64-simulator
|
|
path: watchos-arm64-simulator/
|
|
- name: Package frida-gadget for watchOS
|
|
run: |
|
|
for arch in arm64 arm64-simulator; do
|
|
cp watchos-$arch/frida-gadget.dylib frida-gadget-watchos-$arch.dylib
|
|
install_name_tool \
|
|
-id @executable_path/Frameworks/FridaGadget.dylib \
|
|
frida-gadget-watchos-$arch.dylib
|
|
codesign \
|
|
-f -s "$WATCHOS_CERTID" \
|
|
frida-gadget-watchos-$arch.dylib
|
|
xz -T 0 frida-gadget-watchos-$arch.dylib
|
|
done
|
|
- name: Upload frida-gadget for watchOS/arm64
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-watchos-arm64
|
|
path: frida-gadget-watchos-arm64.dylib.xz
|
|
- name: Upload frida-gadget for watchOS/arm64-simulator
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-watchos-arm64-simulator
|
|
path: frida-gadget-watchos-arm64-simulator.dylib.xz
|
|
- name: Download frida-gadget for tvOS/arm64
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-tvos-arm64
|
|
path: tvos-arm64/
|
|
- name: Download frida-gadget for tvOS/arm64-simulator
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gadget-tvos-arm64-simulator
|
|
path: tvos-arm64-simulator/
|
|
- name: Package frida-gadget for tvOS
|
|
run: |
|
|
for arch in arm64 arm64-simulator; do
|
|
cp tvos-$arch/frida-gadget.dylib frida-gadget-tvos-$arch.dylib
|
|
install_name_tool \
|
|
-id @executable_path/Frameworks/FridaGadget.dylib \
|
|
frida-gadget-tvos-$arch.dylib
|
|
codesign \
|
|
-f -s "$TVOS_CERTID" \
|
|
frida-gadget-tvos-$arch.dylib
|
|
xz -T 0 frida-gadget-tvos-$arch.dylib
|
|
done
|
|
- name: Upload frida-gadget for tvOS/arm64
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-tvos-arm64
|
|
path: frida-gadget-tvos-arm64.dylib.xz
|
|
- name: Upload frida-gadget for tvOS/arm64-simulator
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-asset-frida-gadget-tvos-arm64-simulator
|
|
path: frida-gadget-tvos-arm64-simulator.dylib.xz
|
|
|
|
package-windows:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-windows
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, arm64]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-windows-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-windows-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-windows-${{ matrix.arch }}
|
|
- name: Package frida-server
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-server-windows-${{ matrix.arch }}
|
|
- name: Package frida-portal
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-portal-windows-${{ matrix.arch }}
|
|
- name: Package frida-inject
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-inject-windows-${{ matrix.arch }}
|
|
- name: Package frida-gadget
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-gadget-windows-${{ matrix.arch }}
|
|
- name: Package .NET bindings
|
|
if: matrix.arch != 'arm64'
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-clr-windows-${{ matrix.arch }}
|
|
- name: Package QML bindings
|
|
if: matrix.arch == 'x86_64'
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-qml-windows-${{ matrix.arch }}
|
|
|
|
package-windows-sfx:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-windows
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64]
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-sfx
|
|
with:
|
|
name: frida-gum-devkit-windows-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-sfx
|
|
with:
|
|
name: frida-gumjs-devkit-windows-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-sfx
|
|
with:
|
|
name: frida-core-devkit-windows-${{ matrix.arch }}
|
|
|
|
package-macos:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-macos
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64, arm64e]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-macos-${{ matrix.arch }}
|
|
- name: Package gum-graft
|
|
if: matrix.arch != 'arm64e'
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: gum-graft-macos-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-macos-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-macos-${{ matrix.arch }}
|
|
- name: Package frida-server
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-server-macos-${{ matrix.arch }}
|
|
- name: Package frida-portal
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-portal-macos-${{ matrix.arch }}
|
|
- name: Package frida-inject
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-inject-macos-${{ matrix.arch }}
|
|
- name: Package QML bindings
|
|
if: matrix.arch == 'x86_64'
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-qml-macos-${{ matrix.arch }}
|
|
|
|
package-linux:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-linux
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64-musl, mips, mipsel, mips64, mips64el]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-linux-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-linux-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-linux-${{ matrix.arch }}
|
|
- name: Package frida-server
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-server-linux-${{ matrix.arch }}
|
|
- name: Package frida-portal
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-portal-linux-${{ matrix.arch }}
|
|
- name: Package frida-gadget
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-gadget-linux-${{ matrix.arch }}
|
|
- name: Package frida-inject
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-inject-linux-${{ matrix.arch }}
|
|
- name: Package QML bindings
|
|
if: matrix.arch == 'x86_64'
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-qml-linux-${{ matrix.arch }}
|
|
|
|
package-ios:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-ios
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64e, x86_64-simulator, arm64-simulator]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-ios-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-ios-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-ios-${{ matrix.arch }}
|
|
- name: Package frida-portal
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-portal-ios-${{ matrix.arch }}
|
|
|
|
package-watchos:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-watchos
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64-simulator]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-watchos-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-watchos-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-watchos-${{ matrix.arch }}
|
|
|
|
package-tvos:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-tvos
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64-simulator]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-tvos-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-tvos-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-tvos-${{ matrix.arch }}
|
|
|
|
package-android:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-android
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, arm, arm64]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-android-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-android-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-android-${{ matrix.arch }}
|
|
- name: Package frida-server
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-server-android-${{ matrix.arch }}
|
|
- name: Package frida-portal
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-portal-android-${{ matrix.arch }}
|
|
- name: Package frida-gadget
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-gadget-android-${{ matrix.arch }}
|
|
- name: Package frida-inject
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-inject-android-${{ matrix.arch }}
|
|
|
|
package-qnx:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-qnx
|
|
strategy:
|
|
matrix:
|
|
arch: [armeabi]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-qnx-${{ matrix.arch }}
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-qnx-${{ matrix.arch }}
|
|
- name: Package Core devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-core-devkit-qnx-${{ matrix.arch }}
|
|
- name: Package frida-server
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-server-qnx-${{ matrix.arch }}
|
|
- name: Package frida-portal
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-portal-qnx-${{ matrix.arch }}
|
|
- name: Package frida-gadget
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-gadget-qnx-${{ matrix.arch }}
|
|
- name: Package frida-inject
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-inject-qnx-${{ matrix.arch }}
|
|
|
|
package-none-arm64:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: [frida-gum-none-arm64, frida-barebone-agent-none-arm64]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-none-arm64
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-none-arm64
|
|
- name: Package barebone agent
|
|
uses: ./.github/actions/package-artifact-file
|
|
with:
|
|
name: frida-barebone-agent-none-arm64
|
|
|
|
# No agent here: the soft-float one is a static library that only means anything
|
|
# once linked into a module for a specific kernel.
|
|
package-none-softfloat:
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
needs: frida-gum-none-softfloat
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Package Gum devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gum-devkit-none-${{ matrix.arch }}-softfloat
|
|
- name: Package GumJS devkit
|
|
uses: ./.github/actions/package-artifact-files-as-tarball
|
|
with:
|
|
name: frida-gumjs-devkit-none-${{ matrix.arch }}-softfloat
|
|
|
|
frida-windows-intel:
|
|
needs: sdk-windows
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- { arch: x86, sys: MINGW32, pkg: 'mingw-w64-i686-gcc' }
|
|
- { arch: x86_64, sys: MINGW64, pkg: 'mingw-w64-x86_64-gcc' }
|
|
fail-fast: false
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-windows-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
architecture: ${{ matrix.arch == 'x86_64' && 'x64' || matrix.arch }}
|
|
- name: Install MinGW toolchain for cgo support
|
|
id: msys2
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.sys }}
|
|
install: ${{ matrix.pkg }}
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Install Go toolchain
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
|
|
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
|
|
- name: Install Qt
|
|
if: matrix.arch == 'x86_64'
|
|
uses: jurplel/install-qt-action@v4
|
|
with:
|
|
version: '6.7.0'
|
|
cache: true
|
|
setup-python: false
|
|
- name: Configure
|
|
run: >-
|
|
.\configure
|
|
--prefix=$Env:FRIDA_PREFIX
|
|
--host=windows-${{ matrix.arch }}
|
|
--enable-gadget
|
|
--enable-server
|
|
--enable-portal
|
|
--enable-inject
|
|
--
|
|
"-Dfrida_qml=auto"
|
|
"-Dfrida-gum:devkits=gum,gumjs"
|
|
"-Dfrida-core:compiler_backend=enabled"
|
|
"-Dfrida-core:devkits=core"
|
|
env:
|
|
MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
|
|
- name: Compile
|
|
run: .\make
|
|
- name: Install
|
|
run: .\make install
|
|
- name: Upload components needed for emulation on arm64
|
|
if: matrix.arch == 'x86_64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-emulation-windows
|
|
path: |
|
|
build/subprojects/frida-core/src/frida-helper.exe
|
|
build/subprojects/frida-core/lib/agent/frida-agent.dll
|
|
build/subprojects/frida-core/compat/frida-helper.exe
|
|
build/subprojects/frida-core/compat/frida-agent.dll
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server.exe
|
|
- name: Upload frida-portal
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal.exe
|
|
- name: Upload frida-inject
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject.exe
|
|
- name: Upload 32-bit frida-gadget
|
|
if: matrix.arch != 'x86_64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/x86/frida-gadget.dll
|
|
- name: Upload 64-bit frida-gadget
|
|
if: matrix.arch == 'x86_64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/x86_64/frida-gadget.dll
|
|
- name: Package Python bindings
|
|
run: |
|
|
$Env:FRIDA_EXTENSION = "$Env:FRIDA_PREFIX\lib\site-packages\frida\_frida.pyd"
|
|
cd subprojects\frida-python
|
|
pip wheel -w "$Env:FRIDA_PREFIX\wheels" --no-deps .
|
|
- name: Upload Python bindings
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-python-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
|
|
- name: Build Node.js bindings
|
|
if: matrix.arch == 'x86_64'
|
|
run: |
|
|
$installdir = "$Env:FRIDA_PREFIX\prebuilds"
|
|
$Env:FRIDA_DEPS = "$pwd\deps"
|
|
$Env:PKG_CONFIG_PATH = "$Env:FRIDA_PREFIX\lib\pkgconfig"
|
|
function Run {
|
|
param(
|
|
[Parameter(Mandatory)]
|
|
[string] $FilePath,
|
|
[Parameter(ValueFromRemainingArguments = $true)]
|
|
[string[]] $Argv
|
|
)
|
|
$p = Start-Process -FilePath $FilePath -ArgumentList $Argv -NoNewWindow -Wait -PassThru
|
|
if ($p.ExitCode -ne 0) {
|
|
throw "'$FilePath $($Argv -join ' ')' failed with exit status $($p.ExitCode)"
|
|
}
|
|
}
|
|
Run python .\tools\ensure-submodules.py frida-node
|
|
cd subprojects\frida-node
|
|
Run npm.cmd version $Env:FRIDA_VERSION
|
|
Run .\configure `
|
|
--prefix=$Env:FRIDA_PREFIX `
|
|
--host=windows-${{ matrix.arch }}
|
|
Run .\make prebuild
|
|
New-Item -ItemType Directory -Path $installdir
|
|
Copy-Item .\build\*.tar.gz -Destination $installdir
|
|
- name: Upload Node.js bindings
|
|
if: matrix.arch == 'x86_64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-node-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
|
|
- name: Build .NET bindings
|
|
run: >-
|
|
Remove-Item build -Recurse
|
|
&& .\configure
|
|
--prefix=$Env:FRIDA_PREFIX
|
|
--host=windows-${{ matrix.arch }}-md
|
|
--enable-frida-clr
|
|
--disable-frida-python
|
|
--disable-frida-tools
|
|
--
|
|
"-Dfrida-core:compiler_backend=disabled"
|
|
&& .\make install
|
|
- name: Upload .NET bindings
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-clr-windows-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/Frida.dll
|
|
- name: Upload QML bindings
|
|
if: matrix.arch == 'x86_64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-qml-windows-${{ matrix.arch }}
|
|
path: |
|
|
${{ env.FRIDA_PREFIX }}/lib/qml/
|
|
!*.lib
|
|
!*.pdb
|
|
|
|
frida-windows:
|
|
needs: frida-windows-intel
|
|
runs-on: windows-11-arm
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-windows-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
architecture: arm64
|
|
- name: Install MinGW toolchain for cgo support
|
|
id: msys2
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: CLANGARM64
|
|
install: mingw-w64-clang-aarch64-clang
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Install Go toolchain
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
|
|
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
|
|
- name: Download emulation components
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-core-emulation-windows
|
|
path: emulation/
|
|
- name: Configure
|
|
run: |
|
|
$helperModern = (Resolve-Path "emulation/src/frida-helper.exe").Path
|
|
$agentModern = (Resolve-Path "emulation/lib/agent/frida-agent.dll").Path
|
|
$helperLegacy = (Resolve-Path "emulation/compat/frida-helper.exe").Path
|
|
$agentLegacy = (Resolve-Path "emulation/compat/frida-agent.dll").Path
|
|
|
|
.\configure `
|
|
--prefix=$Env:FRIDA_PREFIX `
|
|
--host=windows-arm64 `
|
|
--enable-gadget `
|
|
--enable-server `
|
|
--enable-portal `
|
|
--enable-inject `
|
|
-- `
|
|
"-Dfrida_qml=auto" `
|
|
"-Dfrida-gum:devkits=gum,gumjs" `
|
|
"-Dfrida-core:compiler_backend=enabled" `
|
|
"-Dfrida-core:devkits=core" `
|
|
"-Dfrida-core:helper_emulated_modern=$helperModern" `
|
|
"-Dfrida-core:agent_emulated_modern=$agentModern" `
|
|
"-Dfrida-core:helper_emulated_legacy=$helperLegacy" `
|
|
"-Dfrida-core:agent_emulated_legacy=$agentLegacy"
|
|
env:
|
|
MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
|
|
- name: Compile
|
|
run: .\make
|
|
- name: Install
|
|
run: .\make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server.exe
|
|
- name: Upload frida-portal
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal.exe
|
|
- name: Upload frida-inject
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject.exe
|
|
- name: Upload frida-gadget
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/arm64/frida-gadget.dll
|
|
- name: Package Python bindings
|
|
run: |
|
|
$Env:FRIDA_EXTENSION = "$Env:FRIDA_PREFIX\lib\site-packages\frida\_frida.pyd"
|
|
cd subprojects\frida-python
|
|
pip wheel -w "$Env:FRIDA_PREFIX\wheels" --no-deps .
|
|
- name: Upload Python bindings
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-python-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
|
|
- name: Build Node.js bindings
|
|
run: |
|
|
$installdir = "$Env:FRIDA_PREFIX\prebuilds"
|
|
$Env:FRIDA_DEPS = "$pwd\deps"
|
|
$Env:PKG_CONFIG_PATH = "$Env:FRIDA_PREFIX\lib\pkgconfig"
|
|
function Run {
|
|
param(
|
|
[Parameter(Mandatory)]
|
|
[string] $FilePath,
|
|
[Parameter(ValueFromRemainingArguments = $true)]
|
|
[string[]] $Argv
|
|
)
|
|
$p = Start-Process -FilePath $FilePath -ArgumentList $Argv -NoNewWindow -Wait -PassThru
|
|
if ($p.ExitCode -ne 0) {
|
|
throw "'$FilePath $($Argv -join ' ')' failed with exit status $($p.ExitCode)"
|
|
}
|
|
}
|
|
Run python .\tools\ensure-submodules.py frida-node
|
|
cd subprojects\frida-node
|
|
Run npm.cmd version $Env:FRIDA_VERSION
|
|
Run .\configure `
|
|
--prefix=$Env:FRIDA_PREFIX `
|
|
--host=windows-arm64
|
|
Run .\make prebuild
|
|
New-Item -ItemType Directory -Path $installdir
|
|
Copy-Item .\build\*.tar.gz -Destination $installdir
|
|
- name: Upload Node.js bindings
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-node-windows-arm64
|
|
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
|
|
|
|
frida-macos:
|
|
needs: sdk-macos
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64, arm64e]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Install Go toolchain
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
|
|
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
|
|
- name: Install Qt
|
|
if: matrix.arch != 'arm64e'
|
|
uses: jurplel/install-qt-action@v4
|
|
with:
|
|
version: '6.7.0'
|
|
cache: true
|
|
setup-python: false
|
|
- name: Configure
|
|
run: >-
|
|
./configure
|
|
"--prefix=$FRIDA_PREFIX"
|
|
--host=macos-${{ matrix.arch }}
|
|
--enable-gadget
|
|
--enable-server
|
|
--enable-portal
|
|
--enable-inject
|
|
--enable-frida-python
|
|
--
|
|
-Dfrida_qml=${{ matrix.arch != 'arm64e' && 'enabled' || 'disabled' }}
|
|
-Dfrida-gum:graft_tool=enabled
|
|
-Dfrida-gum:devkits=gum,gumjs
|
|
-Dfrida-core:compiler_backend=${{ matrix.arch != 'arm64e' && 'enabled' || 'disabled' }}
|
|
-Dfrida-core:devkits=core
|
|
- name: Compile
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gum/
|
|
- name: Upload gum-graft
|
|
if: matrix.arch != 'arm64e'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: gum-graft-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/gum-graft
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
|
|
- name: Upload frida-portal
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
|
|
- name: Upload frida-inject
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
|
|
- name: Upload frida-gadget
|
|
if: matrix.arch != 'arm64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/frida-gadget.dylib
|
|
- name: Package Python bindings
|
|
run: |
|
|
export FRIDA_EXTENSION=$(find "$FRIDA_PREFIX" -name _frida.abi3.so)
|
|
case ${{ matrix.arch }} in
|
|
x86_64)
|
|
platform=macosx-10.13-x86_64
|
|
;;
|
|
arm64*)
|
|
platform=macosx-11.0-arm64
|
|
;;
|
|
esac
|
|
export _PYTHON_HOST_PLATFORM=$platform
|
|
cd subprojects/frida-python
|
|
pip wheel -w "$FRIDA_PREFIX/wheels" --no-deps .
|
|
- name: Upload Python bindings
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-python-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
|
|
- name: Build Node.js bindings
|
|
if: matrix.arch != 'arm64e'
|
|
run: |
|
|
installdir=$FRIDA_PREFIX/prebuilds
|
|
export FRIDA_DEPS=$PWD/deps
|
|
export PKG_CONFIG_PATH=$FRIDA_PREFIX/lib/pkgconfig
|
|
python tools/ensure-submodules.py frida-node
|
|
cd subprojects/frida-node
|
|
npm version $FRIDA_VERSION
|
|
./configure \
|
|
"--prefix=$FRIDA_PREFIX" \
|
|
--host=macos-${{ matrix.arch }}
|
|
make prebuild
|
|
mkdir "$installdir"
|
|
cp build/*.tar.gz "$installdir"
|
|
shell: zsh {0}
|
|
- name: Upload Node.js bindings
|
|
if: matrix.arch != 'arm64e'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-node-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
|
|
- name: Upload QML bindings
|
|
if: matrix.arch != 'arm64e'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-qml-macos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/qml/
|
|
|
|
frida-linux:
|
|
needs: sdk-linux
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64-musl, mips, mipsel, mips64, mips64el]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Install Go toolchain
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
|
|
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
|
|
- name: Configure qemu-user
|
|
if: ${{ !startsWith(matrix.arch, 'x86') }}
|
|
run: echo "FRIDA_QEMU_SYSROOT=/opt/x-tools/$XTOOLS_HOST/$XTOOLS_HOST/sysroot" >> $GITHUB_ENV
|
|
- name: Prepare environment for installing Qt
|
|
if: matrix.arch == 'x86_64'
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y sudo
|
|
echo "PIP_BREAK_SYSTEM_PACKAGES=1" >> $GITHUB_ENV
|
|
- name: Install Qt
|
|
if: matrix.arch == 'x86_64'
|
|
uses: jurplel/install-qt-action@v4
|
|
with:
|
|
version: '6.7.0'
|
|
cache: true
|
|
setup-python: false
|
|
- name: Configure
|
|
run: >-
|
|
./configure
|
|
"--prefix=$FRIDA_PREFIX"
|
|
--host=$XTOOLS_HOST
|
|
--enable-gadget
|
|
--enable-server
|
|
--enable-portal
|
|
--enable-inject
|
|
--enable-frida-python
|
|
--
|
|
-Dlibdir=lib
|
|
-Dfrida_qml=${{ matrix.arch == 'x86_64' && 'enabled' || 'disabled' }}
|
|
-Dfrida-gum:devkits=gum,gumjs
|
|
-Dfrida-core:compiler_backend=${{ !(startsWith(matrix.arch, 'mips') || matrix.arch == 'armbe8' || matrix.arch == 'arm64be') && 'enabled' || 'disabled' }}
|
|
-Dfrida-core:devkits=core
|
|
- name: Compile
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
|
|
- name: Upload frida-portal
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
|
|
- name: Upload frida-inject
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
|
|
- name: Upload 32-bit frida-gadget
|
|
if: ${{ !contains(matrix.arch, '64') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/32/frida-gadget.so
|
|
- name: Upload 64-bit frida-gadget
|
|
if: ${{ contains(matrix.arch, '64') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/64/frida-gadget.so
|
|
- name: Package Python bindings
|
|
run: |
|
|
export FRIDA_EXTENSION=$(find "$FRIDA_PREFIX" -name _frida.abi3.so)
|
|
case ${{ matrix.arch }} in
|
|
*-musl)
|
|
py_oses=(musllinux_1_1)
|
|
;;
|
|
x86*)
|
|
py_oses=(manylinux_2_5 manylinux1)
|
|
;;
|
|
arm*|ppc*|s390x)
|
|
py_oses=(manylinux_2_17 manylinux2014)
|
|
;;
|
|
*)
|
|
py_oses=(manylinux_2_5)
|
|
;;
|
|
esac
|
|
frida_arch=$(echo "${{ matrix.arch }}" | cut -f1 -d"-")
|
|
case $frida_arch in
|
|
x86)
|
|
py_arch=i686
|
|
;;
|
|
armhf)
|
|
py_arch=armv7l
|
|
;;
|
|
arm64)
|
|
py_arch=aarch64
|
|
;;
|
|
*)
|
|
py_arch=$frida_arch
|
|
;;
|
|
esac
|
|
cd subprojects/frida-python
|
|
export _PYTHON_HOST_PLATFORM=linux-$py_arch
|
|
for py_os in "${py_oses[@]}"; do
|
|
echo "plat_name = ${py_os}_${py_arch}" >> setup.cfg
|
|
pip wheel -w "$FRIDA_PREFIX/wheels" --no-deps .
|
|
git checkout setup.cfg
|
|
done
|
|
shell: bash
|
|
- name: Upload Python bindings
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-python-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl
|
|
- name: Build Node.js bindings
|
|
if: ${{ !(startsWith(matrix.arch, 'mips') || endsWith(matrix.arch, '-musl') || matrix.arch == 'armbe8' || matrix.arch == 'arm64be') }}
|
|
run: |
|
|
installdir=$FRIDA_PREFIX/prebuilds
|
|
export FRIDA_DEPS=$PWD/deps
|
|
export PKG_CONFIG_PATH=$FRIDA_PREFIX/lib/pkgconfig
|
|
python tools/ensure-submodules.py frida-node
|
|
cd subprojects/frida-node
|
|
npm version $FRIDA_VERSION
|
|
./configure \
|
|
"--prefix=$FRIDA_PREFIX" \
|
|
--host=$XTOOLS_HOST
|
|
make prebuild
|
|
mkdir "$installdir"
|
|
cp build/*.tar.gz "$installdir"
|
|
shell: bash
|
|
- name: Upload Node.js bindings
|
|
if: ${{ !(startsWith(matrix.arch, 'mips') || endsWith(matrix.arch, '-musl') || matrix.arch == 'armbe8' || matrix.arch == 'arm64be') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-node-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/prebuilds/*.tar.gz
|
|
- name: Upload QML bindings
|
|
if: matrix.arch == 'x86_64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-qml-linux-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/qml/
|
|
|
|
frida-ios:
|
|
needs: [sdk-macos, sdk-ios]
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64e, x86_64-simulator, arm64-simulator]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
env:
|
|
XCODE11: /Applications/Xcode_11.7.app
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Install Go toolchain
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
|
|
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
|
|
- name: Configure
|
|
run: >-
|
|
./configure
|
|
--prefix=/usr
|
|
--host=ios-${{ matrix.arch }}
|
|
--enable-portal
|
|
--
|
|
-Dfrida-gum:devkits=gum,gumjs
|
|
-Dfrida-core:compiler_backend=${{ matrix.arch != 'arm64e' && 'enabled' || 'disabled' }}
|
|
-Dfrida-core:assets=installed
|
|
-Dfrida-core:devkits=core
|
|
- name: Compile
|
|
run: make
|
|
- name: Install
|
|
run: DESTDIR="$FRIDA_PREFIX" make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-server
|
|
- name: Upload frida-portal
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-portal
|
|
- name: Upload frida-inject
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-inject
|
|
- name: Upload frida-helper
|
|
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-helper-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/frida-helper
|
|
- name: Upload frida-agent
|
|
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-agent-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/frida-agent.dylib
|
|
- name: Upload frida-gadget
|
|
if: matrix.arch != 'arm64'
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-ios-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/frida-gadget.dylib
|
|
|
|
frida-watchos:
|
|
needs: [sdk-macos, sdk-watchos]
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64-simulator]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Configure
|
|
run: >-
|
|
./configure
|
|
"--prefix=$FRIDA_PREFIX"
|
|
--host=watchos-${{ matrix.arch }}
|
|
--
|
|
-Dfrida-gum:devkits=gum,gumjs
|
|
-Dfrida-core:devkits=core
|
|
- name: Compile
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-watchos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-watchos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-watchos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-gadget
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-watchos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/frida-gadget.dylib
|
|
|
|
frida-tvos:
|
|
needs: [sdk-macos, sdk-tvos]
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64-simulator]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Configure
|
|
run: >-
|
|
./configure
|
|
--prefix=/usr
|
|
--host=tvos-${{ matrix.arch }}
|
|
--enable-portal
|
|
--
|
|
-Dfrida-gum:devkits=gum,gumjs
|
|
-Dfrida-core:assets=installed
|
|
-Dfrida-core:devkits=core
|
|
- name: Compile
|
|
run: make
|
|
- name: Install
|
|
run: DESTDIR="$FRIDA_PREFIX" make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-server
|
|
- name: Upload frida-portal
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-portal
|
|
- name: Upload frida-inject
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/bin/frida-inject
|
|
- name: Upload frida-helper
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-helper-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/frida-helper
|
|
- name: Upload frida-agent
|
|
if: ${{ !endsWith(matrix.arch, '-simulator') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-agent-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/frida-agent.dylib
|
|
- name: Upload frida-gadget
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-tvos-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida-1.0/frida-gadget.dylib
|
|
|
|
frida-android:
|
|
needs: [sdk-linux, sdk-android-32, sdk-android-64]
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, arm, arm64]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Install Go toolchain
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: ${{ env.FRIDA_COMPILER_MOD }}
|
|
cache-dependency-path: ${{ env.FRIDA_COMPILER_MOD }}
|
|
- name: Set up NDK
|
|
id: setup-ndk
|
|
uses: nttld/setup-ndk@v1
|
|
with:
|
|
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
|
|
add-to-path: false
|
|
- name: Add ANDROID_NDK_ROOT to environment
|
|
run: echo "ANDROID_NDK_ROOT=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV
|
|
- name: Configure
|
|
run: >-
|
|
./configure
|
|
"--prefix=$FRIDA_PREFIX"
|
|
--host=android-${{ matrix.arch }}
|
|
--enable-portal
|
|
--
|
|
-Dfrida-gum:devkits=gum,gumjs
|
|
-Dfrida-core:compiler_backend=enabled
|
|
-Dfrida-core:devkits=core
|
|
- name: Compile
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
|
|
- name: Upload frida-portal
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
|
|
- name: Upload frida-inject
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
|
|
- name: Upload 32-bit frida-gadget
|
|
if: ${{ !contains(matrix.arch, '64') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/32/frida-gadget.so
|
|
- name: Upload 64-bit frida-gadget
|
|
if: ${{ contains(matrix.arch, '64') }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-android-${{ matrix.arch }}
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/64/frida-gadget.so
|
|
|
|
frida-qnx:
|
|
runs-on: ubuntu-latest
|
|
needs: sdk-linux
|
|
container: ghcr.io/frida/qnx-tools:latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Add CFLAGS to environment
|
|
run: echo "CFLAGS=\"--sysroot=$QNX_TARGET/armle-v7\"" >> $GITHUB_ENV
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk arm-unknown-nto-qnx6.5.0eabi
|
|
- name: Configure
|
|
run: >-
|
|
./configure
|
|
"--prefix=$FRIDA_PREFIX"
|
|
--host=arm-unknown-nto-qnx6.5.0eabi
|
|
--enable-portal
|
|
--
|
|
-Dfrida-gum:devkits=gum,gumjs
|
|
-Dfrida-core:devkits=core
|
|
- name: Compile
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-qnx-armeabi
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gum/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-qnx-armeabi
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/gumjs/
|
|
- name: Upload Core devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-core-devkit-qnx-armeabi
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/devkits/core/
|
|
- name: Upload frida-server
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-server-qnx-armeabi
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server
|
|
- name: Upload frida-portal
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-portal-qnx-armeabi
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal
|
|
- name: Upload frida-inject
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-inject-qnx-armeabi
|
|
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject
|
|
- name: Upload frida-gadget
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gadget-qnx-armeabi
|
|
path: ${{ env.FRIDA_PREFIX }}/lib/frida-1.0/32/frida-gadget.so
|
|
|
|
frida-gum-none-arm64:
|
|
needs: sdk-none-arm64
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 24
|
|
- name: Grab frida-gum
|
|
run: python tools/ensure-submodules.py frida-gum
|
|
- name: Check out barebone agent
|
|
run: git submodule update --init --depth 1 subprojects/frida-core
|
|
- name: Set up C toolchain
|
|
working-directory: subprojects/frida-core/src/barebone/agent
|
|
run: |
|
|
npm install -g xpm
|
|
xpm install
|
|
echo "$PWD/xpacks/.bin" >> $GITHUB_PATH
|
|
- name: Configure Gum
|
|
working-directory: subprojects/frida-gum
|
|
run: >-
|
|
./configure
|
|
--host=aarch64-none-elf
|
|
--enable-gumjs
|
|
--with-devkits=gum,gumjs
|
|
--with-devkit-symbol-scope=original
|
|
- name: Compile
|
|
working-directory: subprojects/frida-gum
|
|
run: make
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-none-arm64
|
|
path: subprojects/frida-gum/build/gum/devkit/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-none-arm64
|
|
path: subprojects/frida-gum/build/bindings/gumjs/devkit/
|
|
|
|
frida-barebone-agent-none-arm64:
|
|
needs: frida-gum-none-arm64
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
- name: Set up C toolchain
|
|
working-directory: subprojects/frida-core/src/barebone/agent
|
|
run: |
|
|
npm install -g xpm
|
|
xpm install
|
|
echo "$PWD/xpacks/.bin" >> $GITHUB_PATH
|
|
- name: Set up Rust target
|
|
run: rustup target add aarch64-unknown-none
|
|
- name: Download GumJS devkit
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gumjs-devkit-none-arm64
|
|
path: ${{ runner.workspace }}/gumjs-devkit
|
|
- name: Build agent
|
|
working-directory: subprojects/frida-core/src/barebone/agent
|
|
run: cargo build --release --features xnu
|
|
env:
|
|
CC_aarch64_unknown_none: aarch64-none-elf-gcc
|
|
AR_aarch64_unknown_none: aarch64-none-elf-ar
|
|
RANLIB_aarch64_unknown_none: aarch64-none-elf-ranlib
|
|
GUMJS_DEVKIT_DIR: ${{ runner.workspace }}/gumjs-devkit
|
|
- name: Upload agent
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-barebone-agent-none-arm64
|
|
path: subprojects/frida-core/src/barebone/agent/target/aarch64-unknown-none/release/frida-barebone-agent
|
|
|
|
frida-gum-none-softfloat:
|
|
needs: sdk-none-softfloat
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 24
|
|
- name: Grab frida-gum
|
|
run: python tools/ensure-submodules.py frida-gum
|
|
- name: Set up C toolchain
|
|
run: |
|
|
curl -sSL https://apt.llvm.org/llvm.sh -o llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh $CLANG_VERSION
|
|
sudo ln -sf /usr/bin/clang-$CLANG_VERSION /usr/bin/clang
|
|
sudo ln -sf /usr/bin/clang++-$CLANG_VERSION /usr/bin/clang++
|
|
env:
|
|
CLANG_VERSION: 21
|
|
- name: Configure Gum
|
|
working-directory: subprojects/frida-gum
|
|
run: >-
|
|
./configure
|
|
--host=none-${{ matrix.arch }}-softfloat
|
|
--enable-gumjs
|
|
--with-devkits=gum,gumjs
|
|
--with-devkit-symbol-scope=original
|
|
env:
|
|
CC: clang
|
|
CXX: clang++
|
|
- name: Compile
|
|
working-directory: subprojects/frida-gum
|
|
run: make
|
|
- name: Upload Gum devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gum-devkit-none-${{ matrix.arch }}-softfloat
|
|
path: subprojects/frida-gum/build/gum/devkit/
|
|
- name: Upload GumJS devkit
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: frida-gumjs-devkit-none-${{ matrix.arch }}-softfloat
|
|
path: subprojects/frida-gum/build/bindings/gumjs/devkit/
|
|
|
|
# The Makefile drives Cargo and the prelink itself, so the flags the agent needs live
|
|
# there rather than here. It stops at the prelinked object: a .ko is only loadable on
|
|
# the exact GKI build it was made for, since vermagic names it verbatim, so the
|
|
# kernel half is left to whoever has that kernel.
|
|
frida-barebone-agent-none-softfloat:
|
|
needs: frida-gum-none-softfloat
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- arch: x86_64
|
|
kernel_arch: x86
|
|
rust_target: x86_64-unknown-none
|
|
toolprefix: ''
|
|
binutils: ''
|
|
- arch: arm64
|
|
kernel_arch: arm64
|
|
rust_target: aarch64-unknown-none
|
|
toolprefix: aarch64-linux-gnu-
|
|
binutils: binutils-aarch64-linux-gnu
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Grab frida-core
|
|
run: python tools/ensure-submodules.py frida-core
|
|
# The prelink reads nm's archive map, which only GNU nm emits.
|
|
- name: Set up binutils
|
|
if: matrix.binutils != ''
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ${{ matrix.binutils }}
|
|
- name: Set up C toolchain
|
|
run: |
|
|
curl -sSL https://apt.llvm.org/llvm.sh -o llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh $CLANG_VERSION
|
|
sudo ln -sf /usr/bin/clang-$CLANG_VERSION /usr/bin/clang
|
|
env:
|
|
CLANG_VERSION: 21
|
|
- name: Fetch the SDK
|
|
run: releng/deps.py sync sdk none-${{ matrix.arch }}-softfloat $SDK_PREFIX
|
|
env:
|
|
SDK_PREFIX: ${{ runner.workspace }}/sdk-none-${{ matrix.arch }}-softfloat
|
|
- name: Set up Rust target
|
|
run: |
|
|
rustup target add ${{ matrix.rust_target }}
|
|
rustup component add rust-src
|
|
- name: Download GumJS devkit
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: frida-gumjs-devkit-none-${{ matrix.arch }}-softfloat
|
|
path: ${{ runner.workspace }}/gumjs-devkit
|
|
- name: Build agent
|
|
working-directory: subprojects/frida-core/src/barebone/agent/linux
|
|
run: >-
|
|
make frida-agent-prelinked.o.bin
|
|
ARCH=${{ matrix.kernel_arch }}
|
|
FRIDA_SDK=${{ runner.workspace }}/sdk-none-${{ matrix.arch }}-softfloat
|
|
AGENT_LD=${{ matrix.toolprefix }}ld
|
|
AGENT_AR=${{ matrix.toolprefix }}ar
|
|
AGENT_NM=${{ matrix.toolprefix }}nm
|
|
AGENT_OBJCOPY=${{ matrix.toolprefix }}objcopy
|
|
env:
|
|
GUMJS_DEVKIT_DIR: ${{ runner.workspace }}/gumjs-devkit
|
|
# Everything the module needs from the kernel goes through frida-kmod.c, and
|
|
# everything the kernel may see of us is the two entry points it calls. Both
|
|
# have broken before: a libc whose lock stubs collided with ours, and a devkit
|
|
# built against a different libc leaving its errno behind.
|
|
- name: Check the prelink
|
|
working-directory: subprojects/frida-core/src/barebone/agent/linux
|
|
run: |
|
|
undefined=$(${{ matrix.toolprefix }}nm --undefined-only frida-agent-prelinked.o.bin \
|
|
| awk '{ print $2 }' | grep -v '^frida_kmod_' || true)
|
|
if [ -n "$undefined" ]; then
|
|
echo "Undefined beyond the kmod glue:" $undefined
|
|
exit 1
|
|
fi
|
|
globals=$(${{ matrix.toolprefix }}nm --defined-only --extern-only frida-agent-prelinked.o.bin \
|
|
| awk '{ print $3 }' | sort | paste -sd' ')
|
|
if [ "$globals" != "$EXPECTED_GLOBALS" ]; then
|
|
echo "Global symbols beyond the entry points:" $globals
|
|
exit 1
|
|
fi
|
|
env:
|
|
EXPECTED_GLOBALS: >-
|
|
frida_agent_start frida_agent_stop
|
|
gum_interceptor_begin_transaction gum_interceptor_end_transaction
|
|
gum_interceptor_obtain gum_interceptor_replace
|
|
gum_interceptor_revert
|
|
- name: Check for notrack jumps
|
|
if: matrix.kernel_arch == 'x86'
|
|
working-directory: subprojects/frida-core/src/barebone/agent/linux
|
|
run: |
|
|
if objdump -d frida-agent-prelinked.o.bin | grep -q notrack; then
|
|
objdump -d frida-agent-prelinked.o.bin | grep -B 2 notrack
|
|
exit 1
|
|
fi
|
|
|
|
toolchain-windows:
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, arm64]
|
|
fail-fast: false
|
|
runs-on: ${{ matrix.arch == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-windows-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll toolchain
|
|
run: python releng\deps.py roll toolchain windows-${{ matrix.arch }}
|
|
|
|
sdk-windows:
|
|
needs: toolchain-windows
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, arm64]
|
|
config: [md, mdd, mt, mtd]
|
|
fail-fast: false
|
|
runs-on: ${{ matrix.arch == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-windows-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll SDK
|
|
run: python releng\deps.py roll sdk windows-${{ matrix.arch }}-${{ matrix.config }} --activate
|
|
|
|
toolchain-macos:
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll toolchain
|
|
run: releng/deps.py roll toolchain macos-${{ matrix.arch }}
|
|
|
|
sdk-macos:
|
|
needs: toolchain-macos
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64, arm64e]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk macos-${{ matrix.arch }} --activate
|
|
|
|
sdk-ios:
|
|
needs: toolchain-macos
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64e, x86_64-simulator, arm64-simulator]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk ios-${{ matrix.arch }} --activate
|
|
|
|
sdk-watchos:
|
|
needs: toolchain-macos
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64-simulator]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk watchos-${{ matrix.arch }} --activate
|
|
|
|
sdk-tvos:
|
|
needs: toolchain-macos
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, arm64-simulator]
|
|
fail-fast: false
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-macos-env
|
|
with:
|
|
certificates-p12: ${{ secrets.APPLE_CERTIFICATES_P12 }}
|
|
certificates-password: ${{ secrets.APPLE_CERTIFICATES_PASSWORD }}
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk tvos-${{ matrix.arch }} --activate
|
|
|
|
toolchain-linux:
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64beilp32, arm64-musl]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Roll toolchain
|
|
run: releng/deps.py roll toolchain $XTOOLS_HOST
|
|
|
|
sdk-linux:
|
|
needs: toolchain-linux
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, x86_64, x86_64-musl, armhf, armhf-musl, armbe8, arm64, arm64be, arm64beilp32, arm64-musl, mips, mipsel, mips64, mips64el]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Set FRIDA_CAN_RUN_HOST_BINARIES
|
|
if: ${{ matrix.arch == 'x86' }}
|
|
run: echo "FRIDA_CAN_RUN_HOST_BINARIES=yes" >> $GITHUB_ENV
|
|
- name: Configure qemu-user
|
|
if: ${{ !startsWith(matrix.arch, 'x86') }}
|
|
run: echo "FRIDA_QEMU_SYSROOT=/opt/x-tools/$XTOOLS_HOST/$XTOOLS_HOST/sysroot" >> $GITHUB_ENV
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk $XTOOLS_HOST --activate
|
|
|
|
sdk-android-32:
|
|
needs: toolchain-linux
|
|
strategy:
|
|
matrix:
|
|
arch: [x86, arm]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/frida/x-tools-linux-x86:latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Set up NDK
|
|
id: setup-ndk
|
|
uses: nttld/setup-ndk@v1
|
|
with:
|
|
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
|
|
add-to-path: false
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk android-${{ matrix.arch }} --build=$XTOOLS_HOST --activate
|
|
env:
|
|
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
|
|
|
|
sdk-android-64:
|
|
needs: toolchain-linux
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/frida/x-tools-linux-x86_64:latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Set up NDK
|
|
id: setup-ndk
|
|
uses: nttld/setup-ndk@v1
|
|
with:
|
|
ndk-version: ${{ env.ANDROID_NDK_VERSION }}
|
|
add-to-path: false
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk android-${{ matrix.arch }} --build=$XTOOLS_HOST --activate
|
|
env:
|
|
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
|
|
|
|
sdk-none-arm64:
|
|
needs: toolchain-linux
|
|
runs-on: ubuntu-latest
|
|
container: ghcr.io/frida/x-tools-linux-x86_64:latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 24
|
|
- name: Check out barebone agent
|
|
run: git submodule update --init --depth 1 subprojects/frida-core
|
|
- name: Set up C toolchain
|
|
working-directory: subprojects/frida-core/src/barebone/agent
|
|
run: |
|
|
npm install -g xpm
|
|
xpm install
|
|
echo "$PWD/xpacks/.bin" >> $GITHUB_PATH
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk aarch64-none-elf --activate
|
|
|
|
sdk-none-softfloat:
|
|
needs: toolchain-linux
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64, arm64]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repo
|
|
uses: actions/checkout@v7
|
|
- name: Set up environment
|
|
uses: ./.github/actions/setup-linux-env
|
|
with:
|
|
aws-access-key-id: ${{ secrets.S3_ACCESS_KEY }}
|
|
aws-secret-access-key: ${{ secrets.S3_SECRET_KEY }}
|
|
cloudflare-email: ${{ secrets.CF_EMAIL }}
|
|
cloudflare-token: ${{ secrets.CF_TOKEN }}
|
|
- name: Check whether the SDK is already published
|
|
id: sdk
|
|
run: echo "published=$(releng/deps.py published sdk none-${{ matrix.arch }}-softfloat)" >> $GITHUB_OUTPUT
|
|
- name: Set up C toolchain
|
|
if: steps.sdk.outputs.published == 'false'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y gperf
|
|
sudo npm install -g cloudflare-cli@5.0.5
|
|
curl -sSL https://apt.llvm.org/llvm.sh -o llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh $CLANG_VERSION
|
|
sudo ln -sf /usr/bin/clang-$CLANG_VERSION /usr/bin/clang
|
|
sudo ln -sf /usr/bin/clang++-$CLANG_VERSION /usr/bin/clang++
|
|
env:
|
|
CLANG_VERSION: 21
|
|
- name: Roll SDK
|
|
run: releng/deps.py roll sdk none-${{ matrix.arch }}-softfloat --activate
|
|
env:
|
|
CC: clang
|
|
CXX: clang++
|