1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

chore(build): use array of flags instead of string

This commit is contained in:
Leonid Fedorov
2025-05-06 14:20:02 +00:00
committed by Leonid Fedorov
parent 220d85329a
commit 8bbf373b43

View File

@ -21,7 +21,7 @@ BUILD_TYPE_OPTIONS=("Debug" "RelWithDebInfo")
DISTRO_OPTIONS=("ubuntu:20.04" "ubuntu:22.04" "ubuntu:24.04" "debian:11" "debian:12" "rockylinux:8" "rockylinux:9") DISTRO_OPTIONS=("ubuntu:20.04" "ubuntu:22.04" "ubuntu:24.04" "debian:11" "debian:12" "rockylinux:8" "rockylinux:9")
GCC_VERSION="11" GCC_VERSION="11"
MDB_CMAKE_FLAGS="" MDB_CMAKE_FLAGS=()
source "$SCRIPT_LOCATION"/utils.sh source "$SCRIPT_LOCATION"/utils.sh
@ -244,62 +244,64 @@ modify_packaging() {
construct_cmake_flags() { construct_cmake_flags() {
MDB_CMAKE_FLAGS="-DWITH_SYSTEMD=yes \ MDB_CMAKE_FLAGS=(
-DPLUGIN_COLUMNSTORE=YES \ -DWITH_SYSTEMD=yes
-DPLUGIN_MROONGA=NO \ -DPLUGIN_COLUMNSTORE=YES
-DPLUGIN_ROCKSDB=NO \ -DPLUGIN_MROONGA=NO
-DPLUGIN_TOKUDB=NO \ -DPLUGIN_ROCKSDB=NO
-DPLUGIN_CONNECT=NO \ -DPLUGIN_TOKUDB=NO
-DPLUGIN_SPIDER=NO \ -DPLUGIN_CONNECT=NO
-DPLUGIN_OQGRAPH=NO \ -DPLUGIN_SPIDER=NO
-DPLUGIN_SPHINX=NO \ -DPLUGIN_OQGRAPH=NO
-DWITH_EMBEDDED_SERVER=NO \ -DPLUGIN_SPHINX=NO
-DBUILD_CONFIG=mysql_release \ -DWITH_EMBEDDED_SERVER=NO
-DWITH_WSREP=NO \ -DBUILD_CONFIG=mysql_release
-DWITH_SSL=system \ -DWITH_WSREP=NO
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX \ -DWITH_SSL=system
-DCMAKE_EXPORT_COMPILE_COMMANDS=1 \ -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX
-DCMAKE_BUILD_TYPE=$MCS_BUILD_TYPE \ -DCMAKE_EXPORT_COMPILE_COMMANDS=1
-DPLUGIN_GSSAPI=NO" -DCMAKE_BUILD_TYPE=$MCS_BUILD_TYPE
-DPLUGIN_GSSAPI=NO
)
if [[ $SKIP_UNIT_TESTS = true ]]; then if [[ $SKIP_UNIT_TESTS = true ]]; then
warn "Unittests are not build" warn "Unittests are not build"
else else
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_UNITTESTS=YES" MDB_CMAKE_FLAGS+=(-DWITH_UNITTESTS=YES)
message "Buiding with unittests" message "Buiding with unittests"
fi fi
if [[ $DRAW_DEPS = true ]]; then if [[ $DRAW_DEPS = true ]]; then
warn "Generating dependendies graph to mariadb.dot" warn "Generating dependendies graph to mariadb.dot"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} --graphviz=mariadb.dot" MDB_CMAKE_FLAGS+=(--graphviz=mariadb.dot)
fi fi
if [[ $USE_NINJA = true ]]; then if [[ $USE_NINJA = true ]]; then
warn "Using Ninja instead of Makefiles" warn "Using Ninja instead of Makefiles"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -GNinja" MDB_CMAKE_FLAGS+=(-GNinja)
fi fi
if [[ $ASAN = true ]]; then if [[ $ASAN = true ]]; then
warn "Building with Address Sanitizer " warn "Building with Address Sanitizer "
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_ASAN=ON -DWITH_COLUMNSTORE_ASAN=ON -DWITH_COLUMNSTORE_REPORT_PATH=${REPORT_PATH}" MDB_CMAKE_FLAGS+=(-DWITH_ASAN=ON -DWITH_COLUMNSTORE_ASAN=ON -DWITH_COLUMNSTORE_REPORT_PATH=${REPORT_PATH})
fi fi
if [[ $TSAN = true ]]; then if [[ $TSAN = true ]]; then
warn "Building with Thread Sanitizer" warn "Building with Thread Sanitizer"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_TSAN=ON -DWITH_COLUMNSTORE_REPORT_PATH=${REPORT_PATH}" MDB_CMAKE_FLAGS+=(-DWITH_TSAN=ON -DWITH_COLUMNSTORE_REPORT_PATH=${REPORT_PATH})
fi fi
if [[ $UBSAN = true ]]; then if [[ $UBSAN = true ]]; then
warn "Building with UB Sanitizer" warn "Building with UB Sanitizer"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_UBSAN=ON -DWITH_COLUMNSTORE_REPORT_PATH=${REPORT_PATH}" MDB_CMAKE_FLAGS+=(-DWITH_UBSAN=ON -DWITH_COLUMNSTORE_REPORT_PATH=${REPORT_PATH})
fi fi
if [[ $WITHOUT_COREDUMPS = true ]]; then if [[ $WITHOUT_COREDUMPS = true ]]; then
warn "Cores are not dumped" warn "Cores are not dumped"
else else
warn "Building with CoreDumps" warn "Building with CoreDumps"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_COREDUMPS=ON" MDB_CMAKE_FLAGS+=(-DWITH_COREDUMPS=ON)
if [ -f /.dockerenv ]; then if [ -f /.dockerenv ]; then
warn "Build is executed in Docker, core dumps saving path /proc/sys/kernel/core_pattern will not be configured!" warn "Build is executed in Docker, core dumps saving path /proc/sys/kernel/core_pattern will not be configured!"
@ -311,35 +313,35 @@ construct_cmake_flags() {
if [[ $MAKEFILE_VERBOSE = true ]]; then if [[ $MAKEFILE_VERBOSE = true ]]; then
warn "Verbosing Makefile Commands" warn "Verbosing Makefile Commands"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" MDB_CMAKE_FLAGS+=(-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON)
fi fi
if [[ $SCCACHE = true ]]; then if [[ $SCCACHE = true ]]; then
warn "Use sccache" warn "Use sccache"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" MDB_CMAKE_FLAGS+=(-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache)
fi fi
if [[ $RUN_BENCHMARKS = true ]]; then if [[ $RUN_BENCHMARKS = true ]]; then
if [[ $MCS_BUILD_TYPE = 'Debug' ]]; then if [[ $MCS_BUILD_TYPE = 'Debug' ]]; then
error "Benchmarks will not be build in run in Debug build Mode" error "Benchmarks will not be build in run in Debug build Mode"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_MICROBENCHMARKS=NO" MDB_CMAKE_FLAGS+=(-DWITH_MICROBENCHMARKS=NO)
RUN_BENCHMARKS=false RUN_BENCHMARKS=false
elif [[ $OS != *"ubuntu"* && $OS != *"debian"* ]]; then elif [[ $OS != *"ubuntu"* && $OS != *"debian"* ]]; then
error "Benchmarks are now avaliable only at Ubuntu or Debian" error "Benchmarks are now avaliable only at Ubuntu or Debian"
MAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_MICROBENCHMARKS=NO" MAKE_FLAGS="${MDB_CMAKE_FLAGS[@]} -DWITH_MICROBENCHMARKS=NO"
RUN_BENCHMARKS=false RUN_BENCHMARKS=false
else else
message "Compile with microbenchmarks" message "Compile with microbenchmarks"
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_MICROBENCHMARKS=YES" MDB_CMAKE_FLAGS+=(-DWITH_MICROBENCHMARKS=YES)
fi fi
else else
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DWITH_MICROBENCHMARKS=NO" MDB_CMAKE_FLAGS+=(-DWITH_MICROBENCHMARKS=NO)
message "Buiding without microbenchmarks" message "Buiding without microbenchmarks"
fi fi
if [[ "$OS" == *"rocky"* ]]; then if [[ "$OS" == *"rocky"* ]]; then
OS_VERSION=${OS//[^0-9]/} OS_VERSION=${OS//[^0-9]/}
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DRPM=rockylinux${OS_VERSION}" MDB_CMAKE_FLAGS+=(-DRPM=rockylinux${OS_VERSION})
elif [[ "$OS" == "debian:11" ]]; then elif [[ "$OS" == "debian:11" ]]; then
CODENAME="bullseye" CODENAME="bullseye"
elif [[ "$OS" == "debian:12" ]]; then elif [[ "$OS" == "debian:12" ]]; then
@ -356,12 +358,12 @@ construct_cmake_flags() {
fi fi
if [[ -n "$CODENAME" ]]; then if [[ -n "$CODENAME" ]]; then
MDB_CMAKE_FLAGS="${MDB_CMAKE_FLAGS} -DDEB=${CODENAME}" MDB_CMAKE_FLAGS+=(-DDEB=${CODENAME})
fi fi
if [[ $PRINT_CMAKE_FLAGS = true ]]; then if [[ $PRINT_CMAKE_FLAGS = true ]]; then
message "Building with flags" message "Building with flags"
newline_array ${MDB_CMAKE_FLAGS[@]} newline_array "${MDB_CMAKE_FLAGS[@]}"
fi fi
} }
@ -388,10 +390,10 @@ check_errorcode() {
build_package() { build_package() {
if [[ $pkg_format == "rpm" ]]; then if [[ $pkg_format == "rpm" ]]; then
command="cmake ${MDB_CMAKE_FLAGS} && make -j\$(nproc) package" command="cmake ${MDB_CMAKE_FLAGS[@]} && make -j\$(nproc) package"
else else
command="mk-build-deps debian/control -t 'apt-get -y -o Debug::pkgProblemResolver=yes --no-install-recommends' -r -i && \ command="mk-build-deps debian/control -t 'apt-get -y -o Debug::pkgProblemResolver=yes --no-install-recommends' -r -i && \
CMAKEFLAGS='${MDB_CMAKE_FLAGS}' debian/autobake-deb.sh" CMAKEFLAGS=\"${MDB_CMAKE_FLAGS[@]}\" debian/autobake-deb.sh"
fi fi
echo "Building a package for $OS" echo "Building a package for $OS"
@ -417,7 +419,7 @@ build_binary() {
fi fi
message "Configuring cmake silently" message "Configuring cmake silently"
${CMAKE_BIN_NAME} "$MDB_CMAKE_FLAGS" -S"$MDB_SOURCE_PATH" -B"$MARIA_BUILD_PATH" | spinner ${CMAKE_BIN_NAME} "${MDB_CMAKE_FLAGS[@]}" -S"$MDB_SOURCE_PATH" -B"$MARIA_BUILD_PATH" | spinner
message_split message_split
${CMAKE_BIN_NAME} --build "$MARIA_BUILD_PATH" -j "$CPUS" | onelinearizator && ${CMAKE_BIN_NAME} --build "$MARIA_BUILD_PATH" -j "$CPUS" | onelinearizator &&