@@ -19,6 +19,9 @@ CONFIG_DIR=$RPM_CONFIG_DIR
1919
2020SCRIPT_LOCATION=$( dirname " $0 " )
2121MDB_SOURCE_PATH=$( realpath " $SCRIPT_LOCATION " /../../../..)
22+ COLUMSNTORE_SOURCE_PATH=$( realpath " $SCRIPT_LOCATION " /../)
23+
24+ DEFAULT_MARIA_BUILD_PATH=$( realpath " $MDB_SOURCE_PATH " /../BuildOf_$( basename " $MDB_SOURCE_PATH " ) )
2225
2326BUILD_TYPE_OPTIONS=(" Debug" " RelWithDebInfo" )
2427DISTRO_OPTIONS=(" ubuntu:20.04" " ubuntu:22.04" " ubuntu:24.04" " debian:11" " debian:12" " rockylinux:8" " rockylinux:9" )
@@ -28,21 +31,10 @@ MDB_CMAKE_FLAGS=()
2831
2932source " $SCRIPT_LOCATION " /utils.sh
3033
31- if [ " $EUID " -ne 0 ]; then
32- error " Please run script as root to install MariaDb to system paths"
33- exit 1
34- fi
35-
36- cd $SCRIPT_LOCATION
37- CURRENT_BRANCH=$( git rev-parse --abbrev-ref HEAD)
38- message " Columnstore will be built from $color_yellow$CURRENT_BRANCH$color_cyan branch"
39- cd - > /dev/null
40-
4134echo " Arguments received: $@ "
42- message " Building Mariadb Server from $color_yellow$MDB_SOURCE_PATH$color_normal "
4335
4436optparse.define short=A long=asan desc=" Build with ASAN" variable=ASAN default=false value=true
45- optparse.define short=a long=build-path variable=MARIA_BUILD_PATH default=$( realpath " $MDB_SOURCE_PATH " /../BuildOf_ $( basename " $MDB_SOURCE_PATH " ) )
37+ optparse.define short=a long=build-path desc= " Path for build output " variable=MARIA_BUILD_PATH default=$DEFAULT_MARIA_BUILD_PATH
4638optparse.define short=B long=run-microbench desc=" Compile and run microbenchmarks " variable=RUN_BENCHMARKS default=false value=true
4739optparse.define short=c long=cloud desc=" Enable cloud storage" variable=CLOUD_STORAGE_ENABLED default=false value=true
4840optparse.define short=C long=force-cmake-reconfig desc=" Force cmake reconfigure" variable=FORCE_CMAKE_CONFIG default=false value=true
@@ -68,10 +60,13 @@ optparse.define short=T long=tsan desc="Build with TSAN" variable=TSAN default=f
6860optparse.define short=u long=skip-unit-tests desc=" Skip UnitTests" variable=SKIP_UNIT_TESTS default=false value=true
6961optparse.define short=U long=ubsan desc=" Build with UBSAN" variable=UBSAN default=false value=true
7062optparse.define short=v long=verbose desc=" Verbose makefile commands" variable=MAKEFILE_VERBOSE default=false value=true
63+ optparse.define short=V long=add-branch-name-to-outdir desc=" Add branch name to build output directory" variable=BRANCH_NAME_TO_OUTDIR default=false value=true
7164optparse.define short=W long=without-core-dumps desc=" Do not produce core dumps" variable=WITHOUT_COREDUMPS default=false value=true
7265
7366source $( optparse.build)
7467
68+ message " Building MariaDB Server from $color_yellow$MDB_SOURCE_PATH$color_normal "
69+
7570if [[ ! " ${BUILD_TYPE_OPTIONS[*]} " =~ " ${MCS_BUILD_TYPE} " ]]; then
7671 getChoice -q " Select your Build Type" -o BUILD_TYPE_OPTIONS
7772 MCS_BUILD_TYPE=$selectedChoice
@@ -87,24 +82,19 @@ if [[ "$OS" == *"rocky"* ]]; then
8782 pkg_format=" rpm"
8883fi
8984
90- disable_git_restore_frozen_revision () {
91- cd $MDB_SOURCE_PATH
92- git config submodule.storage/columnstore/columnstore.update none
93- cd - > /dev/null
94- }
95-
96- DEP_GRAPH_PATH=" $MARIA_BUILD_PATH /dependency_graph/mariadb.dot"
97-
9885install_deps () {
86+ if [[ $INSTALL_DEPS = false ]]; then
87+ return
88+ fi
9989 message_split
100-
90+ prereq= " "
10191 RPM_BUILD_DEPS=" dnf install -y lz4 lz4-devel systemd-devel git make libaio-devel openssl-devel boost-devel bison \
10292 snappy-devel flex libcurl-devel libxml2-devel ncurses-devel automake libtool policycoreutils-devel \
10393 rpm-build lsof iproute pam-devel perl-DBI cracklib-devel expect createrepo python3 checkpolicy \
10494 cppunit-devel cmake3 libxcrypt-devel xz-devel zlib-devel libzstd-devel glibc-devel"
10595
10696 DEB_BUILD_DEPS=" apt-get -y update && apt-get -y install build-essential automake libboost-all-dev \
107- bison cmake libncurses5-dev libaio-dev libsystemd-dev libpcre2-dev libperl-dev libssl-dev libxml2-dev \
97+ bison cmake libncurses5-dev python3 libaio-dev libsystemd-dev libpcre2-dev libperl-dev libssl-dev libxml2-dev \
10898 libkrb5-dev flex libpam-dev git libsnappy-dev libcurl4-openssl-dev libgtest-dev libcppunit-dev googletest \
10999 libjemalloc-dev liblz-dev liblzo2-dev liblzma-dev liblz4-dev libbz2-dev libbenchmark-dev libdistro-info-perl \
110100 graphviz devscripts ccache equivs eatmydata curl"
@@ -113,22 +103,54 @@ install_deps() {
113103 command=" dnf install -y curl 'dnf-command(config-manager)' && dnf config-manager --set-enabled powertools && \
114104 dnf install -y gcc-toolset-${GCC_VERSION} libarchive cmake && . /opt/rh/gcc-toolset-${GCC_VERSION} /enable && \
115105 ${RPM_BUILD_DEPS} "
116-
117- elif [[ " $OS " == " rockylinux:9" * || " $OS " == " rocky:9" * ]]; then
106+ elif
107+ [[ " $OS " == " rockylinux:9" * || " $OS " == " rocky:9" * ]]
108+ then
118109 command=" dnf install -y 'dnf-command(config-manager)' && dnf config-manager --set-enabled crb && \
119110 dnf install -y pcre2-devel gcc gcc-c++ curl-minimal && ${RPM_BUILD_DEPS} "
120111
121112 elif [[ " $OS " == " debian:11" * ]] || [[ " $OS " == " debian:12" * ]] || [[ " $OS " == " ubuntu:20.04" * ]] || [[ " $OS " == " ubuntu:22.04" * ]] || [[ " $OS " == " ubuntu:24.04" * ]]; then
122113 command=" ${DEB_BUILD_DEPS} "
123-
124114 else
125115 echo " Unsupported OS: $OS "
126116 exit 17
127117 fi
128118
119+ if [[ $OS == ' ubuntu:22.04' || $OS == ' ubuntu:24.04' ]]; then
120+ if [ -f /.dockerenv ]; then
121+ change_ubuntu_mirror us
122+ fi
123+ command=" ${command} lto-disabled-list"
124+ fi
125+
126+ eval " $prereq "
129127 message " Installing dependencies for $OS "
130- eval " $command "
128+ retry_eval 5 " $command "
131129}
130+
131+ install_deps
132+
133+ cd $COLUMSNTORE_SOURCE_PATH
134+ COLUMNSTORE_BRANCH=$( git rev-parse --abbrev-ref HEAD)
135+ message " Columnstore will be built from $color_yellow$COLUMNSTORE_BRANCH$color_cyan branch"
136+
137+ cd $MDB_SOURCE_PATH
138+ MARIADB_BRANCH=$( git rev-parse --abbrev-ref HEAD)
139+ message " MariaDB will be built from $color_yellow$MARIADB_BRANCH$color_cyan branch"
140+ cd - > /dev/null
141+
142+ if [[ ${BRANCH_NAME_TO_OUTDIR} = true ]]; then
143+ MARIA_BUILD_PATH=" ${MARIA_BUILD_PATH} _${MARIADB_BRANCH} _${COLUMNSTORE_BRANCH} "
144+ fi
145+
146+ disable_git_restore_frozen_revision () {
147+ cd $MDB_SOURCE_PATH
148+ git config submodule.storage/columnstore/columnstore.update none
149+ cd - > /dev/null
150+ }
151+
152+ DEP_GRAPH_PATH=" $MARIA_BUILD_PATH /dependency_graph/mariadb.dot"
153+
132154stop_service () {
133155 message_split
134156 message " Stopping MariaDB services"
@@ -198,10 +220,9 @@ modify_packaging() {
198220
199221 # disable LTO for 22.04 for now
200222 if [[ $OS == ' ubuntu:22.04' || $OS == ' ubuntu:24.04' ]]; then
201- apt install -y lto-disabled-list &&
202- for i in mariadb-plugin-columnstore mariadb-server mariadb-server-core mariadb mariadb-10.6; do
203- echo " $i any" >> /usr/share/lto-disabled-list/lto-disabled-list
204- done &&
223+ for i in mariadb-plugin-columnstore mariadb-server mariadb-server-core mariadb mariadb-10.6; do
224+ echo " $i any" >> /usr/share/lto-disabled-list/lto-disabled-list
225+ done &&
205226 grep mariadb /usr/share/lto-disabled-list/lto-disabled-list
206227 fi
207228
@@ -259,8 +280,9 @@ construct_cmake_flags() {
259280 -DWITH_WSREP=NO
260281 )
261282
262- if [[ MAINTAINER_MODE = true ]]; then
283+ if [[ $ MAINTAINER_MODE = true ]]; then
263284 MDB_CMAKE_FLAGS+=(-DCOLUMNSTORE_MAINTAINER=YES)
285+ message " Columnstore maintainer mode on"
264286 else
265287 warn " Maintainer mode is disabled, be careful, alien"
266288 fi
@@ -368,6 +390,11 @@ construct_cmake_flags() {
368390 MDB_CMAKE_FLAGS+=(-DDEB=${CODENAME} )
369391 fi
370392
393+ if [[ " $NO_CLEAN " == true ]]; then
394+ message " Skipping Columnstore.etc config installation"
395+ MDB_CMAKE_FLAGS+=(-DSKIP_CONFIG_INSTALLATION=ON)
396+ fi
397+
371398 MDB_CMAKE_FLAGS+=($CUSTOM_CMAKE_FLAGS )
372399
373400 message " Building with flags"
@@ -406,9 +433,15 @@ generate_svgs() {
406433}
407434
408435build_package () {
436+ cd $MDB_SOURCE_PATH
437+
409438 if [[ $pkg_format == " rpm" ]]; then
410439 command=" cmake ${MDB_CMAKE_FLAGS[@]} && make -j\$ (nproc) package"
411440 else
441+ export DEBIAN_FRONTEND=" noninteractive"
442+ export DEB_BUILD_OPTIONS=" parallel=$( nproc) "
443+ export DH_BUILD_DDEBS=" 1"
444+ export BUILDPACKAGE_FLAGS=" -b"
412445 command=" mk-build-deps debian/control -t 'apt-get -y -o Debug::pkgProblemResolver=yes --no-install-recommends' -r -i && \
413446 CMAKEFLAGS=\" ${MDB_CMAKE_FLAGS[@]} \" debian/autobake-deb.sh"
414447 fi
@@ -420,6 +453,14 @@ build_package() {
420453 check_errorcode
421454}
422455
456+ check_debian_install_file () {
457+ message " checking debian/mariadb-plugin-columnstore.install"
458+ message_split
459+ python3 $COLUMSNTORE_SOURCE_PATH /build/debian_install_file_compare.py \
460+ ${COLUMSNTORE_SOURCE_PATH} /debian/mariadb-plugin-columnstore.install \
461+ $MARIA_BUILD_PATH /mariadb-plugin-columnstore.install.generated
462+ }
463+
423464build_binary () {
424465 MARIA_BUILD_PATH=$( realpath " $MARIA_BUILD_PATH " )
425466 message_split
@@ -438,7 +479,7 @@ build_binary() {
438479 message " Configuring cmake silently"
439480 ${CMAKE_BIN_NAME} " ${MDB_CMAKE_FLAGS[@]} " -S" $MDB_SOURCE_PATH " -B" $MARIA_BUILD_PATH " | spinner
440481 message_split
441-
482+ check_debian_install_file
442483 generate_svgs
443484
444485 ${CMAKE_BIN_NAME} --build " $MARIA_BUILD_PATH " -j " $CPUS " | onelinearizator &&
@@ -553,6 +594,12 @@ make_dir() {
553594
554595install () {
555596 if [[ $RECOMPILE_ONLY = false ]]; then
597+
598+ if [ " $EUID " -ne 0 ]; then
599+ error " Please run script as root to install MariaDb to system paths"
600+ exit 1
601+ fi
602+
556603 message_split
557604 message " Installing MariaDB"
558605 disable_plugins_for_bootstrap
@@ -577,8 +624,10 @@ install() {
577624
578625 make_dir /etc/columnstore
579626
580- cp " $MDB_SOURCE_PATH " /storage/columnstore/columnstore/oam/etc/Columnstore.xml /etc/columnstore/Columnstore.xml
581- cp " $MDB_SOURCE_PATH " /storage/columnstore/columnstore/storage-manager/storagemanager.cnf /etc/columnstore/storagemanager.cnf
627+ if [[ " $NO_CLEAN " == false ]]; then
628+ cp " $MDB_SOURCE_PATH " /storage/columnstore/columnstore/oam/etc/Columnstore.xml /etc/columnstore/Columnstore.xml
629+ cp " $MDB_SOURCE_PATH " /storage/columnstore/columnstore/storage-manager/storagemanager.cnf /etc/columnstore/storagemanager.cnf
630+ fi
582631
583632 cp " $MDB_SOURCE_PATH " /storage/columnstore/columnstore/oam/install_scripts/* .service /lib/systemd/system/
584633
@@ -636,10 +685,6 @@ smoke() {
636685 fi
637686}
638687
639- if [[ $INSTALL_DEPS = true || $BUILD_PACKAGES = true ]]; then
640- install_deps
641- fi
642-
643688if [[ $DO_NOT_FREEZE_REVISION = false ]]; then
644689 disable_git_restore_frozen_revision
645690fi
0 commit comments