From 5ec4904995a0e391e079435232a4aa0e455be3ce Mon Sep 17 00:00:00 2001 From: Matthew Kocher Date: Thu, 26 Mar 2026 09:33:06 -0700 Subject: [PATCH 1/3] initial resolute raccoon support --- config/blobs.yml | 14 ++-- packages/percona-xtrabackup-2.4/packaging | 23 ++++- packages/percona-xtrabackup-2.4/spec | 1 + packages/percona-xtrabackup-8.0/packaging | 29 +++++-- packages/percona-xtrabackup-8.0/spec | 2 +- packages/percona-xtrabackup-8.4/packaging | 22 +++-- packages/percona-xtrabackup-8.4/spec | 2 +- packages/percona-xtradb-cluster-8.0/packaging | 84 +++++++++++++++++-- packages/percona-xtradb-cluster-8.0/spec | 2 +- packages/percona-xtradb-cluster-8.4/packaging | 82 ++++++++++++++++-- packages/percona-xtradb-cluster-8.4/spec | 2 +- .../cmake42-compat.patch | 71 ++++++++++++++++ 12 files changed, 291 insertions(+), 43 deletions(-) create mode 100644 src/percona-xtrabackup-2.4-patches/cmake42-compat.patch diff --git a/config/blobs.yml b/config/blobs.yml index 1fce5a036..adac3e9af 100644 --- a/config/blobs.yml +++ b/config/blobs.yml @@ -42,15 +42,13 @@ percona-xtrabackup-8.4.0-5.tar.gz: size: 432646274 object_id: edf66c32-e051-4a55-561a-bd67bb8a13bb sha: sha256:fadcf27efd2a2596f689388659e2ff5c36debcc051a55974ac8bb4a83c015f57 -pkg-config_0.29.2.orig.tar.gz: - size: 2016830 - object_id: ca3d829d-016e-4acd-6509-9d1766884b9d - sha: sha256:6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591 +pkgconf/pkgconf-2.5.1.tar.gz: + size: 133113 + sha: sha256:79721badcad1987dead9c3609eb4877ab9b58821c06bdacb824f2c8897c11f2a procps-ng-4.0.5.tar.xz: size: 1517672 object_id: e196e815-f7be-462d-64f0-feaac1caffe0 sha: sha256:c2e6d193cc78f84cd6ddb72aaf6d5c6a9162f0470e5992092057f5ff518562fa -socat-1.7.4.4.tar.gz: - size: 662968 - object_id: beda2a1f-82fe-4370-47c9-080352292869 - sha: sha256:0f8f4b9d5c60b8c53d17b60d79ababc4a0f51b3bb6d2bd3ae8a6a4b9d68f195e +socat-1.8.1.1.tar.gz: + size: 766524 + sha: sha256:f68b602c80e94b4b7498d74ec408785536fe33534b39467977a82ab2f7f01ddb diff --git a/packages/percona-xtrabackup-2.4/packaging b/packages/percona-xtrabackup-2.4/packaging index 0307b870d..4354dd1aa 100644 --- a/packages/percona-xtrabackup-2.4/packaging +++ b/packages/percona-xtrabackup-2.4/packaging @@ -3,6 +3,16 @@ set -o errexit set -o nounset +# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D` +# replaces symlink path components with real directories instead of following +# them. Resolve the real path so libaio's `make install` (which uses +# `install -D`) writes to the correct location on persistent disk. +# See https://github.com/uutils/coreutils/issues/11469 +REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}" +if [ -L "${BOSH_INSTALL_TARGET}" ]; then + REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}") +fi + main() { install_build_dependencies unpack_source @@ -12,7 +22,7 @@ main() { install_build_dependencies() { tar -xf libaio_*.tar.xz cd libaio-*/ - make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}" + make -j "$(nproc)" install prefix="${REAL_INSTALL_TARGET}" cd - tar -xf libev-*.tar.gz @@ -30,7 +40,12 @@ unpack_source() { } build_and_install() { - cd percona-xtrabackup-*/ + cd percona-xtrabackup-2.4.*/ + + # Fix deprecated cmake policies, strict-prototype errors (GCC 14+), and + # non-existent target lookups for compatibility with modern CMake and toolchains. + patch -p1 < ../percona-xtrabackup-2.4-patches/cmake42-compat.patch + mkdir bld && cd bld export LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib:${BOSH_INSTALL_TARGET}/lib/private" @@ -45,10 +60,12 @@ build_and_install() { -DCMAKE_C_COMPILER=gcc \ -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ -DINSTALL_MYSQLTESTDIR= \ -DWITH_BOOST=../../boost_1_59_0 \ -DWITH_MAN_PAGES=OFF \ - -DWITH_SSL=system + -DWITH_SSL=system \ + -DWITH_ZLIB=bundled make -j "$(nproc)" install/strip rm -fr "${BOSH_INSTALL_TARGET}/man/" diff --git a/packages/percona-xtrabackup-2.4/spec b/packages/percona-xtrabackup-2.4/spec index 492c70124..651bc75d1 100644 --- a/packages/percona-xtrabackup-2.4/spec +++ b/packages/percona-xtrabackup-2.4/spec @@ -8,3 +8,4 @@ files: - percona-xtrabackup-2.4*.tar.gz - libev-*.tar.gz - libaio_*.tar.xz +- percona-xtrabackup-2.4-patches/cmake42-compat.patch diff --git a/packages/percona-xtrabackup-8.0/packaging b/packages/percona-xtrabackup-8.0/packaging index f84149ee1..d619c36a2 100755 --- a/packages/percona-xtrabackup-8.0/packaging +++ b/packages/percona-xtrabackup-8.0/packaging @@ -3,6 +3,16 @@ set -o errexit set -o nounset +# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D` +# replaces symlink path components with real directories instead of following +# them. Resolve the real path so libaio's `make install` (which uses +# `install -D`) writes to the correct location on persistent disk. +# See https://github.com/uutils/coreutils/issues/11469 +REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}" +if [ -L "${BOSH_INSTALL_TARGET}" ]; then + REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}") +fi + main() { install_build_dependencies unpack_source @@ -10,17 +20,17 @@ main() { } install_build_dependencies() { - tar -xf pkg-config_*.tar.gz - cd pkg-config-*/ - ./configure --prefix=/usr \ - --with-internal-glib \ - --with-pc-path=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig + tar -xf pkgconf/pkgconf-*.tar.gz + cd pkgconf-pkgconf-*/ + ./autogen.sh + ./configure --prefix=/usr make -j "$(nproc)" install + ln -sf pkgconf /usr/bin/pkg-config cd - tar -xf libaio_*.tar.xz cd libaio-*/ - make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}" + make -j "$(nproc)" install prefix="${REAL_INSTALL_TARGET}" cd - tar -xf libev-*.tar.gz @@ -68,6 +78,10 @@ build_and_install() { export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib" export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" + export OPENSSL_ROOT_DIR=/usr + + local ssl_lib_dir + ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu) # shellcheck disable=SC2016 cmake .. \ @@ -78,6 +92,9 @@ build_and_install() { -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ -DINSTALL_MYSQLTESTDIR= \ + -DOPENSSL_ROOT_DIR=/usr \ + -DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \ + -DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \ -DWITH_BOOST="${boost_dir}" \ -DWITH_MAN_PAGES=OFF \ -DWITH_SSL=system \ diff --git a/packages/percona-xtrabackup-8.0/spec b/packages/percona-xtrabackup-8.0/spec index 6bf47d8f0..3326b6d5b 100644 --- a/packages/percona-xtrabackup-8.0/spec +++ b/packages/percona-xtrabackup-8.0/spec @@ -8,5 +8,5 @@ files: - percona-xtrabackup-8.0*.tar.gz - libev-*.tar.gz - libaio_*.tar.xz -- pkg-config_*.tar.gz +- pkgconf/pkgconf-*.tar.gz - procps-ng-*.tar.xz diff --git a/packages/percona-xtrabackup-8.4/packaging b/packages/percona-xtrabackup-8.4/packaging index 7a53c1019..a30ae7239 100644 --- a/packages/percona-xtrabackup-8.4/packaging +++ b/packages/percona-xtrabackup-8.4/packaging @@ -3,6 +3,16 @@ set -o errexit set -o nounset +# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D` +# replaces symlink path components with real directories instead of following +# them. Resolve the real path so libaio's `make install` (which uses +# `install -D`) writes to the correct location on persistent disk. +# See https://github.com/uutils/coreutils/issues/11469 +REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}" +if [ -L "${BOSH_INSTALL_TARGET}" ]; then + REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}") +fi + main() { install_build_dependencies unpack_source @@ -10,17 +20,17 @@ main() { } install_build_dependencies() { - tar -xf pkg-config_*.tar.gz - cd pkg-config-*/ - ./configure --prefix=/usr \ - --with-internal-glib \ - --with-pc-path=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig + tar -xf pkgconf/pkgconf-*.tar.gz + cd pkgconf-pkgconf-*/ + ./autogen.sh + ./configure --prefix=/usr make -j "$(nproc)" install + ln -sf pkgconf /usr/bin/pkg-config cd - tar -xf libaio_*.tar.xz cd libaio-*/ - make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}" + make -j "$(nproc)" install prefix="${REAL_INSTALL_TARGET}" cd - tar -xf libev-*.tar.gz diff --git a/packages/percona-xtrabackup-8.4/spec b/packages/percona-xtrabackup-8.4/spec index 02ba1796f..d8f03b2fc 100644 --- a/packages/percona-xtrabackup-8.4/spec +++ b/packages/percona-xtrabackup-8.4/spec @@ -7,5 +7,5 @@ files: - libaio_*.tar.xz - libev-*.tar.gz - percona-xtrabackup-8.4*.tar.gz -- pkg-config_*.tar.gz +- pkgconf/pkgconf-*.tar.gz - procps-ng-*.tar.xz diff --git a/packages/percona-xtradb-cluster-8.0/packaging b/packages/percona-xtradb-cluster-8.0/packaging index 2422eb491..ed0098177 100644 --- a/packages/percona-xtradb-cluster-8.0/packaging +++ b/packages/percona-xtradb-cluster-8.0/packaging @@ -4,6 +4,16 @@ set -o errexit set -o nounset set -o pipefail +# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D` +# replaces symlink path components with real directories instead of following +# them. Resolve the real path so libaio's `make install` (which uses +# `install -D`) writes to the correct location on persistent disk. +# See https://github.com/uutils/coreutils/issues/11363 +REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}" +if [ -L "${BOSH_INSTALL_TARGET}" ]; then + REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}") +fi + main() { install_build_dependencies install_runtime_dependencies @@ -11,18 +21,17 @@ main() { } install_build_dependencies() { - tar -xf pkg-config_*.tar.gz - cd pkg-config-*/ - ./configure \ - --prefix=/usr \ - --with-internal-glib \ - --with-pc-path=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig + tar -xf pkgconf/pkgconf-*.tar.gz + cd pkgconf-pkgconf-*/ + ./autogen.sh + ./configure --prefix=/usr make -j "$(nproc)" install + ln -sf pkgconf /usr/bin/pkg-config cd - tar -xf libaio_*.orig.tar.xz cd libaio-*/ - make install prefix="${BOSH_INSTALL_TARGET}" + make install prefix="${REAL_INSTALL_TARGET}" cd - tar -xf boost_*.tar.bz2 @@ -61,6 +70,7 @@ build() { ( cd Percona-XtraDB-Cluster-*/ + source MYSQL_VERSION mysql_version="${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}" wsrep_version="$(grep WSREP_INTERFACE_VERSION wsrep-lib/wsrep-API/v26/wsrep_api.h | cut -d '"' -f2).$(grep 'SET(WSREP_PATCH_VERSION' "cmake/wsrep-lib.cmake" | cut -d '"' -f2)" @@ -76,16 +86,71 @@ build() { export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib" export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" + export OPENSSL_ROOT_DIR=/usr + export BOOST_ROOT="${boost_dir}" + # Fix bundled libtirpc for GCC 14+: K&R-style empty parens mean (void) in C23, + # causing conflicts with proper prototypes. Force C17 for the tirpc sub-build. + sed -i '/^SET(TIRPC_C_FLAGS/a STRING_APPEND(TIRPC_C_FLAGS " -std=gnu17")' ../extra/tirpc/CMakeLists.txt + + cat > "${boost_dir}/BoostConfig.cmake" < "${boost_dir}/BoostConfigVersion.cmake" <<'BOOST_VER' +set(PACKAGE_VERSION "1.77.0") +if("${PACKAGE_FIND_VERSION}" VERSION_GREATER "1.77.0") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "1.77.0") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() +BOOST_VER + + local ssl_lib_dir + ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu) cmake .. \ -DBUILD_CONFIG=mysql_release \ -DBOOST_ROOT="${boost_dir}" \ + -DBoost_INCLUDE_DIR="${boost_dir}" \ + -DBoost_NO_BOOST_CMAKE=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DMINIMAL_RELWITHDEBINFO=OFF \ -DCMAKE_CXX_COMPILER=g++ \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ + -DCMAKE_PREFIX_PATH="${boost_dir}" \ -DCOMPILATION_COMMENT="${compilation_comment}" \ -DENABLED_LOCAL_INFILE=OFF \ -DINSTALL_MYSQLTESTDIR= \ @@ -94,13 +159,16 @@ build() { -DMYSQLX_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqlx.sock \ -DMYSQL_DATADIR=/var/vcap/store/pxc-mysql \ -DMYSQL_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqld.sock \ + -DOPENSSL_ROOT_DIR=/usr \ + -DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \ + -DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \ -DSYSCONFDIR=/var/vcap/jobs/pxc-mysql/config \ -DWITH_AUTHENTICATION_LDAP=OFF \ -DWITH_AUTHENTICATION_FIDO=OFF \ -DWITH_AUTHENTICATION_KERBEROS=OFF \ -DWITH_PERCONA_AUTHENTICATION_LDAP=OFF \ -DWITH_BOOST="${boost_dir}" \ - -DWITH_ICU=system \ + -DWITH_ICU=bundled \ -DWITH_READLINE=system \ -DWITH_ROUTER=OFF \ -DWITH_GROUP_REPLICATION=OFF \ diff --git a/packages/percona-xtradb-cluster-8.0/spec b/packages/percona-xtradb-cluster-8.0/spec index 8ce986eb4..96bf1fd95 100644 --- a/packages/percona-xtradb-cluster-8.0/spec +++ b/packages/percona-xtradb-cluster-8.0/spec @@ -8,5 +8,5 @@ files: - boost_1_77_0.tar.bz2 - check_*.tar.gz - libaio_*.orig.tar.xz -- pkg-config_*.tar.gz +- pkgconf/pkgconf-*.tar.gz - socat-*.tar.gz diff --git a/packages/percona-xtradb-cluster-8.4/packaging b/packages/percona-xtradb-cluster-8.4/packaging index 18f90c28e..f436842cd 100644 --- a/packages/percona-xtradb-cluster-8.4/packaging +++ b/packages/percona-xtradb-cluster-8.4/packaging @@ -4,6 +4,16 @@ set -o errexit set -o nounset set -o pipefail +# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D` +# replaces symlink path components with real directories instead of following +# them. Resolve the real path so libaio's `make install` (which uses +# `install -D`) writes to the correct location on persistent disk. +# See https://github.com/uutils/coreutils/issues/11469 +REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}" +if [ -L "${BOSH_INSTALL_TARGET}" ]; then + REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}") +fi + main() { install_build_dependencies install_runtime_dependencies @@ -11,18 +21,17 @@ main() { } install_build_dependencies() { - tar -xf pkg-config_*.tar.gz - cd pkg-config-*/ - ./configure \ - --prefix=/usr \ - --with-internal-glib \ - --with-pc-path=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig + tar -xf pkgconf/pkgconf-*.tar.gz + cd pkgconf-pkgconf-*/ + ./autogen.sh + ./configure --prefix=/usr make -j "$(nproc)" install + ln -sf pkgconf /usr/bin/pkg-config cd - tar -xf libaio_*.orig.tar.xz cd libaio-*/ - make install prefix="${BOSH_INSTALL_TARGET}" + make install prefix="${REAL_INSTALL_TARGET}" cd - tar -xf boost_*.tar.bz2 @@ -61,6 +70,7 @@ build() { ( cd Percona-XtraDB-Cluster-*/ + source MYSQL_VERSION mysql_version="${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}" wsrep_version="$(grep WSREP_INTERFACE_VERSION wsrep-lib/wsrep-API/v26/wsrep_api.h | cut -d '"' -f2).$(grep 'SET(WSREP_PATCH_VERSION' "cmake/wsrep-lib.cmake" | cut -d '"' -f2)" @@ -76,16 +86,70 @@ build() { export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib" export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" + export BOOST_ROOT="${boost_dir}" + # Fix bundled libtirpc for GCC 14+: K&R-style empty parens mean (void) in C23, + # causing conflicts with proper prototypes. Force C17 for the tirpc sub-build. + sed -i '/^SET(TIRPC_C_FLAGS/a STRING_APPEND(TIRPC_C_FLAGS " -std=gnu17")' ../extra/tirpc/CMakeLists.txt + + cat > "${boost_dir}/BoostConfig.cmake" < "${boost_dir}/BoostConfigVersion.cmake" <<'BOOST_VER' +set(PACKAGE_VERSION "1.77.0") +if("${PACKAGE_FIND_VERSION}" VERSION_GREATER "1.77.0") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "1.77.0") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() +BOOST_VER + + local ssl_lib_dir + ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu) cmake .. \ -DBUILD_CONFIG=mysql_release \ -DBOOST_ROOT="${boost_dir}" \ + -DBoost_INCLUDE_DIR="${boost_dir}" \ + -DBoost_NO_BOOST_CMAKE=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DMINIMAL_RELWITHDEBINFO=OFF \ -DCMAKE_CXX_COMPILER=g++ \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ + -DCMAKE_PREFIX_PATH="${boost_dir}" \ -DCOMPILATION_COMMENT="${compilation_comment}" \ -DENABLED_LOCAL_INFILE=OFF \ -DINSTALL_MYSQLTESTDIR= \ @@ -94,12 +158,14 @@ build() { -DMYSQLX_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqlx.sock \ -DMYSQL_DATADIR=/var/vcap/store/pxc-mysql \ -DMYSQL_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqld.sock \ + -DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \ + -DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \ -DSYSCONFDIR=/var/vcap/jobs/pxc-mysql/config \ -DWITH_AUTHENTICATION_LDAP=OFF \ -DWITH_AUTHENTICATION_FIDO=OFF \ -DWITH_AUTHENTICATION_KERBEROS=OFF \ -DWITH_PERCONA_AUTHENTICATION_LDAP=OFF \ - -DWITH_ICU=system \ + -DWITH_ICU=bundled \ -DWITH_READLINE=system \ -DWITH_ROUTER=OFF \ -DWITH_GROUP_REPLICATION=OFF \ diff --git a/packages/percona-xtradb-cluster-8.4/spec b/packages/percona-xtradb-cluster-8.4/spec index 089aa133e..9da2074e3 100644 --- a/packages/percona-xtradb-cluster-8.4/spec +++ b/packages/percona-xtradb-cluster-8.4/spec @@ -8,5 +8,5 @@ files: - boost_1_77_0.tar.bz2 - check_*.tar.gz - libaio_*.orig.tar.xz -- pkg-config_*.tar.gz +- pkgconf/pkgconf-*.tar.gz - socat-*.tar.gz diff --git a/src/percona-xtrabackup-2.4-patches/cmake42-compat.patch b/src/percona-xtrabackup-2.4-patches/cmake42-compat.patch new file mode 100644 index 000000000..e31999c6d --- /dev/null +++ b/src/percona-xtrabackup-2.4-patches/cmake42-compat.patch @@ -0,0 +1,71 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -30,25 +30,6 @@ ELSE() + CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9) + ENDIF() + +-# We use CMAKE_SHARED_LIBRARY__FLAGS. See cmake --help-policy CMP0018 +-IF(CMAKE_VERSION VERSION_GREATER "2.8.8") +- CMAKE_POLICY(SET CMP0018 OLD) +-ENDIF() +- +-# We use PROPERTIES LINK_INTERFACE_LIBRARIES. See cmake --help-policy CMP0022 +-IF(CMAKE_VERSION VERSION_EQUAL "2.8.12" OR +- CMAKE_VERSION VERSION_GREATER "2.8.12") +- CMAKE_POLICY(SET CMP0022 OLD) +-ENDIF() +- +-# We use get_target_property() for non-existent targets (CMP0045) +-# and INSTALL_NAME_DIR (CMP0042) +-IF(CMAKE_VERSION VERSION_EQUAL "3.0.0" OR +- CMAKE_VERSION VERSION_GREATER "3.0.0") +- CMAKE_POLICY(SET CMP0045 OLD) +- CMAKE_POLICY(SET CMP0042 OLD) +-ENDIF() +- + # In CMake 3.12 and above, the + # + # * ``check_include_file`` macro in the ``CheckIncludeFile`` module, the +diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake +--- a/cmake/install_macros.cmake ++++ b/cmake/install_macros.cmake +@@ -128,6 +128,10 @@ FUNCTION(INSTALL_DEBUG_TARGET target) + ${ARGN} + ) + ++ IF(NOT TARGET ${target}) ++ RETURN() ++ ENDIF() ++ + # Relevant only for RelWithDebInfo builds + IF(BUILD_IS_SINGLE_CONFIG AND CMAKE_BUILD_TYPE STREQUAL "Debug") + RETURN() +diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake +--- a/cmake/libutils.cmake ++++ b/cmake/libutils.cmake +@@ -253,7 +253,11 @@ MACRO(MERGE_CONVENIENCE_LIBRARIES) + SET(OSLIBS) + SET(MYLIBS) + FOREACH(LIB ${LIBS}) +- GET_TARGET_PROPERTY(LIB_TYPE ${LIB} TYPE) ++ IF(TARGET ${LIB}) ++ GET_TARGET_PROPERTY(LIB_TYPE ${LIB} TYPE) ++ ELSE() ++ SET(LIB_TYPE "UNKNOWN") ++ ENDIF() + IF(LIB_TYPE STREQUAL "STATIC_LIBRARY") + LIST(FIND KNOWN_CONVENIENCE_LIBRARIES ${LIB} FOUNDIT) + IF(FOUNDIT LESS 0) +diff --git a/include/my_global.h b/include/my_global.h +--- a/include/my_global.h ++++ b/include/my_global.h +@@ -213,7 +213,7 @@ typedef int my_socket; /* File descriptor for sockets */ + #define INVALID_SOCKET -1 + #endif + C_MODE_START +-typedef void (*sig_return)();/* Returns type from signal */ ++typedef void (*sig_return)(int);/* Returns type from signal */ + C_MODE_END + #if defined(__GNUC__) + typedef char pchar; /* Mixed prototypes can take char */ From cd87ddf4faabb169f178d975bc5ffa8661a01230 Mon Sep 17 00:00:00 2001 From: Andrew Garner Date: Mon, 30 Mar 2026 15:45:28 -0500 Subject: [PATCH 2/3] wip: handle compilation on ubuntu-resolute --- config/blobs.yml | 8 +- packages/percona-xtrabackup-8.0/packaging | 12 +- packages/percona-xtrabackup-8.0/spec | 2 +- packages/percona-xtrabackup-8.4/packaging | 5 +- packages/percona-xtrabackup-8.4/spec | 2 +- packages/percona-xtradb-cluster-8.0/packaging | 143 ++++++------------ packages/percona-xtradb-cluster-8.0/spec | 2 +- packages/percona-xtradb-cluster-8.4/packaging | 139 ++++++----------- packages/percona-xtradb-cluster-8.4/spec | 2 +- 9 files changed, 106 insertions(+), 209 deletions(-) diff --git a/config/blobs.yml b/config/blobs.yml index adac3e9af..1355d0dc2 100644 --- a/config/blobs.yml +++ b/config/blobs.yml @@ -42,13 +42,15 @@ percona-xtrabackup-8.4.0-5.tar.gz: size: 432646274 object_id: edf66c32-e051-4a55-561a-bd67bb8a13bb sha: sha256:fadcf27efd2a2596f689388659e2ff5c36debcc051a55974ac8bb4a83c015f57 -pkgconf/pkgconf-2.5.1.tar.gz: - size: 133113 - sha: sha256:79721badcad1987dead9c3609eb4877ab9b58821c06bdacb824f2c8897c11f2a +pkgconf-2.5.1.tar.xz: + size: 328064 + object_id: 74152211-babf-41d2-794a-2f1abcd5f998 + sha: sha256:cd05c9589b9f86ecf044c10a2269822bc9eb001eced2582cfffd658b0a50c243 procps-ng-4.0.5.tar.xz: size: 1517672 object_id: e196e815-f7be-462d-64f0-feaac1caffe0 sha: sha256:c2e6d193cc78f84cd6ddb72aaf6d5c6a9162f0470e5992092057f5ff518562fa socat-1.8.1.1.tar.gz: size: 766524 + object_id: e2338643-ec07-4c94-6418-9760adee6ab5 sha: sha256:f68b602c80e94b4b7498d74ec408785536fe33534b39467977a82ab2f7f01ddb diff --git a/packages/percona-xtrabackup-8.0/packaging b/packages/percona-xtrabackup-8.0/packaging index d619c36a2..a7620811b 100755 --- a/packages/percona-xtrabackup-8.0/packaging +++ b/packages/percona-xtrabackup-8.0/packaging @@ -20,9 +20,8 @@ main() { } install_build_dependencies() { - tar -xf pkgconf/pkgconf-*.tar.gz - cd pkgconf-pkgconf-*/ - ./autogen.sh + tar -xf pkgconf-*.tar.xz + cd pkgconf-*/ ./configure --prefix=/usr make -j "$(nproc)" install ln -sf pkgconf /usr/bin/pkg-config @@ -78,10 +77,6 @@ build_and_install() { export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib" export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" - export OPENSSL_ROOT_DIR=/usr - - local ssl_lib_dir - ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu) # shellcheck disable=SC2016 cmake .. \ @@ -92,9 +87,6 @@ build_and_install() { -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ -DINSTALL_MYSQLTESTDIR= \ - -DOPENSSL_ROOT_DIR=/usr \ - -DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \ - -DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \ -DWITH_BOOST="${boost_dir}" \ -DWITH_MAN_PAGES=OFF \ -DWITH_SSL=system \ diff --git a/packages/percona-xtrabackup-8.0/spec b/packages/percona-xtrabackup-8.0/spec index 3326b6d5b..43574e208 100644 --- a/packages/percona-xtrabackup-8.0/spec +++ b/packages/percona-xtrabackup-8.0/spec @@ -8,5 +8,5 @@ files: - percona-xtrabackup-8.0*.tar.gz - libev-*.tar.gz - libaio_*.tar.xz -- pkgconf/pkgconf-*.tar.gz +- pkgconf-*.tar.xz - procps-ng-*.tar.xz diff --git a/packages/percona-xtrabackup-8.4/packaging b/packages/percona-xtrabackup-8.4/packaging index a30ae7239..df2c020be 100644 --- a/packages/percona-xtrabackup-8.4/packaging +++ b/packages/percona-xtrabackup-8.4/packaging @@ -20,9 +20,8 @@ main() { } install_build_dependencies() { - tar -xf pkgconf/pkgconf-*.tar.gz - cd pkgconf-pkgconf-*/ - ./autogen.sh + tar -xf pkgconf-*.tar.xz + cd pkgconf-*/ ./configure --prefix=/usr make -j "$(nproc)" install ln -sf pkgconf /usr/bin/pkg-config diff --git a/packages/percona-xtrabackup-8.4/spec b/packages/percona-xtrabackup-8.4/spec index d8f03b2fc..6c57ab9a8 100644 --- a/packages/percona-xtrabackup-8.4/spec +++ b/packages/percona-xtrabackup-8.4/spec @@ -7,5 +7,5 @@ files: - libaio_*.tar.xz - libev-*.tar.gz - percona-xtrabackup-8.4*.tar.gz -- pkgconf/pkgconf-*.tar.gz +- pkgconf-*.tar.xz - procps-ng-*.tar.xz diff --git a/packages/percona-xtradb-cluster-8.0/packaging b/packages/percona-xtradb-cluster-8.0/packaging index ed0098177..b35bf340f 100644 --- a/packages/percona-xtradb-cluster-8.0/packaging +++ b/packages/percona-xtradb-cluster-8.0/packaging @@ -21,9 +21,8 @@ main() { } install_build_dependencies() { - tar -xf pkgconf/pkgconf-*.tar.gz - cd pkgconf-pkgconf-*/ - ./autogen.sh + tar -xf pkgconf-*.tar.xz + cd pkgconf-*/ ./configure --prefix=/usr make -j "$(nproc)" install ln -sf pkgconf /usr/bin/pkg-config @@ -37,7 +36,9 @@ install_build_dependencies() { tar -xf boost_*.tar.bz2 cd boost_*/ ./bootstrap.sh --with-libraries=program_options,system - ./b2 -j "$(nproc)" link=static + ./b2 -j "$(nproc)" cxxstd=17 cxxflags="-fPIC" cflags="-fPIC" + mkdir -p "${REAL_INSTALL_TARGET}/lib/private/" + cp --preserve=all ./stage/lib/libboost_program_options.so.* "${REAL_INSTALL_TARGET}/lib/private/" cd - tar -xf check_*.tar.gz @@ -70,7 +71,6 @@ build() { ( cd Percona-XtraDB-Cluster-*/ - source MYSQL_VERSION mysql_version="${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}" wsrep_version="$(grep WSREP_INTERFACE_VERSION wsrep-lib/wsrep-API/v26/wsrep_api.h | cut -d '"' -f2).$(grep 'SET(WSREP_PATCH_VERSION' "cmake/wsrep-lib.cmake" | cut -d '"' -f2)" @@ -86,99 +86,50 @@ build() { export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib" export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" - export OPENSSL_ROOT_DIR=/usr - export BOOST_ROOT="${boost_dir}" - # Fix bundled libtirpc for GCC 14+: K&R-style empty parens mean (void) in C23, - # causing conflicts with proper prototypes. Force C17 for the tirpc sub-build. - sed -i '/^SET(TIRPC_C_FLAGS/a STRING_APPEND(TIRPC_C_FLAGS " -std=gnu17")' ../extra/tirpc/CMakeLists.txt - - cat > "${boost_dir}/BoostConfig.cmake" < "${boost_dir}/BoostConfigVersion.cmake" <<'BOOST_VER' -set(PACKAGE_VERSION "1.77.0") -if("${PACKAGE_FIND_VERSION}" VERSION_GREATER "1.77.0") - set(PACKAGE_VERSION_COMPATIBLE FALSE) -else() - set(PACKAGE_VERSION_COMPATIBLE TRUE) - if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "1.77.0") - set(PACKAGE_VERSION_EXACT TRUE) - endif() -endif() -BOOST_VER - - local ssl_lib_dir - ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu) - - cmake .. \ - -DBUILD_CONFIG=mysql_release \ - -DBOOST_ROOT="${boost_dir}" \ - -DBoost_INCLUDE_DIR="${boost_dir}" \ - -DBoost_NO_BOOST_CMAKE=ON \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DMINIMAL_RELWITHDEBINFO=OFF \ - -DCMAKE_CXX_COMPILER=g++ \ - -DCMAKE_C_COMPILER=gcc \ - -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ - -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ - -DCMAKE_PREFIX_PATH="${boost_dir}" \ - -DCOMPILATION_COMMENT="${compilation_comment}" \ - -DENABLED_LOCAL_INFILE=OFF \ - -DINSTALL_MYSQLTESTDIR= \ - -DINSTALL_SECURE_FILE_PRIVDIR=NULL \ - -DINSTALL_STATIC_LIBRARIES=OFF \ - -DMYSQLX_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqlx.sock \ - -DMYSQL_DATADIR=/var/vcap/store/pxc-mysql \ - -DMYSQL_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqld.sock \ - -DOPENSSL_ROOT_DIR=/usr \ - -DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \ - -DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \ - -DSYSCONFDIR=/var/vcap/jobs/pxc-mysql/config \ - -DWITH_AUTHENTICATION_LDAP=OFF \ - -DWITH_AUTHENTICATION_FIDO=OFF \ - -DWITH_AUTHENTICATION_KERBEROS=OFF \ - -DWITH_PERCONA_AUTHENTICATION_LDAP=OFF \ - -DWITH_BOOST="${boost_dir}" \ - -DWITH_ICU=bundled \ - -DWITH_READLINE=system \ - -DWITH_ROUTER=OFF \ - -DWITH_GROUP_REPLICATION=OFF \ - -DWITH_NDB=OFF \ - -DWITH_SSL=system \ - -DWITH_TIRPC=bundled \ - -DWITH_UNIT_TESTS=OFF \ - -DWITH_WSREP=ON \ + + local mysql_cmake_args=( + -DBUILD_CONFIG=mysql_release + -DCMAKE_BUILD_TYPE=RelWithDebInfo + # Workaround libtirpc legacy code on modern compilers + -DCMAKE_C_FLAGS="-std=gnu17" + -DMINIMAL_RELWITHDEBINFO=OFF + -DCMAKE_CXX_COMPILER=g++ + -DCMAKE_C_COMPILER=gcc + -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" + -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' + -DCOMPILATION_COMMENT="${compilation_comment}" + -DENABLED_LOCAL_INFILE=OFF + -DINSTALL_MYSQLTESTDIR= + -DINSTALL_SECURE_FILE_PRIVDIR=NULL + -DINSTALL_STATIC_LIBRARIES=OFF + -DMYSQLX_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqlx.sock + -DMYSQL_DATADIR=/var/vcap/store/pxc-mysql + -DMYSQL_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqld.sock + -DSYSCONFDIR=/var/vcap/jobs/pxc-mysql/config + -DWITH_AUTHENTICATION_LDAP=OFF + -DWITH_AUTHENTICATION_FIDO=OFF + -DWITH_AUTHENTICATION_KERBEROS=OFF + -DWITH_PERCONA_AUTHENTICATION_LDAP=OFF + -DWITH_BOOST="${boost_dir}" + -DWITH_ICU=bundled + -DWITH_READLINE=system + -DWITH_ROUTER=OFF + -DWITH_GROUP_REPLICATION=OFF + -DWITH_NDB=OFF + -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF + -DWITH_SSL=system + -DWITH_TIRPC=bundled + -DWITH_UNIT_TESTS=OFF + -DWITH_WSREP=ON -DWITH_ZLIB=bundled + ) + + local galera_cmake_args=( + -DBOOST_ROOT="${boost_dir}" + -DBoost_DIR="$(readlink -f "${boost_dir}"/stage/lib/cmake/Boost-*/)" + ) + cmake .. "${mysql_cmake_args[@]}" "${galera_cmake_args[@]}" make -j "$(nproc)" install/strip ) diff --git a/packages/percona-xtradb-cluster-8.0/spec b/packages/percona-xtradb-cluster-8.0/spec index 96bf1fd95..dea6d77a4 100644 --- a/packages/percona-xtradb-cluster-8.0/spec +++ b/packages/percona-xtradb-cluster-8.0/spec @@ -8,5 +8,5 @@ files: - boost_1_77_0.tar.bz2 - check_*.tar.gz - libaio_*.orig.tar.xz -- pkgconf/pkgconf-*.tar.gz +- pkgconf-*.tar.xz - socat-*.tar.gz diff --git a/packages/percona-xtradb-cluster-8.4/packaging b/packages/percona-xtradb-cluster-8.4/packaging index f436842cd..d82c851dc 100644 --- a/packages/percona-xtradb-cluster-8.4/packaging +++ b/packages/percona-xtradb-cluster-8.4/packaging @@ -21,9 +21,8 @@ main() { } install_build_dependencies() { - tar -xf pkgconf/pkgconf-*.tar.gz - cd pkgconf-pkgconf-*/ - ./autogen.sh + tar -xf pkgconf-*.tar.xz + cd pkgconf-*/ ./configure --prefix=/usr make -j "$(nproc)" install ln -sf pkgconf /usr/bin/pkg-config @@ -37,7 +36,9 @@ install_build_dependencies() { tar -xf boost_*.tar.bz2 cd boost_*/ ./bootstrap.sh --with-libraries=program_options,system - ./b2 -j "$(nproc)" link=static + ./b2 -j "$(nproc)" cxxstd=17 cxxflags="-fPIC" cflags="-fPIC" + mkdir -p "${REAL_INSTALL_TARGET}/lib/private/" + cp --preserve=all ./stage/lib/libboost_program_options.so.* "${REAL_INSTALL_TARGET}/lib/private/" cd - tar -xf check_*.tar.gz @@ -70,7 +71,6 @@ build() { ( cd Percona-XtraDB-Cluster-*/ - source MYSQL_VERSION mysql_version="${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}" wsrep_version="$(grep WSREP_INTERFACE_VERSION wsrep-lib/wsrep-API/v26/wsrep_api.h | cut -d '"' -f2).$(grep 'SET(WSREP_PATCH_VERSION' "cmake/wsrep-lib.cmake" | cut -d '"' -f2)" @@ -86,96 +86,49 @@ build() { export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib" export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" - export BOOST_ROOT="${boost_dir}" - # Fix bundled libtirpc for GCC 14+: K&R-style empty parens mean (void) in C23, - # causing conflicts with proper prototypes. Force C17 for the tirpc sub-build. - sed -i '/^SET(TIRPC_C_FLAGS/a STRING_APPEND(TIRPC_C_FLAGS " -std=gnu17")' ../extra/tirpc/CMakeLists.txt - - cat > "${boost_dir}/BoostConfig.cmake" < "${boost_dir}/BoostConfigVersion.cmake" <<'BOOST_VER' -set(PACKAGE_VERSION "1.77.0") -if("${PACKAGE_FIND_VERSION}" VERSION_GREATER "1.77.0") - set(PACKAGE_VERSION_COMPATIBLE FALSE) -else() - set(PACKAGE_VERSION_COMPATIBLE TRUE) - if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "1.77.0") - set(PACKAGE_VERSION_EXACT TRUE) - endif() -endif() -BOOST_VER - - local ssl_lib_dir - ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu) - - cmake .. \ - -DBUILD_CONFIG=mysql_release \ - -DBOOST_ROOT="${boost_dir}" \ - -DBoost_INCLUDE_DIR="${boost_dir}" \ - -DBoost_NO_BOOST_CMAKE=ON \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DMINIMAL_RELWITHDEBINFO=OFF \ - -DCMAKE_CXX_COMPILER=g++ \ - -DCMAKE_C_COMPILER=gcc \ - -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ - -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ - -DCMAKE_PREFIX_PATH="${boost_dir}" \ - -DCOMPILATION_COMMENT="${compilation_comment}" \ - -DENABLED_LOCAL_INFILE=OFF \ - -DINSTALL_MYSQLTESTDIR= \ - -DINSTALL_SECURE_FILE_PRIVDIR=NULL \ - -DINSTALL_STATIC_LIBRARIES=OFF \ - -DMYSQLX_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqlx.sock \ - -DMYSQL_DATADIR=/var/vcap/store/pxc-mysql \ - -DMYSQL_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqld.sock \ - -DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \ - -DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \ - -DSYSCONFDIR=/var/vcap/jobs/pxc-mysql/config \ - -DWITH_AUTHENTICATION_LDAP=OFF \ - -DWITH_AUTHENTICATION_FIDO=OFF \ - -DWITH_AUTHENTICATION_KERBEROS=OFF \ - -DWITH_PERCONA_AUTHENTICATION_LDAP=OFF \ - -DWITH_ICU=bundled \ - -DWITH_READLINE=system \ - -DWITH_ROUTER=OFF \ - -DWITH_GROUP_REPLICATION=OFF \ - -DWITH_NDB=OFF \ - -DWITH_SSL=system \ - -DWITH_TIRPC=bundled \ - -DWITH_UNIT_TESTS=OFF \ - -DWITH_WSREP=ON \ + + local mysql_cmake_args=( + -DBUILD_CONFIG=mysql_release + -DCMAKE_BUILD_TYPE=RelWithDebInfo + # Workaround libtirpc legacy code on modern compilers + -DCMAKE_C_FLAGS="-std=gnu17" + -DMINIMAL_RELWITHDEBINFO=OFF + -DCMAKE_CXX_COMPILER=g++ + -DCMAKE_C_COMPILER=gcc + -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" + -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' + -DCOMPILATION_COMMENT="${compilation_comment}" + -DENABLED_LOCAL_INFILE=OFF + -DINSTALL_MYSQLTESTDIR= + -DINSTALL_SECURE_FILE_PRIVDIR=NULL + -DINSTALL_STATIC_LIBRARIES=OFF + -DMYSQLX_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqlx.sock + -DMYSQL_DATADIR=/var/vcap/store/pxc-mysql + -DMYSQL_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqld.sock + -DSYSCONFDIR=/var/vcap/jobs/pxc-mysql/config + -DWITH_AUTHENTICATION_LDAP=OFF + -DWITH_AUTHENTICATION_FIDO=OFF + -DWITH_AUTHENTICATION_KERBEROS=OFF + -DWITH_PERCONA_AUTHENTICATION_LDAP=OFF + -DWITH_ICU=bundled + -DWITH_READLINE=system + -DWITH_ROUTER=OFF + -DWITH_GROUP_REPLICATION=OFF + -DWITH_NDB=OFF + -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF + -DWITH_SSL=system + -DWITH_TIRPC=bundled + -DWITH_UNIT_TESTS=OFF + -DWITH_WSREP=ON -DWITH_ZLIB=bundled + ) + + local galera_cmake_args=( + -DBOOST_ROOT="${boost_dir}" + -DBoost_DIR="$(readlink -f "${boost_dir}"/stage/lib/cmake/Boost-*/)" + ) + cmake .. "${mysql_cmake_args[@]}" "${galera_cmake_args[@]}" make -j "$(nproc)" install/strip ) diff --git a/packages/percona-xtradb-cluster-8.4/spec b/packages/percona-xtradb-cluster-8.4/spec index 9da2074e3..274564f91 100644 --- a/packages/percona-xtradb-cluster-8.4/spec +++ b/packages/percona-xtradb-cluster-8.4/spec @@ -8,5 +8,5 @@ files: - boost_1_77_0.tar.bz2 - check_*.tar.gz - libaio_*.orig.tar.xz -- pkgconf/pkgconf-*.tar.gz +- pkgconf-*.tar.xz - socat-*.tar.gz From 0de35e1387c92e3288f324d2a048344918fbe2ff Mon Sep 17 00:00:00 2001 From: Andrew Garner Date: Mon, 30 Mar 2026 15:56:36 -0500 Subject: [PATCH 3/3] wip: replace percona-xtrabackup-2.4 with placeholder script --- config/blobs.yml | 8 -- packages/percona-xtrabackup-2.4/packaging | 90 ++++--------------- packages/percona-xtrabackup-2.4/spec | 7 +- .../cmake42-compat.patch | 71 --------------- 4 files changed, 19 insertions(+), 157 deletions(-) delete mode 100644 src/percona-xtrabackup-2.4-patches/cmake42-compat.patch diff --git a/config/blobs.yml b/config/blobs.yml index 1355d0dc2..480545f8b 100644 --- a/config/blobs.yml +++ b/config/blobs.yml @@ -6,10 +6,6 @@ Percona-XtraDB-Cluster-8.4.7-7.tar.gz: size: 506738352 object_id: 46238cf5-2ca3-4619-47d2-e54bf1d2f418 sha: sha256:5b8e7c4d4cb422d018ec668d9cc69f6f403e4974ea71a6d7405a8b2194aa14a9 -boost_1_59_0.tar.bz2: - size: 70389425 - object_id: 7344fc77-b911-45c2-5467-c6d5fcab6d29 - sha: sha256:727a932322d94287b62abb1bd2d41723eec4356a7728909e38adb65ca25241ca boost_1_77_0.tar.bz2: size: 110361537 object_id: d962752f-1ab7-4896-41d9-8deed29397ca @@ -30,10 +26,6 @@ libev-4.33.tar.gz: size: 569527 object_id: 0ea3b0f6-7b83-4fe5-7ff8-966bcc56ab73 sha: sha256:507eb7b8d1015fbec5b935f34ebed15bf346bed04a11ab82b8eee848c4205aea -percona-xtrabackup-2.4.29.tar.gz: - size: 64667518 - object_id: f196e2a0-e2ba-43ef-7d91-4319f8e6b927 - sha: sha256:c59f0d612ec6a0f530ca3645546fb8af690f62d3ecbd70d33f30d3f56d9e842e percona-xtrabackup-8.0.35-35.tar.gz: size: 447852862 object_id: cfe465d2-d13b-46a9-64f1-8ebb44bd7e08 diff --git a/packages/percona-xtrabackup-2.4/packaging b/packages/percona-xtrabackup-2.4/packaging index 4354dd1aa..e8341220f 100644 --- a/packages/percona-xtrabackup-2.4/packaging +++ b/packages/percona-xtrabackup-2.4/packaging @@ -1,74 +1,20 @@ #!/usr/bin/env bash -set -o errexit -set -o nounset - -# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D` -# replaces symlink path components with real directories instead of following -# them. Resolve the real path so libaio's `make install` (which uses -# `install -D`) writes to the correct location on persistent disk. -# See https://github.com/uutils/coreutils/issues/11469 -REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}" -if [ -L "${BOSH_INSTALL_TARGET}" ]; then - REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}") -fi - -main() { - install_build_dependencies - unpack_source - build_and_install -} - -install_build_dependencies() { - tar -xf libaio_*.tar.xz - cd libaio-*/ - make -j "$(nproc)" install prefix="${REAL_INSTALL_TARGET}" - cd - - - tar -xf libev-*.tar.gz - cd libev-*/ - ./configure --prefix=/usr/local --disable-static - make -j "$(nproc)" install - ./configure --prefix="${BOSH_INSTALL_TARGET}" --libdir="${BOSH_INSTALL_TARGET}/lib/private" --disable-static - make -j "$(nproc)" install-exec - cd - -} - -unpack_source() { - tar -xf boost_1_59_0.tar.bz2 - tar -xf percona-xtrabackup-*.tar.gz -} - -build_and_install() { - cd percona-xtrabackup-2.4.*/ - - # Fix deprecated cmake policies, strict-prototype errors (GCC 14+), and - # non-existent target lookups for compatibility with modern CMake and toolchains. - patch -p1 < ../percona-xtrabackup-2.4-patches/cmake42-compat.patch - - mkdir bld && cd bld - - export LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib:${BOSH_INSTALL_TARGET}/lib/private" - export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib" - export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" - export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include" - - # shellcheck disable=SC2016 - cmake .. \ - -DBUILD_CONFIG=xtrabackup_release \ - -DCMAKE_CXX_COMPILER=g++ \ - -DCMAKE_C_COMPILER=gcc \ - -DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \ - -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \ - -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ - -DINSTALL_MYSQLTESTDIR= \ - -DWITH_BOOST=../../boost_1_59_0 \ - -DWITH_MAN_PAGES=OFF \ - -DWITH_SSL=system \ - -DWITH_ZLIB=bundled - - make -j "$(nproc)" install/strip - rm -fr "${BOSH_INSTALL_TARGET}/man/" -} - -main +set -o errexit -o nounset + +mkdir -p "${BOSH_INSTALL_TARGET}/bin" +script="${BOSH_INSTALL_TARGET}/bin/xtrabackup" +cat >"$script" <<'EOF' +#!/bin/bash + +for arg in "$@";do + if [[ $arg == "--version" ]]; then + echo "xtrabackup version 2.4.29" + exit 0 + fi +done + +echo >&2 "MySQL v5.7 is not supported under this configuration." +exit 1 +EOF +chmod 0755 "${script}" diff --git a/packages/percona-xtrabackup-2.4/spec b/packages/percona-xtrabackup-2.4/spec index 651bc75d1..63209325f 100644 --- a/packages/percona-xtrabackup-2.4/spec +++ b/packages/percona-xtrabackup-2.4/spec @@ -3,9 +3,4 @@ name: percona-xtrabackup-2.4 dependencies: [] -files: -- boost_1_59_0.tar.bz2 -- percona-xtrabackup-2.4*.tar.gz -- libev-*.tar.gz -- libaio_*.tar.xz -- percona-xtrabackup-2.4-patches/cmake42-compat.patch +files: [] diff --git a/src/percona-xtrabackup-2.4-patches/cmake42-compat.patch b/src/percona-xtrabackup-2.4-patches/cmake42-compat.patch deleted file mode 100644 index e31999c6d..000000000 --- a/src/percona-xtrabackup-2.4-patches/cmake42-compat.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -30,25 +30,6 @@ ELSE() - CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9) - ENDIF() - --# We use CMAKE_SHARED_LIBRARY__FLAGS. See cmake --help-policy CMP0018 --IF(CMAKE_VERSION VERSION_GREATER "2.8.8") -- CMAKE_POLICY(SET CMP0018 OLD) --ENDIF() -- --# We use PROPERTIES LINK_INTERFACE_LIBRARIES. See cmake --help-policy CMP0022 --IF(CMAKE_VERSION VERSION_EQUAL "2.8.12" OR -- CMAKE_VERSION VERSION_GREATER "2.8.12") -- CMAKE_POLICY(SET CMP0022 OLD) --ENDIF() -- --# We use get_target_property() for non-existent targets (CMP0045) --# and INSTALL_NAME_DIR (CMP0042) --IF(CMAKE_VERSION VERSION_EQUAL "3.0.0" OR -- CMAKE_VERSION VERSION_GREATER "3.0.0") -- CMAKE_POLICY(SET CMP0045 OLD) -- CMAKE_POLICY(SET CMP0042 OLD) --ENDIF() -- - # In CMake 3.12 and above, the - # - # * ``check_include_file`` macro in the ``CheckIncludeFile`` module, the -diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake ---- a/cmake/install_macros.cmake -+++ b/cmake/install_macros.cmake -@@ -128,6 +128,10 @@ FUNCTION(INSTALL_DEBUG_TARGET target) - ${ARGN} - ) - -+ IF(NOT TARGET ${target}) -+ RETURN() -+ ENDIF() -+ - # Relevant only for RelWithDebInfo builds - IF(BUILD_IS_SINGLE_CONFIG AND CMAKE_BUILD_TYPE STREQUAL "Debug") - RETURN() -diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake ---- a/cmake/libutils.cmake -+++ b/cmake/libutils.cmake -@@ -253,7 +253,11 @@ MACRO(MERGE_CONVENIENCE_LIBRARIES) - SET(OSLIBS) - SET(MYLIBS) - FOREACH(LIB ${LIBS}) -- GET_TARGET_PROPERTY(LIB_TYPE ${LIB} TYPE) -+ IF(TARGET ${LIB}) -+ GET_TARGET_PROPERTY(LIB_TYPE ${LIB} TYPE) -+ ELSE() -+ SET(LIB_TYPE "UNKNOWN") -+ ENDIF() - IF(LIB_TYPE STREQUAL "STATIC_LIBRARY") - LIST(FIND KNOWN_CONVENIENCE_LIBRARIES ${LIB} FOUNDIT) - IF(FOUNDIT LESS 0) -diff --git a/include/my_global.h b/include/my_global.h ---- a/include/my_global.h -+++ b/include/my_global.h -@@ -213,7 +213,7 @@ typedef int my_socket; /* File descriptor for sockets */ - #define INVALID_SOCKET -1 - #endif - C_MODE_START --typedef void (*sig_return)();/* Returns type from signal */ -+typedef void (*sig_return)(int);/* Returns type from signal */ - C_MODE_END - #if defined(__GNUC__) - typedef char pchar; /* Mixed prototypes can take char */