Skip to content

feat(stonedb): To support unspecify the location of 3rd libs(#12). (#… #55

feat(stonedb): To support unspecify the location of 3rd libs(#12). (#…

feat(stonedb): To support unspecify the location of 3rd libs(#12). (#… #55

name: Compile & MTR
on:
push:
branches-ignore:
- main
paths-ignore:
- 'docs/**'
- 'website/**'
- '**.md'
- 'scripts/setup/**'
- '.devcontainer/**'
pull_request:
paths-ignore:
- 'Docs/**'
- 'website/**'
- '**.md'
- 'scripts/**'
- 'install_scripts/**'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
PROTOC: protoc
jobs:
stonedb-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: install prerequisites
run: |
sudo apt-get update
sudo apt-get install cmake make perl bison libaio-dev \
openssl libssl-dev libncurses5-dev libreadline-dev \
autoconf automake libtool \
libreadline-dev libpam0g-dev zlib1g-dev libcurl-ocaml-dev \
autotools-dev libicu-dev libboost-all-dev \
libgflags-dev libsnappy-dev libbz2-dev liblz4-dev libzstd-dev libjemalloc-dev -y
sudo mkdir -p /stonedb56/install/tmp
sudo mkdir -p /stonedb56/install/log
sudo mkdir ./soft
- name: install marisa
run: |
sudo mkdir -p ./soft/marisa-trie
sudo mkdir -p /usr/local/stonedb-marisa
sudo git clone https://github.com/s-yata/marisa-trie.git ./soft/marisa-trie
pushd ./soft/marisa-trie
sudo autoreconf -i
sudo ./configure --enable-native-code --prefix=/usr/local/stonedb-marisa
sudo make -j`nproc`
sudo make install -j`nproc`
popd
- name: install rocksdb
run: |
sudo wget -c https://github.com/facebook/rocksdb/archive/refs/tags/v6.12.6.tar.gz -O ./soft/rocksdb-6.12.6.tar.gz
sudo tar zxvf ./soft/rocksdb-6.12.6.tar.gz -C ./soft
sudo mkdir -p /usr/local/stonedb-gcc-rocksdb
pushd ./soft/rocksdb-6.12.6
sudo cmake ./ \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local/stonedb-gcc-rocksdb \
-DCMAKE_INSTALL_LIBDIR=/usr/local/stonedb-gcc-rocksdb \
-DWITH_JEMALLOC=ON \
-DWITH_SNAPPY=ON \
-DWITH_LZ4=ON \
-DWITH_ZLIB=ON \
-DWITH_ZSTD=ON \
-DUSE_RTTI=ON \
-DROCKSDB_BUILD_SHARED=ON \
-DWITH_GFLAGS=OFF \
-DWITH_TOOLS=OFF \
-DWITH_BENCHMARK_TOOLS=OFF \
-DWITH_CORE_TOOLS=OFF
sudo make -j`nproc`
sudo make install -j`nproc`
popd
- name: install boost
run: |
sudo wget -c https://boostorg.jfrog.io/artifactory/main/release/1.66.0/source/boost_1_66_0.tar.bz2 -O ./soft/boost_1_66_0.tar.bz2
sudo tar -jxvf ./soft/boost_1_66_0.tar.bz2 -C ./soft
sudo mkdir -p /usr/local/stonedb-boost
#for boost warning: Unnecessary parenthesis warning in gcc-8.0.0 or higher.
sudo sed -i '1 i #define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER' ./soft/boost_1_66_0/boost/mpl/assert.hpp
pushd ./soft/boost_1_66_0
sudo ./bootstrap.sh --prefix=/usr/local/stonedb-boost
#in lib python, builtin_converters.cpp:51:35: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
#therefore, the simplest way to supress this error is 'DO NOT BUILD'-python libs.
sudo ./b2 install --variant=release --without-python
popd
- name: compile stonedb
run: |
sudo cmake ./ \
-DWITH_BOOST=/usr/local/stonedb-boost \
-DWITH_ROCKSDB=/usr/local/stonedb-gcc-rocksdb \
-DWITH_MARISA=/usr/local/stonedb-marisa \
-DCMAKE_BUILD_TYPE=release \
-DCMAKE_INSTALL_PREFIX=/stonedb56/install \
-DMYSQL_DATADIR=/stonedb56/install/data \
-DSYSCONFDIR=/stonedb56/install \
-DMYSQL_UNIX_ADDR=/stonedb56/install/tmp/mysql.sock \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_STONEDB_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
sudo make VERBOSE=1 -j`nproc`
sudo make install -j`nproc`
- name: mtr test
run: |
sudo mkdir -p /stonedb56/install/data/innodb
sudo mkdir -p /stonedb56/install/binlog
sudo mkdir -p /stonedb56/install/log
sudo mkdir -p /stonedb56/install/tmp
sudo chown -R mysql:mysql /stonedb56
cd /stonedb56/install/mysql-test
sudo ./mysql-test-run.pl --suite=stonedb --nowarnings --force