Update APK for SagerNet derivatives (#667) #598
This file contains 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: Build | |
on: | |
push: | |
branches: [master] | |
paths-ignore: [README.md] | |
release: | |
types: [published] | |
defaults: | |
run: | |
shell: bash | |
working-directory: src | |
env: | |
CACHE_EPOCH: 1 | |
CCACHE_MAXSIZE: 200M | |
CCACHE_MAXFILES: 0 | |
SCCACHE_CACHE_SIZE: 200M | |
jobs: | |
cache-toolchains-posix: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache toolchains (Linux, OpenWrt, Android) | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/gn/ | |
src/qemu-user-static*.deb | |
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache PGO (Linux, OpenWrt) | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/build/pgo_profiles/ | |
key: pgo-linux-openwrt-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache AFDO (Android) | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/android/profiles/ | |
key: afdo-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache Android NDK (Android) | |
uses: actions/cache@v4 | |
with: | |
path: src/third_party/android_toolchain/ndk/ | |
key: android-ndk-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- run: ./get-clang.sh | |
- run: EXTRA_FLAGS='target_os="android"' ./get-clang.sh | |
- run: | | |
if [ ! -f qemu-user-static*.deb ]; then | |
wget https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qemu/qemu-user-static_8.0%2Bdfsg-4_amd64.deb | |
fi | |
cache-toolchains-win: | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache toolchains | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/gn/ | |
~/.cargo/bin/ | |
~/bin/ninja.exe | |
key: toolchains-win-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache PGO (win64) | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/build/pgo_profiles/chrome-win64-* | |
key: pgo-win64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache PGO (win32) | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/build/pgo_profiles/chrome-win32-* | |
key: pgo-win32-arm64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- run: EXTRA_FLAGS='target_cpu="x64"' ./get-clang.sh | |
- run: EXTRA_FLAGS='target_cpu="x86"' ./get-clang.sh | |
- run: | | |
if [ ! -f ~/bin/ninja.exe ]; then | |
curl -LO https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip | |
unzip ninja-win.zip -d ~/bin | |
fi | |
cache-toolchains-mac: | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/chrome/build/pgo_profiles/chrome-mac-* | |
src/gn/ | |
key: toolchains-pgo-mac-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- run: EXTRA_FLAGS='target_cpu="x64"' ./get-clang.sh | |
- run: EXTRA_FLAGS='target_cpu="arm64"' ./get-clang.sh | |
linux: | |
needs: cache-toolchains-posix | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x64, x86, arm64, arm, mipsel, mips64el, riscv64] | |
env: | |
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}"' | |
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache toolchains (Linux, OpenWrt, Android) | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/gn/ | |
src/qemu-user-static*.deb | |
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache PGO (Linux, OpenWrt) | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/build/pgo_profiles/ | |
key: pgo-linux-openwrt-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Regenerate Debian keyring | |
run: | | |
rm -f ./build/linux/sysroot_scripts/keyring.gpg | |
GPG_TTY=/dev/null ./build/linux/sysroot_scripts/generate_keyring.sh | |
- name: Cache sysroot | |
uses: actions/cache@v4 | |
with: | |
path: src/out/sysroot-build/bullseye/bullseye_* | |
key: sysroot-linux-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- id: ccache-timestamp | |
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT | |
- name: Cache ccache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/ccache | |
key: ccache-linux-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }} | |
restore-keys: ccache-linux-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}- | |
- name: Install APT packages | |
run: | | |
sudo apt update | |
sudo apt install ninja-build pkg-config ccache bubblewrap | |
sudo apt remove -y qemu-user-binfmt | |
sudo dpkg -i qemu-user-static*.deb | |
# libc6-i386 interferes with x86 build | |
sudo apt remove libc6-i386 | |
- run: ./get-clang.sh | |
- run: ccache -z | |
- run: ./build.sh | |
- run: ccache -s | |
- run: ../tests/basic.sh out/Release/naive | |
- name: Pack naiveproxy assets | |
run: | | |
mkdir ${{ env.BUNDLE }} | |
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }} | |
tar cJf ${{ env.BUNDLE }}.tar.xz ${{ env.BUNDLE }} | |
openssl sha256 out/Release/naive >sha256sum.txt | |
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.BUNDLE }}.tar.xz naive executable sha256 ${{ env.SHA256SUM }} | |
path: src/sha256sum.txt | |
- name: Upload naiveproxy assets | |
if: ${{ github.event_name == 'release' }} | |
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.tar.xz --clobber | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
android: | |
needs: cache-toolchains-posix | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x64 | |
abi: x86_64 | |
- arch: x86 | |
abi: x86 | |
- arch: arm64 | |
abi: arm64-v8a | |
- arch: arm | |
abi: armeabi-v7a | |
env: | |
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}" target_os="android"' | |
BUNDLE: naiveproxy-plugin-${{ github.event.release.tag_name || 'v1' }}-${{ matrix.abi }}.apk | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Cache toolchains (Linux, OpenWrt, Android) | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/gn/ | |
src/qemu-user-static*.deb | |
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache AFDO (Android) | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/android/profiles/ | |
key: afdo-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache Android NDK (Android) | |
uses: actions/cache@v4 | |
with: | |
path: src/third_party/android_toolchain/ndk/ | |
key: android-ndk-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache sysroot | |
uses: actions/cache@v4 | |
with: | |
path: src/out/sysroot-build/android/ | |
key: sysroot-android-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- id: ccache-timestamp | |
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT | |
- name: Cache ccache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/ccache | |
key: ccache-android-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }} | |
restore-keys: ccache-android-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}- | |
- name: Install APT packages | |
run: | | |
sudo apt update | |
sudo apt install ninja-build pkg-config ccache bubblewrap | |
sudo apt remove -y qemu-user-binfmt | |
sudo dpkg -i qemu-user-static*.deb | |
# libc6-i386 interferes with x86 build | |
sudo apt remove libc6-i386 | |
- run: ./get-clang.sh | |
- run: ccache -z | |
- run: ./build.sh | |
- run: ccache -s | |
- run: ./get-android-sys.sh | |
- run: ../tests/basic.sh out/Release/naive | |
- name: Gradle cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.gradle | |
key: gradle-${{ hashFiles('**/*.gradle.kts') }} | |
- name: Create APK | |
working-directory: apk | |
env: | |
APK_ABI: ${{ matrix.abi }} | |
APK_VERSION_NAME: ${{ github.event.release.tag_name || 'v1' }} | |
KEYSTORE_PASS: ${{ secrets.KEYSTORE_PASS }} | |
run: | | |
mkdir -p app/libs/$APK_ABI | |
cp ../src/out/Release/naive app/libs/$APK_ABI/libnaive.so | |
./gradlew :app:assembleRelease | |
openssl sha256 app/build/outputs/apk/release/${{ env.BUNDLE }} >sha256sum.txt | |
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.BUNDLE }} sha256 ${{ env.SHA256SUM }} | |
path: apk/sha256sum.txt | |
- name: Upload naiveproxy assets | |
if: ${{ github.event_name == 'release' }} | |
working-directory: apk/app/build/outputs/apk/release | |
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }} --clobber | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
win: | |
needs: cache-toolchains-win | |
runs-on: windows-2019 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x64, x86, arm64] | |
env: | |
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}"' | |
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache toolchains | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/gn/ | |
~/.cargo/bin/ | |
~/bin/ninja.exe | |
key: toolchains-win-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache PGO (win64) | |
if: ${{ matrix.arch == 'x64' }} | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/build/pgo_profiles/chrome-win64-* | |
key: pgo-win64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache PGO (win32) | |
if: ${{ matrix.arch != 'x64' }} | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/build/pgo_profiles/chrome-win32-* | |
key: pgo-win32-arm64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- id: ccache-timestamp | |
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT | |
- name: Cache ccache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/AppData/Local/Mozilla/sccache | |
key: ccache-win-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }} | |
restore-keys: ccache-win-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}- | |
- run: ./get-clang.sh | |
- run: ~/.cargo/bin/sccache -z | |
- run: ./build.sh | |
- run: ~/.cargo/bin/sccache -s | |
- run: ../tests/basic.sh out/Release/naive | |
# No real or emulated environment is available to test this. | |
if: ${{ matrix.arch != 'arm64' }} | |
- name: Pack naiveproxy assets | |
run: | | |
mkdir ${{ env.BUNDLE }} | |
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }} | |
7z a ${{ env.BUNDLE }}.zip ${{ env.BUNDLE }} | |
openssl sha256 out/Release/naive.exe >sha256sum.txt | |
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.BUNDLE }}.zip naive executable sha256 ${{ env.SHA256SUM }} | |
path: src/sha256sum.txt | |
- name: Upload naiveproxy assets | |
if: ${{ github.event_name == 'release' }} | |
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.zip --clobber | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
mac: | |
needs: cache-toolchains-mac | |
runs-on: macos-13 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x64, arm64] | |
env: | |
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}"' | |
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache toolchains and PGO | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/chrome/build/pgo_profiles/chrome-mac-* | |
src/gn/ | |
key: toolchains-pgo-mac-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- id: ccache-timestamp | |
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT | |
- name: Cache ccache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/Library/Caches/ccache | |
key: ccache-mac-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }} | |
restore-keys: ccache-mac-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}- | |
- run: brew install ninja ccache | |
- run: pip install setuptools | |
- run: ./get-clang.sh | |
- run: ccache -z | |
- run: ./build.sh | |
- run: ccache -s | |
- run: ../tests/basic.sh out/Release/naive | |
# No real or emulated environment is available to test this. | |
if: ${{ matrix.arch != 'arm64' }} | |
- name: Pack naiveproxy assets | |
run: | | |
mkdir ${{ env.BUNDLE }} | |
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }} | |
tar cJf ${{ env.BUNDLE }}.tar.xz ${{ env.BUNDLE }} | |
openssl sha256 out/Release/naive >sha256sum.txt | |
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.BUNDLE }}.tar.xz naive executable sha256 ${{ env.SHA256SUM }} | |
path: src/sha256sum.txt | |
- name: Upload naiveproxy assets | |
if: ${{ github.event_name == 'release' }} | |
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.tar.xz --clobber | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
ios: | |
needs: cache-toolchains-mac | |
runs-on: macos-13 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [arm64] | |
env: | |
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}" target_os="ios" ios_enable_code_signing=false' | |
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache toolchains and PGO | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/chrome/build/pgo_profiles/chrome-mac-* | |
src/gn/ | |
key: toolchains-pgo-mac-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- id: ccache-timestamp | |
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT | |
- name: Cache ccache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/Library/Caches/ccache | |
key: ccache-ios-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }} | |
restore-keys: ccache-ios-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}- | |
- run: brew install ninja ccache | |
- run: pip install setuptools | |
- run: ./get-clang.sh | |
- run: ccache -z | |
- run: ./build.sh | |
- run: ccache -s | |
openwrt: | |
needs: cache-toolchains-posix | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x86_64 | |
openwrt: "target=x86 subtarget=64" | |
target_cpu: x64 | |
- arch: x86 | |
openwrt: "target=x86 subtarget=generic" | |
target_cpu: x86 | |
- arch: aarch64_cortex-a53 | |
openwrt: "target=sunxi subtarget=cortexa53" | |
target_cpu: arm64 | |
extra: 'arm_cpu="cortex-a53"' | |
- arch: aarch64_cortex-a53-static | |
openwrt: "target=sunxi subtarget=cortexa53" | |
target_cpu: arm64 | |
extra: 'arm_cpu="cortex-a53" build_static=true no_madvise_syscall=true' | |
- arch: aarch64_cortex-a72 | |
openwrt: "target=mvebu subtarget=cortexa72" | |
target_cpu: arm64 | |
extra: 'arm_cpu="cortex-a72"' | |
- arch: aarch64_cortex-a72-static | |
openwrt: "target=mvebu subtarget=cortexa72" | |
target_cpu: arm64 | |
extra: 'arm_cpu="cortex-a72" build_static=true no_madvise_syscall=true' | |
- arch: aarch64_generic | |
openwrt: "target=rockchip subtarget=armv8" | |
target_cpu: arm64 | |
- arch: aarch64_generic-static | |
openwrt: "target=rockchip subtarget=armv8" | |
target_cpu: arm64 | |
extra: "build_static=true no_madvise_syscall=true" | |
- arch: arm_arm1176jzf-s_vfp | |
openwrt: "target=bcm27xx subtarget=bcm2708" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="arm1176jzf-s" arm_fpu="vfp" arm_float_abi="hard" arm_use_neon=false arm_use_thumb=false' | |
- arch: arm_arm926ej-s | |
openwrt: "target=mxs subtarget=generic" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="arm926ej-s" arm_float_abi="soft" arm_use_neon=false arm_use_thumb=false' | |
- arch: arm_cortex-a15_neon-vfpv4 | |
openwrt: "target=armsr subtarget=armv7" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a15" arm_fpu="neon-vfpv4" arm_float_abi="hard" arm_use_neon=true' | |
- arch: arm_cortex-a5_vfpv4 | |
openwrt: "target=at91 subtarget=sama5" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a5" arm_fpu="vfpv4" arm_float_abi="hard" arm_use_neon=false' | |
- arch: arm_cortex-a7 | |
openwrt: "target=mediatek subtarget=mt7629" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_float_abi="soft" arm_use_neon=false' | |
- arch: arm_cortex-a7_neon-vfpv4 | |
openwrt: "target=sunxi subtarget=cortexa7" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_fpu="neon-vfpv4" arm_float_abi="hard" arm_use_neon=true' | |
- arch: arm_cortex-a7_vfpv4 | |
openwrt: "target=at91 subtarget=sama7" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_fpu="vfpv4" arm_float_abi="hard" arm_use_neon=false' | |
- arch: arm_cortex-a7_neon-vfpv4-static | |
openwrt: "target=sunxi subtarget=cortexa7" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_fpu="neon-vfpv4" arm_float_abi="hard" arm_use_neon=true build_static=true no_madvise_syscall=true' | |
- arch: arm_cortex-a8_vfpv3 | |
openwrt: "target=sunxi subtarget=cortexa8" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a8" arm_fpu="vfpv3" arm_float_abi="hard" arm_use_neon=false' | |
- arch: arm_cortex-a9 | |
openwrt: "target=bcm53xx subtarget=generic" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_float_abi="soft" arm_use_neon=false' | |
- arch: arm_cortex-a9-static | |
openwrt: "target=bcm53xx subtarget=generic" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_float_abi="soft" arm_use_neon=false build_static=true no_madvise_syscall=true' | |
- arch: arm_cortex-a9_neon | |
openwrt: "target=zynq subtarget=generic" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_fpu="neon" arm_float_abi="hard" arm_use_neon=true' | |
- arch: arm_cortex-a9_vfpv3-d16 | |
openwrt: "target=tegra subtarget=generic" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_fpu="vfpv3-d16" arm_float_abi="hard" arm_use_neon=false' | |
- arch: arm_mpcore | |
openwrt: "target=oxnas subtarget=ox820" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="mpcore" arm_float_abi="soft" arm_use_neon=false arm_use_thumb=false' | |
- arch: arm_xscale | |
openwrt: "target=kirkwood subtarget=generic" | |
target_cpu: arm | |
extra: 'arm_version=0 arm_cpu="xscale" arm_float_abi="soft" arm_use_neon=false arm_use_thumb=false' | |
- arch: mipsel_24kc | |
openwrt: "target=ramips subtarget=rt305x" | |
target_cpu: mipsel | |
extra: 'mips_arch_variant="r2" mips_float_abi="soft"' | |
- arch: mipsel_24kc-static | |
openwrt: "target=ramips subtarget=rt305x" | |
target_cpu: mipsel | |
extra: 'mips_arch_variant="r2" mips_float_abi="soft" build_static=true no_madvise_syscall=true' | |
- arch: mipsel_mips32 | |
openwrt: "target=bcm47xx subtarget=generic" | |
target_cpu: mipsel | |
extra: 'mips_arch_variant="r1" mips_float_abi="soft"' | |
- arch: riscv64 | |
openwrt: "target=sifiveu subtarget=generic" | |
target_cpu: riscv64 | |
env: | |
EXTRA_FLAGS: target_cpu="${{ matrix.target_cpu }}" target_os="openwrt" ${{ matrix.extra }} | |
OPENWRT_FLAGS: arch=${{ matrix.arch }} release=23.05.0 gcc_ver=12.3.0 ${{ matrix.openwrt }} | |
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache toolchains (Linux, OpenWrt, Android) | |
uses: actions/cache@v4 | |
with: | |
path: | | |
src/third_party/llvm-build/Release+Asserts/ | |
src/gn/ | |
src/qemu-user-static*.deb | |
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache PGO (Linux, OpenWrt) | |
uses: actions/cache@v4 | |
with: | |
path: src/chrome/build/pgo_profiles/ | |
key: pgo-linux-openwrt-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }} | |
- name: Cache sysroot | |
uses: actions/cache@v4 | |
with: | |
path: src/out/sysroot-build/openwrt | |
key: sysroot-openwrt-23.05.0-${{ matrix.arch }}-v${{ env.CACHE_EPOCH }} | |
- id: ccache-timestamp | |
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT | |
- name: Cache ccache files | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/ccache | |
key: ccache-openwrt-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }} | |
restore-keys: ccache-openwrt-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}- | |
- name: Install APT packages | |
run: | | |
sudo apt update | |
sudo apt install ninja-build pkg-config ccache bubblewrap | |
sudo apt remove -y qemu-user-binfmt | |
sudo dpkg -i qemu-user-static*.deb | |
# libc6-i386 interferes with x86 build | |
sudo apt remove libc6-i386 | |
- run: ./get-clang.sh | |
- run: ccache -z | |
- run: ./build.sh | |
- run: ccache -s | |
- run: ../tests/basic.sh out/Release/naive | |
- name: Pack naiveproxy assets | |
run: | | |
mkdir ${{ env.BUNDLE }} | |
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }} | |
tar cJf ${{ env.BUNDLE }}.tar.xz ${{ env.BUNDLE }} | |
openssl sha256 out/Release/naive >sha256sum.txt | |
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.BUNDLE }}.tar.xz naive executable sha256 ${{ env.SHA256SUM }} | |
path: src/sha256sum.txt | |
- name: Upload naiveproxy assets | |
if: ${{ github.event_name == 'release' }} | |
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.tar.xz --clobber | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |