-
Notifications
You must be signed in to change notification settings - Fork 0
159 lines (129 loc) · 5.4 KB
/
macos-x86_64.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
name: build-php-cli-macos-x86_64
on:
push:
pull_request:
env:
BUILD_PHP_VERSION: 8.2.13
jobs:
macos-x86_64:
if: 1
runs-on: macos-latest
strategy:
matrix:
php-version:
- "8.2.13"
# - "8.1.27"
# - "8.3.1"
steps:
- uses: actions/checkout@v3
- name: Prepare build environment
run: |
env
echo $HOME
brew config
bash sapi/quickstart/macos/macos-init.sh
# sudo rm -rf /Library/Developer/CommandLineTools
# xcode-select --install
# sudo xcode-select --reset
# sudo xcode-select -switch /Library/Developer/CommandLineTools
# softwareupdate --list --verbose
# softwareupdate --install -a
# xcode-select --install
# export SDKROOT=$(xcrun --show-sdk-path)
ls -lh $(xcrun --show-sdk-path)
# sudo xcode-select --switch /Applications/Xcode.app
# export MACOSX_DEPLOYMENT_TARGET=12.6
ifconfig
export IPV6=$(ifconfig en0 | grep "inet6 " | grep -v "inet6 fe80:" | awk '{print $2}' | cut -d'/' -f1 | sed -n '2p')
export IPV4=$(ifconfig en0 | grep "inet " | grep -v 127.0.0 | awk '{print $2}' | cut -d'/' -f1 | sed -n '1p')
echo $IPV4
echo $IPV6
echo "X_IPV6=${IPV6}" >> $GITHUB_ENV
echo "X_IPV4=${IPV4}" >> $GITHUB_ENV
echo "BUILD_PHP_VERSION=${{ matrix.php-version }}" >> $GITHUB_ENV
export PATH=/usr/local/opt/bison/bin:/usr/local/opt/llvm/bin:$PATH
# brew bison --debug
CURRENT_USER=$(whoami)
echo ${CURRENT_USER}
sudo mkdir -p /usr/local/swoole-cli
CURRENT_USER=$(whoami) && sudo chown -R ${CURRENT_USER}:staff /usr/local/swoole-cli
# git submodule update --init
- name: Cache PHP Runtime
uses: actions/cache@v3
id: php-runtime-cache
with:
path: ${{ github.workspace }}/bin/runtime
key: ${{ runner.os }}-x86_64-php-runtime
- name: Cache PHP Vendor
uses: actions/cache@v3
id: php-vendor-cache
with:
path: ${{ github.workspace }}/vendor
key: ${{ runner.os }}-x86_64-php-vendor
- name: Cache Dependency Source Code Tarball
uses: actions/cache@v3
id: dependency-cache
with:
path: ${{ github.workspace }}/pool/
key: ${{ github.head_ref || github.ref_name }}-${{ runner.os }}-x86_64-pool
- name: Cache all-library
uses: actions/cache@v3
id: all-library-cache
with:
path: /usr/local/swoole-cli
key: ${{ github.head_ref || github.ref_name }}-${{ runner.os }}-x86_64-all-library
- name: Prepare Runtime and Libraries and Extensions
run: |
set -x
mkdir -p pool/lib
mkdir -p pool/ext
mkdir -p bin/runtime
if [ ! -f bin/runtime/php ] ; then
bash sapi/quickstart/setup-php-runtime.sh
fi
if test $(ls -A pool/lib/ | wc -l) -eq 0 ; then
bash sapi/download-box/download-box-get-archive-from-server.sh
fi
ls -A pool/lib/
ls -A /usr/local/swoole-cli/
- name: prepare
run: |
export PATH=${{ github.workspace }}/bin/runtime:$PATH
alias php="php -d curl.cainfo=${{ github.workspace }}/bin/runtime/cacert.pem -d openssl.cafile=${{ github.workspace }}/bin/runtime/cacert.pem"
composer update --optimize-autoloader
php prepare.php --without-docker=1 +ds +apcu +xlswriter +ssh2 +pgsql -mongodb --with-build-type=release --with-swoole-pgsql=1 --with-libavif=1 --with-php-version=${{ env.BUILD_PHP_VERSION }}
- name: Build
run: |
export PATH=${{ github.workspace }}/bin/runtime:$PATH
bash make-install-deps.sh
bash ./make.sh all-library
bash ./make.sh config
bash ./make.sh build
bash ./make.sh archive
- name: Show Build Result
run: |
export PATH="/usr/local/opt/binutils/bin:$PATH"
./thirdparty/php-src/sapi/cli/php -v
./thirdparty/php-src/sapi/cli/php -m
./thirdparty/php-src/sapi/cli/php --ri gd
./thirdparty/php-src/sapi/cli/php --ri swoole
./thirdparty/php-src/sapi/cli/php --ri pgsql
file ./bin/php-${{ env.BUILD_PHP_VERSION }}/bin/php
otool -L ./bin/php-${{ env.BUILD_PHP_VERSION }}/bin/php
# greadelf -h ./bin/php-${{ env.BUILD_PHP_VERSION }}/bin/php
APP_VERSION=$(./bin/php-${{ env.BUILD_PHP_VERSION }}/bin/php -v | head -n 1 | awk '{print $2}')
echo "APP_VERSION=${APP_VERSION}" >> $GITHUB_ENV
./bin/php-${{ env.BUILD_PHP_VERSION }}/bin/php -r "echo PHP_VERSION;"
./thirdparty/php-src/sapi/cli/php ./vendor/bin/phpunit ./sapi/src/UnitTest/MainTest.php --list-tests
./thirdparty/php-src/sapi/cli/php ./vendor/bin/phpunit ./sapi/src/UnitTest/MainTest.php
- name: Archive production artifacts
uses: actions/upload-artifact@v3
with:
name: php-cli-v${{ env.APP_VERSION }}-macos-x64
retention-days: 90
path: ./bin/php-${{ env.BUILD_PHP_VERSION }}/bin/php
- name: gh release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: php-cli-v${{ env.APP_VERSION }}-macos-x64.tar.xz