Skip to content

Commit

Permalink
fix compilation on ubuntu-noble
Browse files Browse the repository at this point in the history
- vendor pkg-config; This seems to be required for MySQL to correctly
  detect OpenSSL on ubuntu-noble now.

  This adds a new bosh blob, pkg-config v0.29.2
- vendor libaio; libaio version was bumped and the old packaging method
  of compiling against a "stub" libaio but used the copy on the stemcell
  no longer works.

Fixes #54
  • Loading branch information
abg committed Jan 29, 2025
1 parent c5adbe9 commit 602ff9c
Show file tree
Hide file tree
Showing 8 changed files with 80 additions and 39 deletions.
4 changes: 4 additions & 0 deletions config/blobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ percona-xtrabackup-8.0.35-31.tar.gz:
size: 447786172
object_id: 845f90c2-0643-459d-61cd-57ebf90bb585
sha: sha256:c6bda1e7f983e5a667bff22d1d67d33404db4e741676d03c9c60bbd4b263cabf
pkg-config_0.29.2.orig.tar.gz:
size: 2016830
object_id: ca3d829d-016e-4acd-6509-9d1766884b9d
sha: sha256:6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591
procps_3.3.17.orig.tar.xz:
size: 1008428
object_id: 49ca152b-47d2-4737-5f55-154159b7ed7d
Expand Down
4 changes: 4 additions & 0 deletions operations/noble-stemcell.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
- type: replace
path: /stemcells/alias=default/os
value: ubuntu-noble
17 changes: 11 additions & 6 deletions packages/percona-xtrabackup-2.4/packaging
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ main() {
install_build_dependencies() {
tar -xf libaio_*.tar.xz
cd libaio-*/
make -j $(nproc) install
make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}"
cd -

tar -xf libev-*.tar.gz
cd libev-*/
./configure --prefix=/usr/local --disable-static
make -j $(nproc) install
make -j "$(nproc)" install
./configure --prefix="${BOSH_INSTALL_TARGET}" --libdir="${BOSH_INSTALL_TARGET}/lib/private" --disable-static
make -j $(nproc) install-exec
make -j "$(nproc)" install-exec
cd -
}

