Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Big endian PowerPC CI #17258

Draft
wants to merge 23 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
d99d401
Attempt at ppc64 CI
NattyNarwhal Nov 5, 2024
09f898b
oops, make that || true so the nop works
NattyNarwhal Sep 21, 2024
1b52d71
Print config.log on config failure
NattyNarwhal Sep 22, 2024
0c11b54
helps to put the backslash there
NattyNarwhal Sep 22, 2024
4618092
try to fix formatting
NattyNarwhal Sep 22, 2024
5ccc59d
subshells don't work for this
NattyNarwhal Sep 22, 2024
6fb7d26
fix bash syntax. oops
NattyNarwhal Sep 22, 2024
b43d53c
we can't trust anything, can we
NattyNarwhal Sep 22, 2024
61ce361
will this just use libc iconv?
NattyNarwhal Sep 22, 2024
660e913
the power8 could maybe use more optimization
NattyNarwhal Sep 24, 2024
b447789
remove matrix generation remnants
NattyNarwhal Nov 5, 2024
8817d6f
Commit typo in checkout ref
NattyNarwhal Dec 24, 2024
ab4845d
Add ppc64 to run >=8.4
NattyNarwhal Dec 24, 2024
afdf39a
use clang-17 since gcc doesn't have FSan (and that's the default)
NattyNarwhal Dec 24, 2024
8799e5c
Run mysql tests
NattyNarwhal Jan 7, 2025
3d65818
Just assert that packages are installed instead
NattyNarwhal Jan 8, 2025
a75c8a8
also test pg
NattyNarwhal Jan 8, 2025
22c595f
Enable slow extensions
NattyNarwhal Jan 10, 2025
c08f457
Add SASL as a dependency for ext/ldap
NattyNarwhal Jan 10, 2025
6c1f118
Fix searching for libraries like LDAP
NattyNarwhal Jan 10, 2025
cf0a0ef
add dictionaries for hunspell
NattyNarwhal Jan 10, 2025
7a772aa
typo in pkg name
NattyNarwhal Jan 11, 2025
5c596ad
Add Tokyo Cabinet, use QDBM instead of GDBM
NattyNarwhal Jan 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .github/actions/configure-gentoo/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
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 \
--with-libdir=lib64 \
--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 \
--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-tcadb \
--with-lmdb \
--with-qdbm \
${{ 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 }} || cat config.log
61 changes: 61 additions & 0 deletions .github/actions/emerge/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: emerge
runs:
using: composite
steps:
- shell: sh
# This does nothing, as currently the Gentoo/ppc64 CI system is
# not running jobs containerized.
#
# - libiconv is not used, glibc iconv is instead
run: |
for package in \
sys-apps/util-linux \
app-shells/bash \
app-admin/sudo \
dev-build/autoconf \
app-arch/unzip \
app-arch/tar \
sys-devel/bison \
dev-util/re2c \
dev-util/pkgconf \
app-arch/bzip2 \
net-misc/curl \
media-libs/freetype \
sys-devel/gettext \
dev-libs/gmp \
dev-libs/icu \
media-libs/libjpeg-turbo \
dev-libs/libffi \
media-libs/libpng \
dev-libs/libsodium \
media-libs/libwebp \
dev-libs/libxml2 \
x11-libs/libXpm \
dev-libs/libxslt \
dev-libs/libzip \
dev-libs/oniguruma \
dev-libs/openssl \
dev-libs/libedit \
dev-db/sqlite \
app-text/htmltidy \
sys-libs/gdbm \
dev-db/qdbm \
dev-db/tokyocabinet \
dev-db/lmdb \
app-crypt/argon2 \
app-text/enchant \
app-dicts/myspell-en \
app-dicts/myspell-de \
dev-db/freetds \
net-analyzer/net-snmp \
net-nds/openldap \
dev-libs/cyrus-sasl \
dev-db/unixODBC \
dev-db/postgresql \
; do
echo $package
if ! portageq has_version / $package; then
echo "need to install $package"
exit 1
fi
done
34 changes: 34 additions & 0 deletions .github/actions/test-gentoo/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Test
inputs:
runTestsParameters:
default: ''
required: false
runs:
using: composite
steps:
- shell: bash
run: |
set -x
# XXX: Set up other database tests?
# XXX: These tests are not running containerized
export MYSQL_TEST_USER=ci
export MYSQL_TEST_PASSWD=ci
if [[ -z "$PDO_MYSQL_TEST_DSN" ]]; then
export PDO_MYSQL_TEST_DSN="mysql:host=localhost;dbname=test"
fi
export PDO_MYSQL_TEST_USER=ci
export PDO_MYSQL_TEST_PASS=ci
export PGSQL_TEST_CONNSTR="host=localhost dbname=test port=5432 user=ci password=ci"
if [[ -z "$PDO_PGSQL_TEST_DSN" ]]; then
export PDO_PGSQL_TEST_DSN="pgsql:host=localhost port=5432 dbname=test user=ci password=ci"
fi
# Slow tests criteron is doubled because this runner isn't as fast as others
export SKIP_IO_CAPTURE_TESTS=1
export STACK_LIMIT_DEFAULTS_CHECK=1
sapi/cli/php run-tests.php -P -q ${{ inputs.runTestsParameters }} \
-j$(nproc) \
-g FAIL,BORK,LEAK,XLEAK \
--no-progress \
--show-diff \
--show-slow 2000 \
--set-timeout 120
47 changes: 47 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ on:
run_alpine:
required: true
type: boolean
run_linux_ppc64:
required: true
type: boolean
run_macos_arm64:
required: true
type: boolean
Expand All @@ -29,6 +32,50 @@ on:
permissions:
contents: read
jobs:
LINUX_PPC64:
if: inputs.run_linux_ppc64
name: LINUX_PPC64_ASAN_UBSAN_DEBUG_ZTS
runs-on: [self-hosted, gentoo, ppc64]
steps:
- name: git checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}
- name: emerge
uses: ./.github/actions/emerge
- name: System info
run: |
echo "::group::Show host CPU info"
lscpu
echo "::endgroup::"
echo "::group::Show installed packages"
cat /var/lib/portage/world
echo "::endgroup::"
- name: ./configure
uses: ./.github/actions/configure-gentoo
with:
configurationParameters: >-
CFLAGS="-fsanitize=undefined,address -fno-sanitize=function -DZEND_TRACK_ARENA_ALLOC"
LDFLAGS="-fsanitize=undefined,address -fno-sanitize=function"
CC=clang-17
CXX=clang++-17
--enable-debug
--enable-zts
skipSlow: false # FIXME: This should likely include slow extensions
- name: make
run: make -j$(/usr/bin/nproc) >/dev/null
# Skip an install action for now
- name: Tests
uses: ./.github/actions/test-gentoo
# There is no PPC JIT, so rip this out
with:
runTestsParameters: >-
--asan -x
- name: Notify Slack
if: failure()
uses: ./.github/actions/notify-slack
with:
token: ${{ secrets.ACTION_MONITORING_SLACK }}
ALPINE:
if: inputs.run_alpine
name: ALPINE_X64_ASAN_UBSAN_DEBUG_ZTS
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/root.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ jobs:
community_verify_type_inference: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
libmysqlclient_with_mysqli: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1) }}
run_alpine: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
run_linux_ppc64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
run_macos_arm64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
ubuntu_version: ${{
(((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '24.04')
Expand Down
Loading