Skip to content

Commit 39afaa5

Browse files
committed
initial resolute raccoon support
1 parent 4fa97d7 commit 39afaa5

File tree

12 files changed

+291
-43
lines changed

12 files changed

+291
-43
lines changed

config/blobs.yml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,13 @@ percona-xtrabackup-8.4.0-5.tar.gz:
4242
size: 432646274
4343
object_id: edf66c32-e051-4a55-561a-bd67bb8a13bb
4444
sha: sha256:fadcf27efd2a2596f689388659e2ff5c36debcc051a55974ac8bb4a83c015f57
45-
pkg-config_0.29.2.orig.tar.gz:
46-
size: 2016830
47-
object_id: ca3d829d-016e-4acd-6509-9d1766884b9d
48-
sha: sha256:6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591
45+
pkgconf/pkgconf-2.5.1.tar.gz:
46+
size: 133113
47+
sha: sha256:79721badcad1987dead9c3609eb4877ab9b58821c06bdacb824f2c8897c11f2a
4948
procps-ng-4.0.5.tar.xz:
5049
size: 1517672
5150
object_id: e196e815-f7be-462d-64f0-feaac1caffe0
5251
sha: sha256:c2e6d193cc78f84cd6ddb72aaf6d5c6a9162f0470e5992092057f5ff518562fa
53-
socat-1.7.4.4.tar.gz:
54-
size: 662968
55-
object_id: beda2a1f-82fe-4370-47c9-080352292869
56-
sha: sha256:0f8f4b9d5c60b8c53d17b60d79ababc4a0f51b3bb6d2bd3ae8a6a4b9d68f195e
52+
socat-1.8.1.1.tar.gz:
53+
size: 766524
54+
sha: sha256:f68b602c80e94b4b7498d74ec408785536fe33534b39467977a82ab2f7f01ddb

packages/percona-xtrabackup-2.4/packaging

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
set -o errexit
44
set -o nounset
55