Expand All @@ -33,19 +33,24 @@ build_and_install() {
cd percona-xtrabackup-*/
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' \
-DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \
-DINSTALL_MYSQLTESTDIR= \
-DWITH_BOOST=../../boost_1_59_0 \
-DWITH_MAN_PAGES=OFF \
-DWITH_SSL=system

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

Expand Down
35 changes: 23 additions & 12 deletions packages/percona-xtrabackup-8.0/packaging
Original file line number Diff line number Diff line change
Expand Up @@ -10,35 +10,44 @@ 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
make -j "$(nproc)" install
cd -

tar -xf libaio_*.tar.xz
cd libaio-*/
make -j $(nproc) install
make -j "$(nproc)" install prefix="${BOSH_INSTALL_TARGET}"
cd -

tar -xf libev-*.tar.gz
cd libev-*/
./configure --prefix=/usr/local --disable-static
make -j $(nproc) install
make -j "$(nproc)" install
./configure --prefix="${BOSH_INSTALL_TARGET}" --libdir="${BOSH_INSTALL_TARGET}/lib/private" --disable-static
make -j $(nproc) install-exec
make -j "$(nproc)" install-exec
cd -

tar -xf procps_*.tar.xz
cd procps-*/
local discard_dir=$(mktemp -d)
local discard_dir
discard_dir=$(mktemp -d)
./configure \
--disable-pidof \
--disable-kill \
--disable-static \
--disable-modern-top \
--disable-numa \
--without-ncurses \
--bindir=${discard_dir} \
--sbindir=${discard_dir} \
--bindir="${discard_dir}" \
--sbindir="${discard_dir}" \
--libdir="${BOSH_INSTALL_TARGET}/lib/private" \
--prefix="${BOSH_INSTALL_TARGET}" \
--datarootdir=${discard_dir} \
--datadir=${discard_dir}
--datarootdir="${discard_dir}" \
--datadir="${discard_dir}"
make -j "$(nproc)" install
cd -
}
Expand All @@ -55,24 +64,26 @@ build_and_install() {
local boost_dir
boost_dir=$(readlink -f ../../boost_*/)

export LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib/private"
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_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \
-DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private' \
-DCMAKE_INSTALL_RPATH='$ORIGIN/../lib/private;$ORIGIN/../lib' \
-DINSTALL_MYSQLTESTDIR= \
-DWITH_BOOST="${boost_dir}" \
-DWITH_MAN_PAGES=OFF \
-DWITH_SSL=system \
-DWITH_VERSION_CHECK=OFF

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

Expand Down
1 change: 1 addition & 0 deletions packages/percona-xtrabackup-8.0/spec
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ files:
- percona-xtrabackup-8.0*.tar.gz
- libev-*.tar.gz
- libaio_*.tar.xz
- pkg-config_*.tar.gz
- procps_*.orig.tar.xz
37 changes: 17 additions & 20 deletions packages/percona-xtradb-cluster-5.7/packaging
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set -o errexit -o nounset -o pipefail
install_build_dependencies() {
tar -xf libaio_*.orig.tar.xz
cd libaio-*/
make install
make install prefix="${BOSH_INSTALL_TARGET}"
cd -

tar -xf boost_1_59_0.tar.bz2
Expand Down Expand Up @@ -36,33 +36,41 @@ unpack_source() {

apply_patches() {
(
cd ./*Percona-XtraDB-Cluster-*/
cd Percona-XtraDB-Cluster-*/
patch -p1 < ../patches/libgalera_pxc57_cmake.patch
)
}

configure_source() {
build_and_install() {
(
cd ./*Percona-XtraDB-Cluster-*/percona-xtradb-cluster-galera/
cd Percona-XtraDB-Cluster-*/percona-xtradb-cluster-galera/
cp GALERA-REVISION GALERA_GIT_REVISION
cmake . \
-DBOOST_ROOT=../../boost_1_59_0 \
-DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \
-DGALERA_REVISION="$(<GALERA-REVISION)"
make -j "$(nproc)" install/strip
mv "${BOSH_INSTALL_TARGET}/doc" "${BOSH_INSTALL_TARGET}/doc.galera"
)

(
cd ./*Percona-XtraDB-Cluster-*/
cd Percona-XtraDB-Cluster-*/
source MYSQL_VERSION
compilation_comment="Percona XtraDB Cluster (GPL) ${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}"

export LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib"
export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib"
export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"
export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"

mkdir bld && cd bld
cmake .. \
-DBUILD_CONFIG=mysql_release \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_INSTALL_PREFIX="${BOSH_INSTALL_TARGET}" \
-DCMAKE_INSTALL_RPATH='$ORIGIN/../lib' \
-DCOMPILATION_COMMENT="${compilation_comment}" \
-DENABLED_LOCAL_INFILE=off \
-DINSTALL_MYSQLTESTDIR= \
Expand All @@ -83,29 +91,18 @@ configure_source() {
-DWITH_UNIT_TESTS=OFF \
-DWITH_WSREP=ON \
-DWITH_ZLIB=bundled
)
}

build_source() {
make -C ./*Percona-XtraDB-Cluster-*/percona-xtradb-cluster-galera/ -j $(nproc)
make -C ./*Percona-XtraDB-Cluster-*/bld/ -j $(nproc)
}

install_distribution() {
make -C ./*Percona-XtraDB-Cluster-*/bld/ -j $(nproc) install/strip
make -C ./*Percona-XtraDB-Cluster-*/percona-xtradb-cluster-galera/ -j $(nproc) install/strip
mv "${BOSH_INSTALL_TARGET}/doc" "${BOSH_INSTALL_TARGET}/doc.galera"
rm -fr "${BOSH_INSTALL_TARGET}"/share/garb* "${BOSH_INSTALL_TARGET}/cmake/"
make -j "$(nproc)" install/strip
rm -fr "${BOSH_INSTALL_TARGET}"/share/garb* "${BOSH_INSTALL_TARGET}/cmake/"
)
}

main() {
install_build_dependencies
install_socat
unpack_source
apply_patches
configure_source
build_source
install_distribution
build_and_install
}

main
20 changes: 19 additions & 1 deletion packages/percona-xtradb-cluster-8.0/packaging
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,18 @@ 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
make -j "$(nproc)" install
cd -

tar -xf libaio_*.orig.tar.xz
cd libaio-*/
make install
make install prefix="${BOSH_INSTALL_TARGET}"
cd -

tar -xf boost_*.tar.bz2
Expand Down Expand Up @@ -61,6 +70,14 @@ build() {
echo "${mysql_version}" >"${BOSH_INSTALL_TARGET}/VERSION"

mkdir bld && cd bld

# Point search paths to ${BOSH_INSTALL_TARGET} to find vendored build dependencies
# libaio,in particular, won't be found in a non-standard path without this change.
export LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib"
export LD_LIBRARY_PATH="${BOSH_INSTALL_TARGET}/lib"
export CPLUS_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"
export C_INCLUDE_PATH="${BOSH_INSTALL_TARGET}/include"

cmake .. \
-DBUILD_CONFIG=mysql_release \
-DBOOST_ROOT="${boost_dir}" \
Expand All @@ -69,6 +86,7 @@ build() {
-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= \
Expand Down
1 change: 1 addition & 0 deletions packages/percona-xtradb-cluster-8.0/spec
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ files:
- boost_1_77_0.tar.bz2
- check_*.tar.gz
- libaio_*.orig.tar.xz
- pkg-config_*.tar.gz
- socat-*.tar.gz

0 comments on commit 602ff9c

Please sign in to comment.