Skip to content

Commit 594967f

Browse files
committed
make it works on debian 10, as mysql
offical docker image use debian 10
1 parent 057d0d3 commit 594967f

10 files changed

+63
-23
lines changed

build-normal/compile.sh

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ optflags="$optflags $CPU_OPT_FLAGS"
1515
[[ -f /opt/rh/rh-mysql80/root/usr/include/mecab.h ]] && MECAB_INC=/opt/rh/rh-mysql80/root/usr
1616
[[ -f /usr/include/mecab.h ]] && MECAB_INC=/usr
1717

18+
CMAKE=cmake
19+
[[ -f /usr/bin/ccmake3 ]] && CMAKE=cmake3
20+
1821
cd $MYSQL_BUILD_PATH
1922

2023
rm -f /tmp/${MYSQL_VER}_build
@@ -26,37 +29,41 @@ verlte() {
2629
date > /tmp/${MYSQL_VER}_build
2730
case $MYSQL_VER in
2831
5.7)
29-
cmake . -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFEATURE_SET=community \
32+
$CMAKE . -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFEATURE_SET=community \
3033
-DCMAKE_C_FLAGS="${optflags}" -DCMAKE_CXX_FLAGS="${optflags}" \
3134
-DWITH_NUMA=ON -DWITH_SYSTEMD=1 -DWITH_EMBEDDED_SERVER=OFF -DWITH_ZLIB=system \
3235
-DWITH_INNODB_MEMCACHED=1 -DWITH_SCALABILITY_METRICS=ON -DDOWNLOAD_BOOST=0 -DWITH_BOOST=../boost_1_59_0 \
3336
-DWITH_SSL=system -DWITH_MECAB=$MECAB_INC -DENABLE_DOWNLOADS=1 -DWITH_PAM=ON ${ASAN} \
3437
-DWITH_TOKUDB=1 -DWITH_ROCKSDB=1 2>&1 | tee -a /tmp/${MYSQL_VER}_build
3538
;;
3639
5.6)
37-
cmake . -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_DTRACE=OFF -DWITH_EMBEDDED_SERVER=OFF \
40+
$CMAKE . -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_DTRACE=OFF -DWITH_EMBEDDED_SERVER=OFF \
3841
-DCMAKE_C_FLAGS="${optflags}" -DCMAKE_CXX_FLAGS="${optflags}" -DWITH_SSL=system -DENABLE_DOWNLOADS=1 \
3942
-DWITH_INNODB_MEMCACHED=ON -DWITH_SSL=system -DWITH_PAM=ON -DFEATURE_SET=community \
4043
-DWITH_ROCKSDB=0 -DWITH_SCALABILITY_METRICS=ON 2>&1 | tee -a /tmp/${MYSQL_VER}_build
4144
;;
4245
8.0)
46+
## 8.0's flto require much memory, so MJ = total_memory_inGB / 4
47+
MEM_K=$(free|grep Mem|awk '{print$2}')
48+
MEM_G=$(echo "($MEM_K+768*1024)/1024/1024"|bc)
49+
MJ=$(echo "$MEM_G/4"|bc)
50+
LTOMJ=$(echo "$MJ/2"|bc)
51+
4352
[[ -z $ORIGIN_MYSQL ]] && OTHER_ENG="" || OTHER_ENG="-DWITH_ROCKSDB=1 -DWITH_TOKUDB=1"
44-
cmake3 . -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFEATURE_SET=community \
53+
54+
$CMAKE . -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFEATURE_SET=community \
4555
-DWITH_NUMA=ON -DWITH_SYSTEMD=1 -DWITH_READLINE=system -DWITH_SSL=system \
46-
-DCMAKE_C_FLAGS="${optflags}" -DCMAKE_CXX_FLAGS="${optflags}" \
56+
-DCMAKE_CXX_LINK_FLAGS="-flto=${LTOMJ}" -DCMAKE_SHARED_LINKER_FLAGS="-flto=${LTOMJ}" \
57+
-DCMAKE_C_FLAGS="${optflags} -flto=${LTOMJ}" -DCMAKE_CXX_FLAGS="${optflags} -flto=${LTOMJ}" \
4758
-DMYSQL_MAINTAINER_MODE=OFF -DFORCE_INSOURCE_BUILD=1 -DWITH_LZ4=bundled -DWITH_ZLIB=bundled \
4859
-DWITH_PROTOBUF=bundled -DWITH_RAPIDJSON=bundled -DWITH_ICU=bundled -DWITH_LIBEVENT=bundled \
4960
-DWITH_INNODB_MEMCACHED=1 -DWITH_BOOST=../boost_cur -DDOWNLOAD_BOOST=ON -DWITH_SYSTEM_LIBS=ON \
5061
-DWITH_MECAB=$MECAB_INC -DENABLE_DOWNLOADS=1 -DWITH_PAM=1 -DWITH_ZSTD=bundled ${ASAN} \
5162
${OTHER_ENG} ${PGO_OPT} \
52-
-DWITH_KEYRING_VAULT=1 -DWITH_LTO=1 2>&1 | tee -a /tmp/${MYSQL_VER}_build
63+
-DWITH_KEYRING_VAULT=1 2>&1 | tee -a /tmp/${MYSQL_VER}_build
5364
## still some bug when direct make install, systemd require write to /usr/local/mysql,
5465
## which ignore INSTALL_PREFIX, need run command below to workaroud
55-
cmake3 build -DCMAKE_INSTALL_PREFIX=$MYSQL_BASE .
56-
## 8.0's flto require much memory, so MJ = total_memory_inGB / 4
57-
MEM_K=$(free|grep Mem|awk '{print$2}')
58-
MEM_G=$(echo "($MEM_K+768*1024)/1024/1024"|bc)
59-
MJ=$(echo "$MEM_G/4"|bc)
66+
$CMAKE build -DCMAKE_INSTALL_PREFIX=$MYSQL_BASE .
6067
;;
6168
*)
6269
echo "unsupport percona server version! don't know how to cmake"

