submodules: Bump outdated #1407
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: push | |
env: | |
FRIDA_COMPILER_MOD: subprojects/frida-core/src/compiler/go.mod | |
ANDROID_NDK_VERSION: r25b | |
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 | |
- assemble-ios-assets | |
- assemble-tvos-assets | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
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 | |
- name: Download release assets | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: release-asset-* | |
merge-multiple: true | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for Windows/x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-node-windows-x86_64 | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for Windows/arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-node-windows-arm64 | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for macOS/x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-node-macos-x86_64 | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for macOS/arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-node-macos-arm64 | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for Linux/x86 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-node-linux-x86 | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for Linux/x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-node-linux-x86_64 | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for Linux/armhf | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-node-linux-armhf | |
path: build/release-assets/ | |
- name: Download Node-API prebuilds for Linux/arm64 | |
uses: actions/download-artifact@v4 | |
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: Package Cirrus CI artifacts | |
run: .github/scripts/package-cirrus-ci-artifacts.sh ${{ github.sha }} | |
- 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: | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
packages-dir: build/python-packages/ | |
- name: Publish .deb packages | |
uses: ./.github/actions/publish-debs | |
with: | |
site: production | |
- name: Setup npm authentication | |
uses: actions/setup-node@v4 | |
with: | |
registry-url: "https://registry.npmjs.org" | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Publish Node.js bindings to npm | |
run: | | |
export FRIDA_DEPS=$PWD/deps | |
cd subprojects/frida-node/subprojects | |
ln -s ../../frida-gum . | |
ln -s ../../frida-core . | |
cd .. | |
git submodule update --init --recursive | |
npm version $FRIDA_VERSION | |
./configure -- -Dfrida-core:compat=disabled | |
make | |
npm install | |
npm publish | |
- 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 | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
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 | |
- 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: | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
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@v4 | |
- 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@v4 | |
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@v4 | |
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 | |
mv frida-server-ios-universal ios-assets/usr/bin/frida-server | |
mv ios-arm64e/frida-agent.dylib ios-assets/usr/lib/frida/frida-agent.dylib | |
- name: Upload iOS assets | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
- 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@v4 | |
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@v4 | |
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 | |
mv tvos-arm64/frida-server tvos-assets/usr/bin/frida-server | |
mv tvos-arm64/frida-agent.dylib tvos-assets/usr/lib/frida/frida-agent.dylib | |
- name: Upload tvOS assets | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
- 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@v4 | |
with: | |
name: frida-gadget-macos-x86_64 | |
path: macos-x86_64/ | |
- name: Download frida-gadget for macOS/arm64(e) | |
uses: actions/download-artifact@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-gadget-ios-arm64e | |
path: ios-arm64e/ | |
- name: Create universal f 10BC0 rida-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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-gadget-watchos-arm64 | |
path: watchos-arm64/ | |
- name: Download frida-gadget for watchOS/arm64-simulator | |
uses: actions/download-artifact@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-gadget-tvos-arm64 | |
path: tvos-arm64/ | |
- name: Download frida-gadget for tvOS/arm64-simulator | |
uses: actions/download-artifact@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: release-asset-frida-gadget-tvos-arm64-simulator | |
path: frida-gadget-tvos-arm64-simulator.dylib.xz | |
- name: Download Swift bindings for macOS/x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-swift-macos-x86_64 | |
path: macos-x86_64/ | |
- name: Download Swift bindings for macOS/arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: frida-swift-macos-arm64 | |
path: macos-arm64/ | |
- name: Create universal Swift bindings for macOS | |
run: | | |
lipo \ | |
macos-x86_64/Frida.framework/Frida \ | |
macos-arm64/Frida.framework/Frida \ | |
-create -output Frida.framework | |
- name: Package universal Swift bindings for macOS | |
run: | | |
tar \ | |
-cJf frida-swift-macos-universal.tar.xz \ | |
Frida.framework | |
env: | |
XZ_OPT: "-T 0" | |
- name: Upload universal Swift bindings for macOS | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-assets | |
path: frida-swift-macos-universal.tar.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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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 }} | |
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@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up environment | |
uses: ./.github/actions/setup-windows-env | |
with: | |
aws-acc 4B9A ess-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@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-windows-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-windows-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-windows-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-server-windows-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server.exe | |
- name: Upload frida-portal | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-portal-windows-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal.exe | |
- name: Upload frida-inject | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
with: | |
name: frida-gadget-windows-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.dll | |
- name: Upload 64-bit frida-gadget | |
if: matrix.arch == 'x86_64' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-windows-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/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@v4 | |
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() { | |
$program = $args[0] | |
$arglist = $args | Select-Object -Skip 1 | |
& $program $arglist | |
$result = $LASTEXITCODE | |
if ($result -ne 0) { | |
throw "'$program $arglist' failed with exit status $result" | |
} | |
} | |
Run python .\tools\ensure-submodules.py frida-node | |
cd subprojects\frida-node | |
Run npm version $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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-server-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server.exe | |
- name: Upload frida-portal | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-portal-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal.exe | |
- name: Upload frida-inject | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-inject-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject.exe | |
- name: Upload frida-gadget | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/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@v4 | |
with: | |
name: frida-python-windows-arm64 | |
path: ${{ env.FRIDA_PREFIX }}/wheels/*.whl | |
- name: Build Node.js bindings | |
4B9A run: | | |
$installdir = "$Env:FRIDA_PREFIX\prebuilds" | |
$Env:FRIDA_DEPS = "$pwd\deps" | |
$Env:PKG_CONFIG_PATH = "$Env:FRIDA_PREFIX\lib\pkgconfig" | |
function Run() { | |
$program = $args[0] | |
$arglist = $args | Select-Object -Skip 1 | |
& $program $arglist | |
$result = $LASTEXITCODE | |
if ($result -ne 0) { | |
throw "'$program $arglist' failed with exit status $result" | |
} | |
} | |
Run python .\tools\ensure-submodules.py frida-node | |
cd subprojects\frida-node | |
Run npm version $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@v4 | |
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@v4 | |
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 | |
--enable-frida-swift | |
-- | |
-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@v4 | |
with: | |
name: frida-gum-devkit-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/ | |
- name: Upload gum-graft | |
if: matrix.arch != 'arm64e' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: gum-graft-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/gum-graft | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-server-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server | |
- name: Upload frida-portal | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-portal-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal | |
- name: Upload frida-inject | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
with: | |
name: frida-gadget-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/frida-gadget.dylib | |
- name: Upload Swift bindings | |
if: matrix.arch != 'arm64e' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-swift-macos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/Frameworks/ | |
- 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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-linux-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-linux-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-linux-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-server-linux-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server | |
- name: Upload frida-portal | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-portal-linux-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal | |
- name: Upload frida-inject | |
uses: actions/upload-artifact@v4 | |
with: | |
4B9A 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@v4 | |
with: | |
name: frida-gadget-linux-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.so | |
- name: Upload 64-bit frida-gadget | |
if: ${{ contains(matrix.arch, '64') }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-linux-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-ios-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-ios-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-ios-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }} | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-helper-ios-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-helper | |
- name: Upload frida-agent | |
if: ${{ matrix.arch != 'arm64' && !endsWith(matrix.arch, '-simulator') }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-agent-ios-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-agent.dylib | |
- name: Upload frida-gadget | |
if: matrix.arch != 'arm64' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-ios-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/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@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-watchos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-watchos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-watchos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/ | |
- name: Upload frida-gadget | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-watchos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/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@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-tvos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-tvos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-tvos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
if: ${{ !endsWith(matrix.arch, '-simulator') }} | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
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@v4 | |
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@v4 | |
with: | |
name: frida-helper-tvos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-helper | |
- name: Upload frida-agent | |
if: ${{ !endsWith(matrix.arch, '-simulator') }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-agent-tvos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/frida-agent.dylib | |
- name: Upload frida-gadget | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-tvos-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/usr/lib/frida/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 | |
< B7A /td> | steps: |
- name: Check out repo | |
uses: actions/checkout@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-android-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-android-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-android-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-server-android-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server | |
- name: Upload frida-portal | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-portal-android-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal | |
- name: Upload frida-inject | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
with: | |
name: frida-gadget-android-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.so | |
- name: Upload 64-bit frida-gadget | |
if: ${{ contains(matrix.arch, '64') }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-android-${{ matrix.arch }} | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/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@v4 | |
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@v4 | |
with: | |
name: frida-gum-devkit-qnx-armeabi | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gum/ | |
- name: Upload GumJS devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gumjs-devkit-qnx-armeabi | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/gumjs/ | |
- name: Upload Core devkit | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-core-devkit-qnx-armeabi | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/devkits/core/ | |
- name: Upload frida-server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-server-qnx-armeabi | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-server | |
- name: Upload frida-portal | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-portal-qnx-armeabi | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-portal | |
- name: Upload frida-inject | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-inject-qnx-armeabi | |
path: ${{ env.FRIDA_PREFIX }}/bin/frida-inject | |
- name: Upload frida-gadget | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frida-gadget-qnx-armeabi | |
path: ${{ env.FRIDA_PREFIX }}/lib/frida/32/frida-gadget.so | |
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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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@v4 | |
- 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 }} |