#!/bin/bash
set -ex
enable_ut=$1
mkdir 3rdparty && cd 3rdparty
git config --global http.postBuffer 524288000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
git config --global core.compression 0
git clone https://gitee.com/mirrors_ververica/frocksdb.git
cd frocksdb && git checkout FRocksDB-6.20.3
git clone https://gitee.com/gooray/snappy.git
cd snappy && git checkout tags/1.1.8 && cd ..
mv snappy snappy-1.1.8 && tar -czvf snappy-1.1.8.tar.gz snappy-1.1.8/ && rm -rf snappy-1.1.8
git clone https://gitee.com/loswdarmy/lz4.git
cd lz4 && git checkout tags/v1.9.3 && cd ..
mv lz4 lz4-1.9.3 && tar -czvf lz4-1.9.3.tar.gz lz4-1.9.3/ && rm -rf lz4-1.9.3
git clone https://gitee.com/langxm2006/zlib.git
cd zlib && git checkout tags/v1.2.13 && cd ..
mv zlib zlib-1.2.13 && tar -czvf zlib-1.2.13.tar.gz zlib-1.2.13/ && rm -rf zlib-1.2.13
git clone https://gitee.com/ak17/bzip2.git
cd bzip2 && git checkout tags/bzip2-1.0.8 && cd ..
mv bzip2 bzip2-1.0.8 && tar -czvf bzip2-1.0.8.tar.gz bzip2-1.0.8/ && rm -rf bzip2-1.0.8
git clone https://gitee.com/ak17/zstd.git
cd zstd && git checkout tags/v1.4.9 && cd ..
mv zstd zstd-1.4.9 && tar -czvf zstd-1.4.9.tar.gz zstd-1.4.9/ && rm -rf zstd-1.4.9
mkdir -p java/test-libs/ && cd java/test-libs/
wget https://repo1.maven.org/maven2/junit/junit/4.13.1/junit-4.13.1.jar
wget https://repo1.maven.org/maven2/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar
wget https://repo1.maven.org/maven2/org/mockito/mockito-all/1.10.19/mockito-all-1.10.19.jar
wget https://repo1.maven.org/maven2/cglib/cglib/3.3.0/cglib-3.3.0.jar
wget https://repo1.maven.org/maven2/org/assertj/assertj-core/2.9.0/assertj-core-2.9.0.jar
cd ../../
cp -r ../../scripts/Makefile.patch ./
patch -p1 < Makefile.patch
chmod 777 -R build_tools
make -j 8 rocksdbjavastatic
cp -r java/target/librocksdbjni-linux-aarch64.so ../
mkdir build && cd build
cmake .. -DWITH_GFLAGS=OFF -DWITH_JEMALLOC=OFF -DUSE_RTTI=OFF -DWITH_SNAPPY=ON -DWITH_ZLIB=ON -DWITH_LZ4=ON -DWITH_ZSTD=ON -DROCKSDB_BUILD_SHARED=ON -DCMAKE_BUILD_TYPE=Release && make -j8
cd ..
sudo cp -r build/librocksdb.* /usr/local/lib && cp -r build/librocksdb.so.6.20.3 ../librocksdb.so.6
sudo cp -r include/rocksdb /usr/local/include
cd ..
git clone https://gitee.com/hglcode/googletest.git
cd googletest && git checkout tags/v1.14.0
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j8
sudo make install
cd ..
cd ../../cpp && mkdir build && cd build
if [ "$enable_ut" = "true" ]; then
cmake .. -DCMAKE_BUILD_TYPE=Release -DFALCON_BUILD_TESTS=ON && make -j8
else
cmake .. -DCMAKE_BUILD_TYPE=Release -DFALCON_BUILD_TESTS=OFF && make -j8
fi
cd .. && cp -r build/libfalcon.so ../3rdparty
cd ../java && mvn clean package -DskipTests
cp -r target/flink-alg-falcon.jar ../3rdparty
cd ../3rdparty && mkdir result
mv flink-alg-falcon.jar result/ && mv librocksdbjni-linux-aarch64.so result/ && mv libfalcon.so result/
cd result && jar -xvf flink-alg-falcon.jar && rm -rf flink-alg-falcon.jar
jar -cvf flink-alg-falcon.jar .
mv flink-alg-falcon.jar ../ && cd ..
touch version.txt
echo "Product Name: Kunpeng BoostKit" >> version.txt
echo "Product Version: ${Product_Version}" >> version.txt
echo "Component Name: BoostKit-omniStateStore" >> version.txt
echo "Component Version: 1.3.0" >> version.txt
zip -r BoostKit-omniruntime-omniStateStore-1.3.0.zip flink-alg-falcon.jar librocksdb.so.6 version.txt
mv BoostKit-omniruntime-omniStateStore-1.3.0.zip ../