1+ name : True Async FreeBSD Build
2+
3+ on :
4+ push :
5+ branches : [build]
6+ pull_request :
7+ branches : [build]
8+
9+ jobs :
10+ build-freebsd :
11+ strategy :
12+ fail-fast : false
13+ matrix :
14+ zts : [true, false]
15+
16+ name : " FREEBSD_${{ matrix.zts && 'ZTS' || 'NTS' }}"
17+ runs-on : ubuntu-latest
18+ timeout-minutes : 90
19+
20+ steps :
21+ - name : Checkout php-async repo
22+ uses : actions/checkout@v4
23+ with :
24+ path : async
25+
26+ - name : Clone php-src (true-async-stable)
27+ run : |
28+ git clone --depth=1 --branch=true-async-stable https://github.com/true-async/php-src php-src
29+
30+ - name : Copy php-async extension into php-src
31+ run : |
32+ mkdir -p php-src/ext/async
33+ cp -r async/* php-src/ext/async/
34+
35+ - name : FreeBSD Build and Test
36+ uses : vmactions/freebsd-vm@v1
37+ with :
38+ release : ' 13.3'
39+ usesh : true
40+ copyback : false
41+ prepare : |
42+ cd $GITHUB_WORKSPACE/php-src
43+
44+ # Load kernel modules
45+ kldload accf_http
46+
47+ # Install build dependencies
48+ pkg install -y \
49+ autoconf \
50+ bison \
51+ gmake \
52+ re2c \
53+ icu \
54+ libiconv \
55+ png \
56+ freetype2 \
57+ enchant2 \
58+ bzip2 \
59+ t1lib \
60+ gmp \
61+ libsodium \
62+ libzip \
63+ libxml2 \
64+ libxslt \
65+ openssl \
66+ oniguruma \
67+ pkgconf \
68+ webp \
69+ libavif \
70+ curl \
71+ libuv \
72+ cmake
73+
74+ echo "=== System Info ==="
75+ echo "FreeBSD version:"
76+ freebsd-version
77+ echo "CPU info:"
78+ sysctl hw.model hw.ncpu hw.physmem
79+ echo "LibUV version:"
80+ pkg info libuv || echo "LibUV package info not available"
81+
82+ # Configure PHP with async extension
83+ ./buildconf -f
84+ ./configure \
85+ --prefix=/usr/local \
86+ --enable-debug \
87+ --enable-option-checking=fatal \
88+ --enable-fpm \
89+ --without-sqlite3 \
90+ --without-pdo-sqlite \
91+ --without-pear \
92+ --with-bz2 \
93+ --with-avif \
94+ --with-jpeg \
95+ --with-webp \
96+ --with-freetype \
97+ --enable-gd \
98+ --enable-exif \
99+ --with-zip \
100+ --with-zlib \
101+ --enable-soap \
102+ --enable-xmlreader \
103+ --with-xsl \
104+ --with-libxml \
105+ --enable-shmop \
106+ --enable-pcntl \
107+ --enable-mbstring \
108+ --with-curl \
109+ --enable-sockets \
110+ --with-openssl \
111+ --with-iconv=/usr/local \
112+ --enable-bcmath \
113+ --enable-calendar \
114+ --enable-ftp \
115+ --with-ffi \
116+ --enable-zend-test \
117+ --enable-dl-test=shared \
118+ --enable-intl \
119+ --with-mhash \
120+ --with-sodium \
121+ --enable-werror \
122+ --with-config-file-path=/etc \
123+ --with-config-file-scan-dir=/etc/php.d \
124+ --${{ matrix.zts && 'enable' || 'disable' }}-zts \
125+ --enable-async
126+
127+ # Build PHP
128+ echo "=== Building PHP ==="
129+ gmake -j2
130+
131+ # Install PHP
132+ echo "=== Installing PHP ==="
133+ mkdir -p /etc/php.d
134+ gmake install > /dev/null
135+ echo "opcache.enable_cli=1" > /etc/php.d/opcache.ini
136+ echo "opcache.protect_memory=1" >> /etc/php.d/opcache.ini
137+ echo "opcache.preload_user=root" >> /etc/php.d/opcache.ini
138+
139+ run : |
140+ cd $GITHUB_WORKSPACE/php-src
141+
142+ # Test environment setup
143+ export SKIP_IO_CAPTURE_TESTS=1
144+ export CI_NO_IPV6=1
145+ export STACK_LIMIT_DEFAULTS_CHECK=1
146+
147+ echo "=== PHP Version ==="
148+ /usr/local/bin/php -v
149+
150+ echo "=== Running Basic Async Tests ==="
151+ /usr/local/bin/php run-tests.php \
152+ -P -q -j2 \
153+ -g FAIL,BORK,LEAK,XLEAK \
154+ --no-progress \
155+ --offline \
156+ --show-diff \
157+ --show-slow 4000 \
158+ --set-timeout 120 \
159+ ext/async/tests
160+
161+ echo "=== Running Async Tests with OpCache ==="
162+ /usr/local/bin/php run-tests.php \
163+ -P -q -j2 \
164+ -g FAIL,BORK,LEAK,XLEAK \
165+ --no-progress \
166+ --offline \
167+ --show-diff \
168+ --show-slow 4000 \
169+ --set-timeout 120 \
170+ -d zend_extension=opcache.so \
171+ -d opcache.enable_cli=1 \
172+ ext/async/tests
173+
174+ echo "=== Running Async Tests with JIT Tracing ==="
175+ /usr/local/bin/php run-tests.php \
176+ -P -q -j2 \
177+ -g FAIL,BORK,LEAK,XLEAK \
178+ --no-progress \
179+ --offline \
180+ --show-diff \
181+ --show-slow 4000 \
182+ --set-timeout 120 \
183+ -d zend_extension=opcache.so \
184+ -d opcache.enable_cli=1 \
185+ -d opcache.jit_buffer_size=64M \
186+ -d opcache.jit=tracing \
187+ ext/async/tests
188+
189+ echo "=== Running Async Tests with JIT Function ==="
190+ /usr/local/bin/php run-tests.php \
191+ -P -q -j2 \
192+ -g FAIL,BORK,LEAK,XLEAK \
193+ --no-progress \
194+ --offline \
195+ --show-diff \
196+ --show-slow 4000 \
197+ --set-timeout 120 \
198+ -d zend_extension=opcache.so \
199+ -d opcache.enable_cli=1 \
200+ -d opcache.jit_buffer_size=64M \
201+ -d opcache.jit=function \
202+ ext/async/tests
0 commit comments