From dca3f438cb3b87d7c9cfc86257973483a81a1d05 Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Fri, 25 Oct 2024 14:59:05 +0200 Subject: [PATCH] Add X32 CI build --- .github/workflows/test.yml | 18 ++++++++++++++-- .github/workflows/test/build-librdkafka.sh | 12 ++++++++++- .github/workflows/test/build-php.sh | 18 ++++++++++++---- .../workflows/test/install-dependencies.sh | 21 +++++++++++++++++++ conf.c | 4 ++-- 5 files changed, 64 insertions(+), 9 deletions(-) create mode 100755 .github/workflows/test/install-dependencies.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d986c660..27d5b173 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,11 +14,13 @@ jobs: strategy: fail-fast: false matrix: + arch: ['X64'] include: # Latest librdkafka 2.x with memcheck - php: '8.3.0' librdkafka: 'v1.9.2' memcheck: '1' + werror: 'werror' - php: '8.2.0' librdkafka: 'v1.9.2' memcheck: '1' @@ -26,6 +28,13 @@ jobs: librdkafka: 'v1.9.2' memcheck: '1' + # X32 + - php: '8.3.0' + librdkafka: 'v2.6.0' + memcheck: '1' + arch: 'X32' + werror: 'werror' + # Latest librdkafka 1.x with memcheck - php: '8.3.0' librdkafka: 'v1.9.2' @@ -172,6 +181,8 @@ jobs: SKIP_OAUTH: ${{ matrix.skipoauth }} TEST_KAFKA_BROKERS: kafka:9092 TEST_KAFKA_BROKER_VERSION: 2.6 + ARCH: ${{ matrix.arch }} + WERROR: ${{ matric.werror }} steps: - name: 'Check out repository' uses: 'actions/checkout@v2' @@ -181,12 +192,15 @@ jobs: - uses: actions/cache@v2 with: path: ~/build-cache/php - key: ${{ runner.os }}-${{ matrix.php }}-${{ matrix.memcheck }} + key: ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.php }}-${{ matrix.memcheck }} - uses: actions/cache@v2 with: path: ~/build-cache/librdkafka - key: ${{ runner.os }}-${{ matrix.librdkafka }} + key: ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.librdkafka }} + + - name: 'Install dependencies' + run: './php-rdkafka/.github/workflows/test/install-dependencies.sh' - name: 'Build librdkafka' run: './php-rdkafka/.github/workflows/test/build-librdkafka.sh' diff --git a/.github/workflows/test/build-librdkafka.sh b/.github/workflows/test/build-librdkafka.sh index 7674b7d6..aee448b0 100755 --- a/.github/workflows/test/build-librdkafka.sh +++ b/.github/workflows/test/build-librdkafka.sh @@ -7,8 +7,18 @@ if ! [ -f ~/build-cache/librdkafka/usr/local/include/librdkafka/rdkafka.h ] || ! git clone --depth 1 --branch "${LIBRDKAFKA_VERSION:-v2.3.0}" "${LIBRDKAFKA_REPOSITORY_URL:-https://github.com/edenhill/librdkafka.git}" + LIBRDKAFKA_BUILD_FLAGS= + + if [ "$ARCH" = "X32" ]; then + export CC="${CC:-gcc} -m32" + export CFLAGS="$CFLAGS -m32" + export CXXFLAGS="$CXXFLAGS -m32" + export LDFLAGS="$LDFLAGS -m32" + LIBRDKAFKA_BUILD_FLAGS="$LIBRDKAFKA_BUILD_FLAGS --build=i686-pc-linux-gnu" + fi + cd librdkafka - ./configure + ./configure $LIBRDKAFKA_BUILD_FLAGS make mkdir -p ~/build-cache/librdkafka sudo make install DESTDIR=$HOME/build-cache/librdkafka diff --git a/.github/workflows/test/build-php.sh b/.github/workflows/test/build-php.sh index e8d4cecc..065333f7 100755 --- a/.github/workflows/test/build-php.sh +++ b/.github/workflows/test/build-php.sh @@ -2,10 +2,6 @@ set -ex -if [ $MEMORY_CHECK -eq 1 ]; then - sudo apt-get -y install valgrind -fi - if ! [ -f ~/build-cache/php/usr/local/bin/php ]; then echo "PHP build is not cached" @@ -29,6 +25,20 @@ if ! [ -f ~/build-cache/php/usr/local/bin/php ]; then esac fi + export CFLAGS="$CFLAGS -Wall -Wno-deprecated-declarations" + + if [ -n "$WERROR" ]; then + export CFLAGS="$CFLAGS -Werror" + fi + + if [ "$ARCH" = "X32" ]; then + export CC="${CC:-gcc} -m32" + export CFLAGS="$CFLAGS -m32" + export CXXFLAGS="$CXXFLAGS -m32" + export LDFLAGS="$LDFLAGS -m32" + PHP_BUILD_FLAGS="$PHP_BUILD_FLAGS --build=i686-pc-linux-gnu" + fi + ./configure $PHP_BUILD_FLAGS $PHP_BUILD_EXTRA_FLAGS make -j $(nproc) mkdir -p ~/build-cache/php diff --git a/.github/workflows/test/install-dependencies.sh b/.github/workflows/test/install-dependencies.sh new file mode 100755 index 00000000..a437331d --- /dev/null +++ b/.github/workflows/test/install-dependencies.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -ex + +export DEBIAN_FRONTEND=noninteractive + +DEPS="zlib1g-dev" + +if [ "$ARCH" = "X32" ]; then + sudo dpkg --add-architecture i386 + sudo apt-get update + DEPS="$DEPS gcc-multilib g++-multilib zlib1g-dev:i686" +fi + +if [ "$MEMORY_CHECK" = "1" ]; then + DEPS="$DEPS valgrind" +fi + +if [ -n "$DEPS" ]; then + sudo apt-get -y install $DEPS +fi diff --git a/conf.c b/conf.c index 9aa8132f..6330e62e 100644 --- a/conf.c +++ b/conf.c @@ -340,6 +340,7 @@ static void kafka_conf_log_cb(const rd_kafka_t *rk, int level, const char *facil zval_ptr_dtor(&args[3]); } +#ifdef HAS_RD_KAFKA_OAUTHBEARER /* void rd_kafka_conf_set_oauthbearer_token_refresh_cb( rd_kafka_conf_t *conf, @@ -371,8 +372,7 @@ static void kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_t *rk, const ch zval_ptr_dtor(&args[0]); zval_ptr_dtor(&args[1]); } - - +#endif /* {{{ proto RdKafka\Conf::__construct() */ PHP_METHOD(RdKafka_Conf, __construct)