@@ -4,25 +4,34 @@ set -o errexit
44set -o nounset
55set -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+
717main () {
818 install_build_dependencies
919 install_runtime_dependencies
1020 build
1121}
1222
1323install_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 \
0 commit comments