+ Windows + MacOs2 #18
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: PHP Build | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
jobs: | |
build-ubuntu: | |
runs-on: ubuntu-latest | |
services: | |
mysql: | |
image: mysql:8.3 | |
env: | |
MYSQL_ROOT_PASSWORD: '' | |
MYSQL_ALLOW_EMPTY_PASSWORD: yes | |
MYSQL_DATABASE: test | |
ports: ['3306:3306'] | |
options: >- | |
--health-cmd="mysqladmin ping --silent" | |
--health-interval=10s | |
--health-timeout=5s | |
--health-retries=5 | |
postgres: | |
image: postgres:16 | |
env: | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: test | |
ports: ['5432:5432'] | |
options: >- | |
--health-cmd="pg_isready" | |
--health-interval=10s | |
--health-timeout=5s | |
--health-retries=5 | |
steps: | |
- name: Checkout php-async repo | |
uses: actions/checkout@v4 | |
with: | |
path: async | |
- name: Clone php-src (true-async-stable) | |
run: | | |
git clone --depth=1 --branch=true-async-stable https://github.com/true-async/php-src php-src | |
- name: Copy php-async extension into php-src | |
run: | | |
mkdir -p php-src/ext/async | |
cp -r async/* php-src/ext/async/ | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
gcc g++ autoconf bison re2c \ | |
libgmp-dev libicu-dev libtidy-dev libsasl2-dev \ | |
libzip-dev libbz2-dev libsqlite3-dev libonig-dev libcurl4-openssl-dev \ | |
libxml2-dev libxslt1-dev libpq-dev libreadline-dev libldap2-dev libsodium-dev \ | |
libargon2-dev \ | |
firebird-dev \ | |
libuv1-dev | |
- name: Configure PHP | |
working-directory: php-src | |
run: | | |
./buildconf -f | |
./configure \ | |
--enable-zts \ | |
--enable-fpm \ | |
--enable-opcache \ | |
--with-pdo-mysql=mysqlnd \ | |
--with-mysqli=mysqlnd \ | |
--with-pgsql \ | |
--with-pdo-pgsql \ | |
--with-pdo-sqlite \ | |
--enable-intl \ | |
--without-pear \ | |
--with-zip \ | |
--with-zlib \ | |
--enable-soap \ | |
--enable-xmlreader \ | |
--with-xsl \ | |
--with-tidy \ | |
--enable-sysvsem \ | |
--enable-sysvshm \ | |
--enable-shmop \ | |
--enable-pcntl \ | |
--with-readline \ | |
--enable-mbstring \ | |
--with-curl \ | |
--with-gettext \ | |
--enable-sockets \ | |
--with-bz2 \ | |
--with-openssl \ | |
--with-gmp \ | |
--enable-bcmath \ | |
--enable-calendar \ | |
--enable-ftp \ | |
--enable-sysvmsg \ | |
--with-ffi \ | |
--enable-zend-test \ | |
--enable-dl-test=shared \ | |
--with-ldap \ | |
--with-ldap-sasl \ | |
--with-password-argon2 \ | |
--with-mhash \ | |
--with-sodium \ | |
--enable-dba \ | |
--with-cdb \ | |
--enable-flatfile \ | |
--enable-inifile \ | |
--with-config-file-path=/etc \ | |
--with-config-file-scan-dir=/etc/php.d \ | |
--with-pdo-firebird \ | |
--enable-async | |
- name: Build PHP | |
working-directory: php-src | |
run: | | |
make -j"$(nproc)" | |
sudo make install | |
sudo mkdir -p /etc/php.d | |
sudo chmod 777 /etc/php.d | |
{ | |
echo "opcache.enable_cli=1" | |
echo "opcache.protect_memory=1" | |
} > /etc/php.d/opcache.ini | |
- name: Run tests | |
working-directory: php-src/ext/async | |
run: | | |
/usr/local/bin/php -v | |
/usr/local/bin/php ../../run-tests.php \ | |
-d zend_extension=opcache.so \ | |
-d opcache.enable_cli=1 \ | |
-d opcache.jit_buffer_size=64M \ | |
-d opcache.jit=tracing \ | |
-d zend_test.observer.enabled=1 \ | |
-d zend_test.observer.show_output=0 \ | |
-P -q -x -j2 \ | |
-g FAIL,BORK,LEAK,XLEAK \ | |
--no-progress \ | |
--offline \ | |
--show-diff \ | |
--show-slow 1000 \ | |
--set-timeout 120 \ | |
--repeat 2 | |
build-cross-platform: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, macos-latest] | |
include: | |
- os: windows-latest | |
platform: windows | |
- os: macos-latest | |
platform: macos | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout php-async repo | |
uses: actions/checkout@v4 | |
with: | |
path: async | |
- name: Clone php-src (true-async-stable) | |
run: | | |
git clone --depth=1 --branch=true-async-stable https://github.com/true-async/php-src php-src | |
- name: Copy php-async extension into php-src | |
run: | | |
mkdir -p php-src/ext/async | |
cp -r async/* php-src/ext/async/ | |
- name: Install build dependencies (Windows) | |
if: matrix.os == 'windows-latest' | |
run: | | |
choco install -y visualstudio2022buildtools | |
choco install -y git | |
choco install -y cmake | |
choco install -y vcpkg | |
vcpkg install libuv:x64-windows | |
vcpkg install openssl:x64-windows | |
vcpkg install zlib:x64-windows | |
vcpkg integrate install | |
shell: cmd | |
- name: Install build dependencies (macOS) | |
if: matrix.os == 'macos-latest' | |
run: | | |
brew install autoconf bison re2c | |
brew install gmp icu4c tidyhtml5 | |
brew install libzip bzip2 sqlite oniguruma curl | |
brew install libxml2 libxslt postgresql readline ldns libsodium | |
brew install argon2 libuv openssl@3 | |
echo "PKG_CONFIG_PATH=$(brew --prefix openssl@3)/lib/pkgconfig:$(brew --prefix icu4c)/lib/pkgconfig:$(brew --prefix libxml2)/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV | |
echo "PATH=$(brew --prefix bison)/bin:$PATH" >> $GITHUB_ENV | |
- name: Configure PHP (Windows) | |
if: matrix.os == 'windows-latest' | |
working-directory: php-src | |
run: | | |
call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat" | |
buildconf.bat --force | |
configure.bat --enable-snapshot-build --enable-debug-pack --with-pdo-oci=C:\oracle\product\19.0.0\client_1\sdk,shared --with-oci8=C:\oracle\product\19.0.0\client_1\sdk,shared --enable-object-out-dir=../obj/ --enable-com-dotnet=shared --with-mcrypt=static --without-analyzer --with-pgo | |
shell: cmd | |
- name: Build PHP (Windows) | |
if: matrix.os == 'windows-latest' | |
working-directory: php-src | |
run: | | |
call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat" | |
nmake | |
shell: cmd | |
- name: Configure PHP (macOS) | |
if: matrix.os == 'macos-latest' | |
working-directory: php-src | |
run: | | |
./buildconf -f | |
./configure \ | |
--enable-zts \ | |
--enable-fpm \ | |
--enable-opcache \ | |
--with-pdo-mysql=mysqlnd \ | |
--with-mysqli=mysqlnd \ | |
--with-pdo-sqlite \ | |
--enable-intl \ | |
--without-pear \ | |
--with-zip \ | |
--with-zlib \ | |
--enable-soap \ | |
--enable-xmlreader \ | |
--with-xsl \ | |
--enable-sysvsem \ | |
--enable-sysvshm \ | |
--enable-shmop \ | |
--enable-pcntl \ | |
--with-readline \ | |
--enable-mbstring \ | |
--with-curl \ | |
--with-gettext \ | |
--enable-sockets \ | |
--with-bz2 \ | |
--with-openssl=$(brew --prefix openssl@3) \ | |
--with-gmp \ | |
--enable-bcmath \ | |
--enable-calendar \ | |
--enable-ftp \ | |
--enable-sysvmsg \ | |
--with-ffi \ | |
--enable-zend-test \ | |
--enable-dl-test=shared \ | |
--with-password-argon2 \ | |
--with-mhash \ | |
--with-sodium \ | |
--enable-dba \ | |
--with-cdb \ | |
--enable-flatfile \ | |
--enable-inifile \ | |
--with-config-file-path=/usr/local/etc \ | |
--with-config-file-scan-dir=/usr/local/etc/php.d \ | |
--enable-async | |
- name: Build PHP (macOS) | |
if: matrix.os == 'macos-latest' | |
working-directory: php-src | |
run: | | |
make -j"$(sysctl -n hw.ncpu)" | |
sudo make install | |
sudo mkdir -p /usr/local/etc/php.d | |
sudo chmod 777 /usr/local/etc/php.d | |
{ | |
echo "opcache.enable_cli=1" | |
echo "opcache.protect_memory=1" | |
} > /usr/local/etc/php.d/opcache.ini | |
- name: Run tests (Windows) | |
if: matrix.os == 'windows-latest' | |
working-directory: php-src/ext/async | |
run: | | |
php.exe -v | |
php.exe ../../run-tests.php ^ | |
-d zend_extension=opcache.dll ^ | |
-d opcache.enable_cli=1 ^ | |
-d opcache.jit_buffer_size=64M ^ | |
-d opcache.jit=tracing ^ | |
-d zend_test.observer.enabled=1 ^ | |
-d zend_test.observer.show_output=0 ^ | |
-P -q -x -j2 ^ | |
-g FAIL,BORK,LEAK,XLEAK ^ | |
--no-progress ^ | |
--offline ^ | |
--show-diff ^ | |
--show-slow 1000 ^ | |
--set-timeout 120 ^ | |
--repeat 2 | |
shell: cmd | |
- name: Run tests (macOS) | |
if: matrix.os == 'macos-latest' | |
working-directory: php-src/ext/async | |
run: | | |
/usr/local/bin/php -v | |
/usr/local/bin/php ../../run-tests.php \ | |
-d zend_extension=opcache.so \ | |
-d opcache.enable_cli=1 \ | |
-d opcache.jit_buffer_size=64M \ | |
-d opcache.jit=tracing \ | |
-d zend_test.observer.enabled=1 \ | |
-d zend_test.observer.show_output=0 \ | |
-P -q -x -j2 \ | |
-g FAIL,BORK,LEAK,XLEAK \ | |
--no-progress \ | |
--offline \ | |
--show-diff \ | |
--show-slow 1000 \ | |
--set-timeout 120 \ | |
--repeat 2 |