@@ -120,11 +120,34 @@ jobs:
120120 run : |
121121 if [ "${{ steps.process-env.outputs.OS }}" = "linux" ]; then
122122 ${{ steps.process-env.outputs.CMD }} install-pkg upx
123- UPX=--with-upx-pack
123+ if [ "${{ steps.process-env.outputs.ARCH }}" = "x86_64" ]; then
124+ UPX=--with-upx-pack
125+ fi
124126 fi
125127
126128 ${{ steps.process-env.outputs.CMD }} build --build-cli --build-micro --build-fpm ${{ steps.process-env.outputs.EXTENSIONS }} --debug $UPX
127129
130+ # Copy out from buildroot, because docker build has different permission
131+ mkdir -p tmp_dist/
132+ cp buildroot/bin/php tmp_dist/
133+ cp buildroot/bin/micro.sfx tmp_dist/
134+ cp buildroot/bin/php-fpm tmp_dist/
135+
136+ # UPX outside for linux-aarch64
137+ if [ "${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}" = "linux-aarch64" ]; then
138+ mkdir -p upx-x86_64
139+ cd upx-x86_64
140+ curl -#fSL -o upx.txz https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-amd64_linux.tar.xz
141+ tar -xf upx.txz --strip-components 1
142+ ./upx --best ../tmp_dist/php
143+ ./upx --best ../tmp_dist/micro.sfx
144+ SFX_SIZE=$(readelf -l ../tmp_dist/micro.sfx | awk '/LOAD|GNU_STACK/ {getline; print $1, $2, $3, $4, $6, $7}' | sed -n '2p' | awk '{print $1}')
145+ head -c $(printf "%d" $SFX_SIZE) ../tmp_dist/micro.sfx > ../tmp_dist/micro.sfx.new
146+ mv ../tmp_dist/micro.sfx.new ../tmp_dist/micro.sfx
147+ ./upx --best ../tmp_dist/php-fpm
148+ cd ..
149+ fi
150+
128151 PHPVER=$(cat source/php-src/main/php_version.h | grep "PHP_VERSION " | awk -F\" '{print $2}')
129152
130153 if [ ! -d "dist" ]; then
@@ -133,9 +156,9 @@ jobs:
133156
134157 sudo chmod -R 777 dist
135158
136- tar -czf dist/php-$PHPVER-cli-${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}.tar.gz -C buildroot/bin / php
137- tar -czf dist/php-$PHPVER-micro-${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}.tar.gz -C buildroot/bin / micro.sfx
138- tar -czf dist/php-$PHPVER-fpm-${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}.tar.gz -C buildroot/bin / php-fpm
159+ tar -czf dist/php-$PHPVER-cli-${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}.tar.gz -C tmp_dist / php
160+ tar -czf dist/php-$PHPVER-micro-${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}.tar.gz -C tmp_dist / micro.sfx
161+ tar -czf dist/php-$PHPVER-fpm-${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}.tar.gz -C tmp_dist / php-fpm
139162 if [ "${{ matrix.php-version }}" == "8.3" ] && [ "${{ matrix.runner }}" == "ubuntu-latest" ]; then
140163 cp -r buildroot/license dist/
141164 cp buildroot/build-extensions.json dist/
@@ -158,7 +181,7 @@ jobs:
158181 with :
159182 name : php-${{ matrix.php-version }}-${{ matrix.combination }}-${{ steps.process-env.outputs.OS }}-${{ steps.process-env.outputs.ARCH }}
160183 path : |
161- buildroot/bin /php
162- buildroot/bin /php-fpm
163- buildroot/bin /micro.sfx
184+ tmp_dist /php
185+ tmp_dist /php-fpm
186+ tmp_dist /micro.sfx
164187 if-no-files-found : error
0 commit comments