forked from stoneatom/stonedb
-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (121 loc) · 4.75 KB
/
integration-compile-mtr.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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