Files
hpcore/dev-setup.sh
2021-02-05 15:36:11 +05:30

125 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# Usage ./dev-setup.sh
# Hot Pocket build environment setup script.
set -e # exit on error
sudo apt-get update
sudo apt-get install -y build-essential libssl-dev
workdir=~/hpcore-setup
mkdir $workdir
pushd $workdir > /dev/null 2>&1
# CMAKE
cmake=cmake-3.16.0-rc3-Linux-x86_64
wget https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/$cmake.tar.gz
tar -zxvf $cmake.tar.gz
sudo cp -r $cmake/bin/* /usr/local/bin/
sudo cp -r $cmake/share/* /usr/local/share/
rm $cmake.tar.gz && rm -r $cmake
# Libsodium
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz
tar -zxvf libsodium-1.0.18-stable.tar.gz
pushd libsodium-stable > /dev/null 2>&1
./configure && make
sudo make install
popd > /dev/null 2>&1
rm libsodium-1.0.18-stable.tar.gz && rm -r libsodium-stable
# Blake3
git clone https://github.com/BLAKE3-team/BLAKE3.git
pushd BLAKE3/c > /dev/null 2>&1
gcc -shared -fPIC -O3 -o libblake3.so blake3.c blake3_dispatch.c blake3_portable.c \
blake3_sse2_x86-64_unix.S blake3_sse41_x86-64_unix.S blake3_avx2_x86-64_unix.S \
blake3_avx512_x86-64_unix.S
sudo cp blake3.h /usr/local/include/
sudo cp libblake3.so /usr/local/lib/
popd > /dev/null 2>&1
sudo rm -r BLAKE3
# jsoncons
wget https://github.com/danielaparker/jsoncons/archive/v0.153.3.tar.gz
tar -zxvf v0.153.3.tar.gz
pushd jsoncons-0.153.3 > /dev/null 2>&1
sudo cp -r include/jsoncons /usr/local/include/
sudo mkdir -p /usr/local/include/jsoncons_ext/
sudo cp -r include/jsoncons_ext/bson /usr/local/include/jsoncons_ext/
popd > /dev/null 2>&1
rm v0.153.3.tar.gz && rm -r jsoncons-0.153.3
# Flatbuffers
wget https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz
tar -zxvf v1.12.0.tar.gz
pushd flatbuffers-1.12.0 > /dev/null 2>&1
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
make
sudo cp -r include/flatbuffers /usr/local/include/
# Copy the flatbuffers compiler
sudo cp flatc /usr/local/bin/flatc
sudo chmod +x /usr/local/bin/flatc
popd > /dev/null 2>&1
rm v1.12.0.tar.gz && rm -r flatbuffers-1.12.0
# libfuse
sudo apt-get install -y meson ninja-build pkg-config
wget https://github.com/libfuse/libfuse/archive/fuse-3.8.0.tar.gz
tar -zxvf fuse-3.8.0.tar.gz
pushd libfuse-fuse-3.8.0 > /dev/null 2>&1
mkdir build
pushd build > /dev/null 2>&1
meson .. && ninja
sudo ninja install
popd > /dev/null 2>&1
popd > /dev/null 2>&1
rm fuse-3.8.0.tar.gz && rm -r libfuse-fuse-3.8.0
# Reader-Writer queue
wget https://github.com/cameron314/readerwriterqueue/archive/v1.0.3.tar.gz
tar -zxvf v1.0.3.tar.gz
pushd readerwriterqueue-1.0.3 > /dev/null 2>&1
mkdir build
pushd build > /dev/null 2>&1
cmake ..
sudo make install
popd > /dev/null 2>&1
popd > /dev/null 2>&1
rm v1.0.3.tar.gz && rm -r readerwriterqueue-1.0.3
# Concurrent queue
wget https://github.com/cameron314/concurrentqueue/archive/1.0.2.tar.gz
tar -zxvf 1.0.2.tar.gz
pushd concurrentqueue-1.0.2 > /dev/null 2>&1
sudo cp concurrentqueue.h /usr/local/include/
popd > /dev/null 2>&1
rm 1.0.2.tar.gz && rm -r concurrentqueue-1.0.2
# Plog
wget https://github.com/SergiusTheBest/plog/archive/1.1.5.tar.gz
tar -zxvf 1.1.5.tar.gz
pushd plog-1.1.5 > /dev/null 2>&1
sudo cp -r include/plog /usr/local/include/
popd > /dev/null 2>&1
rm 1.1.5.tar.gz && rm -r plog-1.1.5
# Boost stacktrace
sudo apt-get install -y libboost-stacktrace-dev
# Sqlite
sudo apt-get install -y sqlite3 libsqlite3-dev
# jq command (needed for remote cluster scripts)
sudo apt-get install -y jq
# Update linker library cache.
sudo ldconfig
# Pop workdir
popd > /dev/null 2>&1
rm -r $workdir
# Build Hot Pocket
cmake .
make