build-normal/init_conf.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ logfile_size=$(echo "$pool_max/8"|bc)
1919
pool_chunk_size=$(($logfile_size>1024?128:$logfile_size/8))
2020
logfile_size=$(($logfile_size<2048?$logfile_size:2048))
2121

22+
JEMALLOC="/usr/lib64/libjemalloc.so.1"
23+
[[ -f /usr/lib/x86_64-linux-gnu/libjemalloc.so ]] && JEMALLOC=/usr/lib/x86_64-linux-gnu/libjemalloc.so
24+
2225
cat <<EOF
2326
[mysqld_safe]
24-
malloc-lib=/usr/lib64/libjemalloc.so.1
27+
malloc-lib=$JEMALLOC
2528
datadir=$datadir
2629
socket=${datadir}/mysql.sock
2730

build-normal/start_normal.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ sudo sync
1010
#sudo sysctl -q -w vm.drop_caches=3
1111
#sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
1212

13-
## lg_dirty_mult:-1 is deal with bug of jemalloc 3.3
14-
export LD_PRELOAD='/usr/lib64/libjemalloc.so.1' MALLOC_CONF='lg_dirty_mult:-1'
13+
JEMALLOC="/usr/lib64/libjemalloc.so.1"
14+
## lg_dirty_mult:-1 is deal with bug of jemalloc 3.3, showld disable for jemalloc 3.9
15+
JEMALLOC_CONF='lg_dirty_mult:-1'
16+
[[ -f /usr/lib/x86_64-linux-gnu/libjemalloc.so ]] && JEMALLOC=/usr/lib/x86_64-linux-gnu/libjemalloc.so && JEMALLOC_CONF=""
17+
export LD_PRELOAD=$JEMALLOC MALLOC_CONF=$JEMALLOC_CONF
1518

1619
sh -c "numactl --interleave=all $MYSQLD_WITHOPT" &
1720
# [[ ! -f $MYSQL_LOG ]] && sleep 1

build-opt/build_pgo.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ bash $SELF_PATH/patch_version.sh $MYSQL_BUILD_PATH
1616

1717
[[ "$MYSQL_VER" == "8.0" ]] || export optflags=" $CPU_OPT_FLAGS --profile-generate "
1818
## 8.0 has cmake options to enable pgo
19-
[[ "$MYSQL_VER" == "8.0" ]] && export optflags=" $CPU_OPT_FLAGS" PGO_OPT=" -DFPROFILE_GENERATE=ON"
19+
[[ "$MYSQL_VER" == "8.0" ]] && export optflags=" $CPU_OPT_FLAGS " PGO_OPT=" -DFPROFILE_GENERATE=ON"
2020
bash $SELF_PATH/../build-normal/compile.sh $MYSQL_BASE ${MYSQL_BUILD_PATH} $MYSQL_VER
2121
if [ $? -ne 0 ]; then echo "compile failed! Assert: non-0 exit status detected!"; exit 1; fi
2222
( head -1 /tmp/${MYSQL_VER}_build && tail -1 /tmp/${MYSQL_VER}_build ) > /tmp/${MYSQL_VER}_profile-gen_compile_time.txt

