Skip to content

Commit

Permalink
Build Android binaries in CI
Browse files Browse the repository at this point in the history
Android support is still highly in demand for whatever reason.
Since I did all the work to support this already anyway, we might
as well just have it built here instead of getting people sending
random issues attempting to build it themselves.
  • Loading branch information
dktapps committed Dec 19, 2024
1 parent 8cb0722 commit b1eaaa4
Showing 1 changed file with 88 additions and 5 deletions.
93 changes: 88 additions & 5 deletions .github/workflows/main-pm-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,92 @@ on:
required: true
type: boolean

env:
MUSL_CROSS_MAKE_VERSION: 7b9487e56efc83c419a397af7df7f119001dc51c

jobs:
android:
name: Android arm64
runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v4

- name: Install tools and dependencies
run: |
sudo apt-get update
sudo apt-get install make autoconf automake libtool libtool-bin m4 wget libc-bin gzip bzip2 bison g++ git re2c
- name: Prepare compile.sh download cache
id: download-cache
uses: actions/cache@v4
with:
path: ./download_cache
key: compile-sh-cache-ssl-https-${{ hashFiles('./compile.sh') }}
restore-keys: compile-sh-cache-ssl-https-

- name: Fetch compiler cache
id: compiler-cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/compiler
key: musl-cross-make-${{ env.MUSL_CROSS_MAKE_VERSION }}
restore-keys: musl-cross-make-

- name: Checkout musl-cross-make
uses: actions/checkout@v4
with:
repository: pmmp/musl-cross-make
path: musl-cross-make
ref: ${{ env.MUSL_CROSS_MAKE_VERSION }}

- name: Build compiler
working-directory: musl-cross-make
run: |
echo "TARGET = aarch64-linux-musl" > config.mak
make -j$(nproc)
make install
mv ./output "${{ github.workspace }}/compiler"
- name: Compile PHP
run: |
export PATH="${{ github.workspace }}/compiler/bin:$PATH"
# Used "set -ex" instead of hashbang since script isn't executed with hashbang
set -ex
trap "exit 1" ERR
./compile.sh -t android-aarch64 -x -j 4 -g -P ${{ inputs.pm-version-major }} -c ./download_cache -D -z ${{ inputs.php-version-base }}
- name: Create tarball
run: |
tar -czf ./PHP-${{ inputs.php-version-base }}-Android-arm64-PM${{ inputs.pm-version-major }}.tar.gz bin
tar -czf ./PHP-${{ inputs.php-version-base }}-Android-arm64-PM${{ inputs.pm-version-major }}-debugging-symbols.tar.gz bin-debug
- name: Upload artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: PHP-${{ inputs.php-version-base }}-Android-PM${{ inputs.pm-version-major }}
path: |
./PHP-${{ inputs.php-version-base }}-Android-arm64-PM${{ inputs.pm-version-major }}*.tar.gz
install.log
compile.sh
if-no-files-found: error

- name: Prepare workspace for upload
if: failure()
run: tar -czf workspace.tar.gz install_data

- name: Upload workspace
uses: actions/upload-artifact@v4
if: failure()
with:
name: PHP-${{ inputs.php-version-base }}-Android-workspace-PM${{ inputs.pm-version-major }}
path: |
workspace.tar.gz
if-no-files-found: error

linux:
name: Linux
runs-on: ubuntu-20.04
Expand Down Expand Up @@ -186,7 +271,7 @@ jobs:

publish:
name: Publish binaries
needs: [linux, macos, windows]
needs: [linux, macos, windows, android]
runs-on: ubuntu-20.04
if: ${{ github.ref_name == 'stable' && github.ref_type == 'branch' && !contains(github.event.head_commit.message, '[no release]') }}
concurrency: release-${{ inputs.php-version-base }}-pm${{ inputs.pm-version-major }}
Expand Down Expand Up @@ -237,8 +322,7 @@ jobs:
if: ${{ inputs.special-release != 'none' }}
with:
artifacts: |
${{ github.workspace }}/PHP-*-Linux-PM*/*.tar.gz
${{ github.workspace }}/PHP-*-MacOS-*-PM*/*.tar.gz
${{ github.workspace }}/PHP-*-PM*/*.tar.gz
${{ github.workspace }}/PHP-*-Windows-PM*/*.zip
name: PM ${{ inputs.pm-version-major }}.x (${{ steps.date.outputs.DATE }}) - Recommended
tag: pm${{ inputs.pm-version-major }}-latest
Expand All @@ -253,8 +337,7 @@ jobs:
uses: ncipollo/[email protected]
with:
artifacts: |
${{ github.workspace }}/PHP-*-Linux-PM*/*.tar.gz
${{ github.workspace }}/PHP-*-MacOS-*-PM*/*.tar.gz
${{ github.workspace }}/PHP-*-PM*/*.tar.gz
${{ github.workspace }}/PHP-*-Windows-PM*/*.zip
name: PM ${{ inputs.pm-version-major }}.x (${{ steps.date.outputs.DATE }}) - PHP ${{ inputs.php-version-base }}
tag: pm${{ inputs.pm-version-major }}-php-${{ inputs.php-version-base }}-latest
Expand Down

0 comments on commit b1eaaa4

Please sign in to comment.