mirror of
https://github.com/php/php-src.git
synced 2024-11-23 09:54:15 +08:00
Alpine/Musl nightly job (#13925)
Co-authored-by: Michael Voříšek <mvorisek@mvorisek.cz>
This commit is contained in:
parent
4f6f4fb7d5
commit
5b482b706e
61
.github/actions/apk/action.yml
vendored
Normal file
61
.github/actions/apk/action.yml
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
name: apk
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- shell: sh
|
||||
run: |
|
||||
set -x
|
||||
|
||||
apk update -q
|
||||
apk add \
|
||||
util-linux \
|
||||
bash \
|
||||
sudo \
|
||||
build-base \
|
||||
autoconf \
|
||||
unzip \
|
||||
tar \
|
||||
bison \
|
||||
re2c \
|
||||
pkgconf \
|
||||
mysql-client \
|
||||
aspell-dev \
|
||||
hunspell-dev \
|
||||
hunspell-en \
|
||||
bzip2-dev \
|
||||
curl-dev \
|
||||
freetype-dev \
|
||||
gettext-dev \
|
||||
gnu-libiconv-dev \
|
||||
gmp-dev \
|
||||
icu-dev \
|
||||
icu-data-full \
|
||||
jpeg-dev \
|
||||
libffi-dev \
|
||||
libpng-dev \
|
||||
libsodium-dev \
|
||||
libwebp-dev \
|
||||
libxml2-dev \
|
||||
libxpm-dev \
|
||||
libxslt-dev \
|
||||
libzip-dev \
|
||||
oniguruma-dev \
|
||||
openssl-dev \
|
||||
readline-dev \
|
||||
sqlite-dev \
|
||||
tidyhtml-dev \
|
||||
krb5-dev \
|
||||
gdbm-dev \
|
||||
lmdb-dev \
|
||||
argon2-dev \
|
||||
enchant2-dev \
|
||||
enchant2-hunspell \
|
||||
freetds-dev \
|
||||
imap-dev \
|
||||
net-snmp-dev \
|
||||
openldap-dev \
|
||||
unixodbc-dev \
|
||||
postgresql14-dev \
|
||||
tzdata \
|
||||
musl-locales \
|
||||
musl-locales-lang
|
79
.github/actions/configure-alpine/action.yml
vendored
Normal file
79
.github/actions/configure-alpine/action.yml
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
name: ./configure
|
||||
inputs:
|
||||
configurationParameters:
|
||||
default: ''
|
||||
required: false
|
||||
skipSlow:
|
||||
default: false
|
||||
required: false
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- shell: bash
|
||||
run: |
|
||||
set -x
|
||||
./buildconf --force
|
||||
./configure \
|
||||
--enable-option-checking=fatal \
|
||||
--prefix=/usr \
|
||||
--enable-phpdbg \
|
||||
--enable-fpm \
|
||||
--with-pdo-mysql=mysqlnd \
|
||||
--with-mysqli=mysqlnd \
|
||||
${{ inputs.skipSlow == 'false' && '--with-pgsql' || '' }} \
|
||||
${{ inputs.skipSlow == 'false' && '--with-pdo-pgsql' || '' }} \
|
||||
${{ inputs.skipSlow == 'false' && '--with-pdo-sqlite' || '' }} \
|
||||
--enable-intl \
|
||||
--without-pear \
|
||||
--enable-gd \
|
||||
--with-jpeg \
|
||||
--with-webp \
|
||||
--with-freetype \
|
||||
--with-xpm \
|
||||
--enable-exif \
|
||||
--with-zip \
|
||||
--with-zlib \
|
||||
--enable-soap \
|
||||
--enable-xmlreader \
|
||||
--with-xsl \
|
||||
${{ inputs.skipSlow == 'false' && '--with-tidy' || '' }} \
|
||||
--enable-sysvsem \
|
||||
--enable-sysvshm \
|
||||
--enable-shmop \
|
||||
--enable-pcntl \
|
||||
--with-readline \
|
||||
--enable-mbstring \
|
||||
--with-iconv=/usr \
|
||||
--with-curl \
|
||||
--with-gettext \
|
||||
--enable-sockets \
|
||||
--with-bz2 \
|
||||
--with-openssl \
|
||||
--with-gmp \
|
||||
--enable-bcmath \
|
||||
--enable-calendar \
|
||||
--enable-ftp \
|
||||
${{ inputs.skipSlow == 'false' && '--with-enchant=/usr' || '' }} \
|
||||
--enable-sysvmsg \
|
||||
--with-ffi \
|
||||
--enable-zend-test \
|
||||
${{ inputs.skipSlow == 'false' && '--enable-dl-test=shared' || '' }} \
|
||||
${{ inputs.skipSlow == 'false' && '--with-ldap' || '' }} \
|
||||
${{ inputs.skipSlow == 'false' && '--with-ldap-sasl' || '' }} \
|
||||
--with-password-argon2 \
|
||||
--with-mhash \
|
||||
--with-sodium \
|
||||
--enable-dba \
|
||||
--with-cdb \
|
||||
--enable-flatfile \
|
||||
--enable-inifile \
|
||||
--with-lmdb \
|
||||
--with-gdbm \
|
||||
${{ inputs.skipSlow == 'false' && '--with-snmp' || '' }} \
|
||||
${{ inputs.skipSlow == 'false' && '--with-unixODBC' || '' }} \
|
||||
${{ inputs.skipSlow == 'false' && '--with-pdo-odbc=unixODBC,/usr' || '' }} \
|
||||
--with-config-file-path=/etc \
|
||||
--with-config-file-scan-dir=/etc/php.d \
|
||||
${{ inputs.skipSlow == 'false' && '--with-pdo-dblib' || '' }} \
|
||||
--enable-werror \
|
||||
${{ inputs.configurationParameters }}
|
10
.github/actions/install-alpine/action.yml
vendored
Normal file
10
.github/actions/install-alpine/action.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
name: Install
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- shell: bash
|
||||
run: |
|
||||
set -x
|
||||
sudo make install
|
||||
sudo mkdir -p /etc/php.d
|
||||
sudo chmod 777 /etc/php.d
|
25
.github/actions/test-alpine/action.yml
vendored
Normal file
25
.github/actions/test-alpine/action.yml
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
name: Test
|
||||
inputs:
|
||||
runTestsParameters:
|
||||
default: ''
|
||||
required: false
|
||||
jitType:
|
||||
default: 'disable'
|
||||
required: false
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- shell: bash
|
||||
run: |
|
||||
set -x
|
||||
export SKIP_IO_CAPTURE_TESTS=1
|
||||
export STACK_LIMIT_DEFAULTS_CHECK=1
|
||||
sapi/cli/php run-tests.php -P -q ${{ inputs.runTestsParameters }} \
|
||||
-d opcache.jit=${{ inputs.jitType }} \
|
||||
-d opcache.jit_buffer_size=64M \
|
||||
-j$(nproc) \
|
||||
-g FAIL,BORK,LEAK,XLEAK \
|
||||
--no-progress \
|
||||
--show-diff \
|
||||
--show-slow 1000 \
|
||||
--set-timeout 120
|
22
.github/nightly_matrix.php
vendored
22
.github/nightly_matrix.php
vendored
@ -121,6 +121,26 @@ function get_macos_matrix_include(array $branches) {
|
||||
return $jobs;
|
||||
}
|
||||
|
||||
function get_alpine_matrix_include(array $branches) {
|
||||
$jobs = [];
|
||||
foreach ($branches as $branch) {
|
||||
if ([$branch['version']['major'], $branch['version']['minor']] < [8, 4]) {
|
||||
continue;
|
||||
}
|
||||
$jobs[] = [
|
||||
'name' => '_ASAN_UBSAN',
|
||||
'branch' => $branch,
|
||||
'debug' => true,
|
||||
'zts' => true,
|
||||
'asan' => true,
|
||||
'test_jit' => true,
|
||||
'configuration_parameters' => "CFLAGS='-fsanitize=undefined,address -fno-sanitize=function -DZEND_TRACK_ARENA_ALLOC' LDFLAGS='-fsanitize=undefined,address -fno-sanitize=function' CC=clang-17 CXX=clang++-17",
|
||||
'run_tests_parameters' => '--asan -x',
|
||||
];
|
||||
}
|
||||
return $jobs;
|
||||
}
|
||||
|
||||
function get_current_version(): array {
|
||||
$file = dirname(__DIR__) . '/main/php_version.h';
|
||||
$content = file_get_contents($file);
|
||||
@ -145,10 +165,12 @@ $branches = $branch === 'master'
|
||||
$matrix_include = get_matrix_include($branches);
|
||||
$windows_matrix_include = get_windows_matrix_include($branches);
|
||||
$macos_matrix_include = get_macos_matrix_include($branches);
|
||||
$alpine_matrix_include = get_alpine_matrix_include($branches);
|
||||
|
||||
$f = fopen(getenv('GITHUB_OUTPUT'), 'a');
|
||||
fwrite($f, 'branches=' . json_encode($branches, JSON_UNESCAPED_SLASHES) . "\n");
|
||||
fwrite($f, 'matrix-include=' . json_encode($matrix_include, JSON_UNESCAPED_SLASHES) . "\n");
|
||||
fwrite($f, 'windows-matrix-include=' . json_encode($windows_matrix_include, JSON_UNESCAPED_SLASHES) . "\n");
|
||||
fwrite($f, 'macos-matrix-include=' . json_encode($macos_matrix_include, JSON_UNESCAPED_SLASHES) . "\n");
|
||||
fwrite($f, 'alpine-matrix-include=' . json_encode($alpine_matrix_include, JSON_UNESCAPED_SLASHES) . "\n");
|
||||
fclose($f);
|
||||
|
60
.github/workflows/nightly.yml
vendored
60
.github/workflows/nightly.yml
vendored
@ -15,6 +15,7 @@ jobs:
|
||||
matrix-include: ${{ steps.set-matrix.outputs.matrix-include }}
|
||||
windows-matrix-include: ${{ steps.set-matrix.outputs.windows-matrix-include }}
|
||||
macos-matrix-include: ${{ steps.set-matrix.outputs.macos-matrix-include }}
|
||||
alpine-matrix-include: ${{ steps.set-matrix.outputs.alpine-matrix-include }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
@ -39,6 +40,65 @@ jobs:
|
||||
uses: ./.github/actions/notify-slack
|
||||
with:
|
||||
token: ${{ secrets.ACTION_MONITORING_SLACK }}
|
||||
ALPINE:
|
||||
needs: GENERATE_MATRIX
|
||||
if: ${{ needs.GENERATE_MATRIX.outputs.branches != '[]' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJson(needs.GENERATE_MATRIX.outputs.alpine-matrix-include) }}
|
||||
name: "${{ matrix.branch.name }}_ALPINE_X64${{ matrix.name }}_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}"
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: 'alpine:3.20.1'
|
||||
steps:
|
||||
- name: git checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ matrix.branch.ref }}
|
||||
- name: apk
|
||||
uses: ./.github/actions/apk
|
||||
- name: LLVM 17 (ASAN-only)
|
||||
if: ${{ matrix.asan }}
|
||||
# libclang_rt.asan-x86_64.a is provided by compiler-rt, and only for clang17:
|
||||
# https://pkgs.alpinelinux.org/contents?file=libclang_rt.asan-x86_64.a&path=&name=&branch=v3.20
|
||||
run: |
|
||||
apk add clang17 compiler-rt
|
||||
- name: System info
|
||||
run: |
|
||||
echo "::group::Show host CPU info"
|
||||
lscpu
|
||||
echo "::endgroup::"
|
||||
echo "::group::Show installed package versions"
|
||||
apk list
|
||||
echo "::endgroup::"
|
||||
- name: ./configure
|
||||
uses: ./.github/actions/configure-alpine
|
||||
with:
|
||||
configurationParameters: >-
|
||||
${{ matrix.configuration_parameters }}
|
||||
--${{ matrix.debug && 'enable' || 'disable' }}-debug
|
||||
--${{ matrix.zts && 'enable' || 'disable' }}-zts
|
||||
skipSlow: ${{ matrix.asan }}
|
||||
- name: make
|
||||
run: make -j$(/usr/bin/nproc) >/dev/null
|
||||
- name: make install
|
||||
uses: ./.github/actions/install-alpine
|
||||
- name: Test Tracing JIT
|
||||
if: matrix.test_jit
|
||||
uses: ./.github/actions/test-alpine
|
||||
with:
|
||||
jitType: tracing
|
||||
runTestsParameters: >-
|
||||
${{ matrix.run_tests_parameters }}
|
||||
-d zend_extension=opcache.so
|
||||
-d opcache.enable_cli=1
|
||||
- name: Notify Slack
|
||||
if: failure()
|
||||
uses: ./.github/actions/notify-slack
|
||||
with:
|
||||
token: ${{ secrets.ACTION_MONITORING_SLACK }}
|
||||
|
||||
LINUX_X64:
|
||||
needs: GENERATE_MATRIX
|
||||
if: ${{ needs.GENERATE_MATRIX.outputs.branches != '[]' }}
|
||||
|
@ -1410,7 +1410,7 @@ ZEND_API ZEND_COLD void zend_error_zstr_at(
|
||||
zval retval;
|
||||
zval orig_user_error_handler;
|
||||
bool in_compilation;
|
||||
zend_class_entry *saved_class_entry;
|
||||
zend_class_entry *saved_class_entry = NULL;
|
||||
zend_stack loop_var_stack;
|
||||
zend_stack delayed_oplines_stack;
|
||||
int type = orig_type & E_ALL;
|
||||
|
Loading…
Reference in New Issue
Block a user