build-opt/make_package.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ rm -rf lib/*.a lib/mysql/plugin/*test* lib/mysql/plugin/qa_auth_* lib/mysql/plug
2626
grep -rinl profile-gen . | xargs -n 64 perl -pi -e "s///g"
2727
grep -rinl profile-use . | xargs -n 64 perl -pi -e "s///g"
2828
cd ..
29-
tar cf - $PKGNAME | pxz -4 > $CUR_PATH/mini_$PKGNAME-${PGOED}.tar.xz
29+
tar cf - $PKGNAME | xz -T0 -4 > $CUR_PATH/mini_$PKGNAME-${PGOED}.tar.xz
3030
## zstd is good, we'll use it once default tar on centos 7 can automatic decompress it
3131
#tar cf - $PKGNAME | zstd -T0 -6 > $CUR_PATH/mini_$PKGNAME.tar.zst

prepare/.install-misc.sh.swp

12 KB
Binary file not shown.

prepare/install-devtoolset.sh

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
#!/bin/bash
22

3-
yum install -y centos-release-scl && \
4-
yum install -y devtoolset-9-gcc-c++ automake libtool openssl-devel && \
5-
echo "source /opt/rh/devtoolset-9/enable " > /etc/profile.d/devtoolset-9.sh
3+
yum_install() {
4+
yum install -y centos-release-scl && \
5+
yum install -y devtoolset-9-gcc-c++ automake libtool openssl-devel && \
6+
echo "source /opt/rh/devtoolset-9/enable " > /etc/profile.d/devtoolset-9.sh
7+
yum install -y git rsync
8+
}
9+
10+
apt_install() {
11+
apt install build-essential git rsync -y
12+
}
13+
14+
[[ -f /usr/bin/apt ]] && apt_install
15+
[[ -f /usr/bin/yum ]] && yum_install

prepare/install-misc.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/bin/bash
22

3+
yum_install() {
34
GNUPGHOME=~/gnupg && mkdir -p ~/gnupg && chmod 600 ~/gnupg \
45
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 352c64e5 \
56
&& gpg --export --armor 352c64e5 > ${GNUPGHOME}/RPM-GPG-KEY-EPEL \
@@ -15,3 +16,14 @@ GNUPGHOME=~/gnupg && mkdir -p ~/gnupg && chmod 600 ~/gnupg \
1516
--slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \
1617
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \
1718
--family cmake
19+
}
20+
21+
apt_install() {
22+
apt install libjemalloc-dev bzip2 cmake libmecab-dev libnuma-dev libaio-dev libncurses-dev \
23+
libreadline-dev libcurl4-openssl-dev libpam0g-dev libbison-dev bison tmux bc patch \
24+
libssl-dev libre2-dev libtirpc-dev libedit-dev zip zstd libdata-dmp-perl pkg-config \
25+
numactl automake autoconf libtool -y
26+
}
27+
28+
[[ -f /usr/bin/apt ]] && apt_install
29+
[[ -f /usr/bin/yum ]] && yum_install

sysbench/compile-sysbench.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,20 @@ if [ "$SYSBENCH_BASE" == "" ]; then
99
SYSBENCH_SRC=sysbench_1.0
1010
git clone --depth 1 https://github.com/akopytov/sysbench -b 1.0 $SYSBENCH_SRC
1111

12-
export LDFLAGS="-L$MYSQL_BASE/lib"
12+
export LDFLAGS="-L$MYSQL_BASE/lib -lstdc++"
1313
cd $SYSBENCH_SRC && git pull \
1414
&& ./autogen.sh \
1515
&& ./configure --with-mysql=$MYSQL_BASE \
1616
&& make clean \
17-
&& perl -pi.bak -e "s/-lperconaserverclient/-lperconaserverclient -lstdc++/" Makefile src/Makefile \
18-
&& perl -pi.bak -e "s/-l-pthread/-lpthread/g" Makefile src/Makefile \
19-
&& mv $MYSQL_BASE/lib/libperconaserverclient.so $MYSQL_BASE/lib/libperconaserverclient.soso \
2017
&& make -j ${nproc} \
21-
&& mv $MYSQL_BASE/lib/libperconaserverclient.soso $MYSQL_BASE/lib/libperconaserverclient.so \
2218
&& make install -j ${nproc} prefix=$MYSQL_BASE/sysbench
19+
## tmp config for build static sysbench
20+
# && perl -pi.bak -e "s/-lperconaserverclient/-lperconaserverclient -lstdc++/" Makefile src/Makefile \
21+
# && perl -pi.bak -e "s/-l-pthread/-lpthread/g" Makefile src/Makefile \
22+
# && mv -f $MYSQL_BASE/lib/libmysqlclient.so $MYSQL_BASE/lib/libmysqlclient.soso \
23+
# && mv -f $MYSQL_BASE/lib/libmysqlclient.soso $MYSQL_BASE/lib/libmysqlclient.so \
24+
# && mv -f $MYSQL_BASE/lib/libperconaserverclient.soso $MYSQL_BASE/lib/libperconaserverclient.so \
25+
# && mv -f $MYSQL_BASE/lib/libperconaserverclient.so $MYSQL_BASE/lib/libperconaserverclient.soso \
2326
else
2427
if [ -d $SYSBENCH_BASE ]; then
2528
sleep 15

sysbench/init-sysbench.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,7 @@ cd $SYSBENCH_LUA_DIR
2525

2626
echo $SYSBENCH_BIN oltp_insert.lua $SYSBENCH_OPT --threads=1 prepare
2727
$SYSBENCH_BIN oltp_insert.lua $SYSBENCH_OPT --threads=1 prepare
28+
## warm up 40 secs after init
29+
$SYSBENCH_BIN oltp_point_select.lua $SYSBENCH_OPT --time=40 run
2830

2931
cd $CUR_PATH

0 commit comments

Comments
 (0)