6+
# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D`
7+
# replaces symlink path components with real directories instead of following
8+
# them. Resolve the real path so libaio's `make install` (which uses
9+
# `install -D`) writes to the correct location on persistent disk.
10+
# See https://github.com/uutils/coreutils/issues/11469
11+
REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}"
12+
if [ -L "${BOSH_INSTALL_TARGET}" ]; then
13+
REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}")
14+
fi
15+
616
main() {
717
install_build_dependencies
818
unpack_source
@@ -12,7 +22,7 @@ main() {
1222
install_build_dependencies() {
1323
tar -xf libaio_*.tar.xz
1424
cd libaio-*/
15-
make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}"
25+
make -j "$(nproc)" install prefix="${REAL_INSTALL_TARGET}"
1626
cd -
1727

1828
tar -xf libev-*.tar.gz
@@ -30,7 +40,12 @@ unpack_source() {
3040
}
3141

3242
build_and_install() {
33-
cd percona-xtrabackup-*/
43+
cd percona-xtrabackup-2.4.*/
44+
45+
# Fix deprecated cmake policies, strict-prototype errors (GCC 14+), and
46+
# non-existent target lookups for compatibility with modern CMake and toolchains.
47+
patch -p1 < ../percona-xtrabackup-2.4-patches/cmake42-compat.patch
48+
3449
mkdir bld && cd bld
3550

3651
export LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib:${BOSH_INSTALL_TARGET}/lib/private"
@@ -45,10 +60,12 @@ build_and_install() {
4560
-DCMAKE_C_COMPILER=gcc \
4661
-DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \
4762
-DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \
63+
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
4864
-DINSTALL_MYSQLTESTDIR= \
4965
-DWITH_BOOST=../../boost_1_59_0 \
5066
-DWITH_MAN_PAGES=OFF \
51-
-DWITH_SSL=system
67+
-DWITH_SSL=system \
68+
-DWITH_ZLIB=bundled
5269

5370
make -j "$(nproc)" install/strip
5471
rm -fr "${BOSH_INSTALL_TARGET}/man/"

packages/percona-xtrabackup-2.4/spec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ files:
88
- percona-xtrabackup-2.4*.tar.gz
99
- libev-*.tar.gz
1010
- libaio_*.tar.xz
11+
- percona-xtrabackup-2.4-patches/cmake42-compat.patch

packages/percona-xtrabackup-8.0/packaging

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,34 @@
33
set -o errexit
44
set -o nounset
55

6+
# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D`
7+
# replaces symlink path components with real directories instead of following
8+
# them. Resolve the real path so libaio's `make install` (which uses
9+
# `install -D`) writes to the correct location on persistent disk.
10+
# See https://github.com/uutils/coreutils/issues/11469
11+
REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}"
12+
if [ -L "${BOSH_INSTALL_TARGET}" ]; then
13+
REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}")
14+
fi
15+
616
main() {
717
install_build_dependencies
818
unpack_source
919
build_and_install
1020
}
1121

1222
install_build_dependencies() {
13-
tar -xf pkg-config_*.tar.gz
14-
cd pkg-config-*/
15-
./configure --prefix=/usr \
16-
--with-internal-glib \
17-
--with-pc-path=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
23+
tar -xf pkgconf/pkgconf-*.tar.gz
24+
cd pkgconf-pkgconf-*/
25+
./autogen.sh
26+
./configure --prefix=/usr
1827
make -j "$(nproc)" install
28+
ln -sf pkgconf /usr/bin/pkg-config
1929
cd -
2030

2131
tar -xf libaio_*.tar.xz
2232
cd libaio-*/
23-
make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}"
33+
make -j "$(nproc)" install prefix="${REAL_INSTALL_TARGET}"
2434
cd -
2535

2636
tar -xf libev-*.tar.gz
@@ -68,6 +78,10 @@ build_and_install() {
6878
export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib"
6979
export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"
7080
export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"
81+
export OPENSSL_ROOT_DIR=/usr
82+
83+
local ssl_lib_dir
84+
ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu)
7185

7286
# shellcheck disable=SC2016
7387
cmake .. \
@@ -78,6 +92,9 @@ build_and_install() {
7892
-DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \
7993
-DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \
8094
-DINSTALL_MYSQLTESTDIR= \
95+
-DOPENSSL_ROOT_DIR=/usr \
96+
-DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \
97+
-DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \
8198
-DWITH_BOOST="${boost_dir}" \
8299
-DWITH_MAN_PAGES=OFF \
83100
-DWITH_SSL=system \

packages/percona-xtrabackup-8.0/spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ files:
88
- percona-xtrabackup-8.0*.tar.gz
99
- libev-*.tar.gz
1010
- libaio_*.tar.xz
11-
- pkg-config_*.tar.gz
11+
- pkgconf/pkgconf-*.tar.gz
1212
- procps-ng-*.tar.xz

packages/percona-xtrabackup-8.4/packaging

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,34 @@
33
set -o errexit
44
set -o nounset
55

6+
# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D`
7+
# replaces symlink path components with real directories instead of following
8+
# them. Resolve the real path so libaio's `make install` (which uses
9+
# `install -D`) writes to the correct location on persistent disk.
10+
# See https://github.com/uutils/coreutils/issues/11469
11+
REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}"
12+
if [ -L "${BOSH_INSTALL_TARGET}" ]; then
13+
REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}")
14+
fi
15+
616
main() {
717
install_build_dependencies
818
unpack_source
919
build_and_install
1020
}
1121

1222
install_build_dependencies() {
13-
tar -xf pkg-config_*.tar.gz
14-
cd pkg-config-*/
15-
./configure --prefix=/usr \
16-
--with-internal-glib \
17-
--with-pc-path=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
23+
tar -xf pkgconf/pkgconf-*.tar.gz
24+
cd pkgconf-pkgconf-*/
25+
./autogen.sh
26+
./configure --prefix=/usr
1827
make -j "$(nproc)" install
28+
ln -sf pkgconf /usr/bin/pkg-config
1929
cd -
2030

2131
tar -xf libaio_*.tar.xz
2232
cd libaio-*/
23-
make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}"
33+
make -j "$(nproc)" install prefix="${REAL_INSTALL_TARGET}"
2434
cd -
2535

2636
tar -xf libev-*.tar.gz

packages/percona-xtrabackup-8.4/spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ files:
77
- libaio_*.tar.xz
88
- libev-*.tar.gz
99
- percona-xtrabackup-8.4*.tar.gz
10-
- pkg-config_*.tar.gz
10+
- pkgconf/pkgconf-*.tar.gz
1111
- procps-ng-*.tar.xz

packages/percona-xtradb-cluster-8.0/packaging

Lines changed: 76 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,34 @@ set -o errexit
44
set -o nounset
55
set -o pipefail
66

7+
# Workaround for uutils coreutils 0.7.0 (ubuntu-resolute): its `install -D`
8+
# replaces symlink path components with real directories instead of following
9+
# them. Resolve the real path so libaio's `make install` (which uses
10+
# `install -D`) writes to the correct location on persistent disk.
11+
# See https://github.com/uutils/coreutils/issues/11363
12+
REAL_INSTALL_TARGET="${BOSH_INSTALL_TARGET}"
13+
if [ -L "${BOSH_INSTALL_TARGET}" ]; then
14+
REAL_INSTALL_TARGET=$(readlink -f "${BOSH_INSTALL_TARGET}")
15+
fi
16+
717
main() {
818
install_build_dependencies
919
install_runtime_dependencies
1020
build
1121
}
1222

1323
install_build_dependencies() {
14-
tar -xf pkg-config_*.tar.gz
15-
cd pkg-config-*/
16-
./configure \
17-
--prefix=/usr \
18-
--with-internal-glib \
19-
--with-pc-path=/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
24+
tar -xf pkgconf/pkgconf-*.tar.gz
25+
cd pkgconf-pkgconf-*/
26+
./autogen.sh
27+
./configure --prefix=/usr
2028
make -j "$(nproc)" install
29+
ln -sf pkgconf /usr/bin/pkg-config
2130
cd -
2231

2332
tar -xf libaio_*.orig.tar.xz
2433
cd libaio-*/
25-
make install prefix="${BOSH_INSTALL_TARGET}"
34+
make install prefix="${REAL_INSTALL_TARGET}"
2635
cd -
2736

2837
tar -xf boost_*.tar.bz2
@@ -61,6 +70,7 @@ build() {
6170

6271
(
6372
cd Percona-XtraDB-Cluster-*/
73+
6474
source MYSQL_VERSION
6575
mysql_version="${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}"
6676
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() {
7686
export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib"
7787
export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"
7888
export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"
89+
export OPENSSL_ROOT_DIR=/usr
90+
export BOOST_ROOT="${boost_dir}"
91+
# Fix bundled libtirpc for GCC 14+: K&R-style empty parens mean (void) in C23,
92+
# causing conflicts with proper prototypes. Force C17 for the tirpc sub-build.
93+
sed -i '/^SET(TIRPC_C_FLAGS/a STRING_APPEND(TIRPC_C_FLAGS " -std=gnu17")' ../extra/tirpc/CMakeLists.txt
94+
95+
cat > "${boost_dir}/BoostConfig.cmake" <<BOOST_CMAKE
96+
set(Boost_FOUND TRUE)
97+
set(Boost_INCLUDE_DIRS "${boost_dir}")
98+
set(Boost_INCLUDE_DIR "${boost_dir}")
99+
set(Boost_VERSION_STRING "1.77.0")
100+
set(Boost_VERSION_MAJOR 1)
101+
set(Boost_VERSION_MINOR 77)
102+
set(Boost_VERSION_PATCH 0)
103+
set(PACKAGE_VERSION "1.77.0")
104+
set(PACKAGE_VERSION_COMPATIBLE TRUE)
105+
set(PACKAGE_VERSION_EXACT FALSE)
106+
107+
set(Boost_LIBRARY_DIRS "${boost_dir}/stage/lib")
108+
set(Boost_PROGRAM_OPTIONS_FOUND TRUE)
109+
set(Boost_PROGRAM_OPTIONS_LIBRARY "${boost_dir}/stage/lib/libboost_program_options.a")
110+
set(Boost_SYSTEM_FOUND TRUE)
111+
set(Boost_SYSTEM_LIBRARY "${boost_dir}/stage/lib/libboost_system.a")
112+
set(Boost_LIBRARIES "\${Boost_PROGRAM_OPTIONS_LIBRARY};\${Boost_SYSTEM_LIBRARY}")
113+
114+
if(NOT TARGET Boost::program_options)
115+
add_library(Boost::program_options STATIC IMPORTED)
116+
set_target_properties(Boost::program_options PROPERTIES
117+
IMPORTED_LOCATION "${boost_dir}/stage/lib/libboost_program_options.a"
118+
INTERFACE_INCLUDE_DIRECTORIES "${boost_dir}")
119+
endif()
120+
if(NOT TARGET Boost::system)
121+
add_library(Boost::system STATIC IMPORTED)
122+
set_target_properties(Boost::system PROPERTIES
123+
IMPORTED_LOCATION "${boost_dir}/stage/lib/libboost_system.a"
124+
INTERFACE_INCLUDE_DIRECTORIES "${boost_dir}")
125+
endif()
126+
BOOST_CMAKE
127+
cat > "${boost_dir}/BoostConfigVersion.cmake" <<'BOOST_VER'
128+
set(PACKAGE_VERSION "1.77.0")
129+
if("${PACKAGE_FIND_VERSION}" VERSION_GREATER "1.77.0")
130+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
131+
else()
132+
set(PACKAGE_VERSION_COMPATIBLE TRUE)
133+
if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "1.77.0")
134+
set(PACKAGE_VERSION_EXACT TRUE)
135+
endif()
136+
endif()
137+
BOOST_VER
138+
139+
local ssl_lib_dir
140+
ssl_lib_dir=$(pkg-config --variable=libdir openssl 2>/dev/null || echo /usr/lib/x86_64-linux-gnu)
79141

80142
cmake .. \
81143
-DBUILD_CONFIG=mysql_release \
82144
-DBOOST_ROOT="${boost_dir}" \
145+
-DBoost_INCLUDE_DIR="${boost_dir}" \
146+
-DBoost_NO_BOOST_CMAKE=ON \
83147
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
84148
-DMINIMAL_RELWITHDEBINFO=OFF \
85149
-DCMAKE_CXX_COMPILER=g++ \
86150
-DCMAKE_C_COMPILER=gcc \
87151
-DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \
88152
-DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \
153+
-DCMAKE_PREFIX_PATH="${boost_dir}" \
89154
-DCOMPILATION_COMMENT="${compilation_comment}" \
90155
-DENABLED_LOCAL_INFILE=OFF \
91156
-DINSTALL_MYSQLTESTDIR= \
@@ -94,13 +159,16 @@ build() {
94159
-DMYSQLX_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqlx.sock \
95160
-DMYSQL_DATADIR=/var/vcap/store/pxc-mysql \
96161
-DMYSQL_UNIX_ADDR=/var/vcap/sys/run/pxc-mysql/mysqld.sock \
162+
-DOPENSSL_ROOT_DIR=/usr \
163+
-DOPENSSL_CRYPTO_LIBRARY="${ssl_lib_dir}/libcrypto.so" \
164+
-DOPENSSL_SSL_LIBRARY="${ssl_lib_dir}/libssl.so" \
97165
-DSYSCONFDIR=/var/vcap/jobs/pxc-mysql/config \
98166
-DWITH_AUTHENTICATION_LDAP=OFF \
99167
-DWITH_AUTHENTICATION_FIDO=OFF \
100168
-DWITH_AUTHENTICATION_KERBEROS=OFF \
101169
-DWITH_PERCONA_AUTHENTICATION_LDAP=OFF \
102170
-DWITH_BOOST="${boost_dir}" \
103-
-DWITH_ICU=system \
171+
-DWITH_ICU=bundled \
104172
-DWITH_READLINE=system \
105173
-DWITH_ROUTER=OFF \
106174
-DWITH_GROUP_REPLICATION=OFF \

packages/percona-xtradb-cluster-8.0/spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ files:
88
- boost_1_77_0.tar.bz2
99
- check_*.tar.gz
1010
- libaio_*.orig.tar.xz
11-
- pkg-config_*.tar.gz
11+
- pkgconf/pkgconf-*.tar.gz
1212
- socat-*.tar.gz

0 commit comments

Comments
 (0)