Skip to content

Commit

Permalink
Simplify configure script to remove deps cache
Browse files Browse the repository at this point in the history
Signed-off-by: James Lovejoy <[email protected]>
  • Loading branch information
metalicjames committed Aug 19, 2022
1 parent 3c31531 commit 602d1fd
Showing 1 changed file with 39 additions and 49 deletions.
88 changes: 39 additions & 49 deletions scripts/configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ elif [[ "$OSTYPE" == "darwin"* ]]; then
CPUS=$(sysctl -n hw.ncpu)
# ensure development environment is set correctly for clang
$SUDO xcode-select -switch /Library/Developer/CommandLineTools
brew install leveldb llvm@14 googletest lcov make wget cmake
brew install llvm@14 googletest lcov make wget cmake
CLANG_TIDY=/usr/local/bin/clang-tidy
if [ ! -L "$CLANG_TIDY" ]; then
$SUDO ln -s $(brew --prefix)/opt/llvm@14/bin/clang-tidy /usr/local/bin/clang-tidy
Expand All @@ -41,63 +41,53 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then
apt update
apt install -y build-essential wget cmake libgtest-dev lcov git software-properties-common rsync

# GitHub Actions in .github/workflows/validation.yml will attempt to cache and reuse leveldb built in this block.
# If a folder called leveldb-1.22 exists, skip the build step and go straight to install.
# See https://docs.github.com/en/free-pro-team@latest/actions/guides/caching-dependencies-to-speed-up-workflows
if [ ! -d "leveldb-1.22-${CMAKE_BUILD_TYPE}" ]; then
echo -e "${green}Building LevelDB from sources...${end}"
wget https://github.com/google/leveldb/archive/1.22.tar.gz
tar xzvf 1.22.tar.gz
rm -rf 1.22.tar.gz
mv leveldb-1.22 "leveldb-1.22-${CMAKE_BUILD_TYPE}"
cd "leveldb-1.22-${CMAKE_BUILD_TYPE}"
eval "cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DLEVELDB_BUILD_TESTS=0 -DLEVELDB_BUILD_BENCHMARKS=0 -DBUILD_SHARED_LIBS=0 ."
make -j$CPUS
else
echo -e "${green}Installing LevelDB from cache...${end}"
cd "leveldb-1.22-${CMAKE_BUILD_TYPE}"
fi
make install
cd ..

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main"
apt install -y clang-format-14 clang-tidy-14
ln -s -f $(which clang-format-14) /usr/local/bin/clang-format
ln -s -f $(which clang-tidy-14) /usr/local/bin/clang-tidy
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | $SUDO apt-key add -
$SUDO add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main"
$SUDO apt install -y clang-format-14 clang-tidy-14
$SUDO ln -s -f $(which clang-format-14) /usr/local/bin/clang-format
$SUDO ln -s -f $(which clang-tidy-14) /usr/local/bin/clang-tidy
fi

LEVELDB_VERSION="1.23"
echo -e "${green}Building LevelDB from sources...${end}"
wget https://github.com/google/leveldb/archive/${LEVELDB_VERSION}.tar.gz
rm -rf "leveldb-${LEVELDB_VERSION}-${CMAKE_BUILD_TYPE}"
tar xzvf ${LEVELDB_VERSION}.tar.gz
rm -rf ${LEVELDB_VERSION}.tar.gz
mv leveldb-${LEVELDB_VERSION} "leveldb-${LEVELDB_VERSION}-${CMAKE_BUILD_TYPE}"
cd "leveldb-${LEVELDB_VERSION}-${CMAKE_BUILD_TYPE}"
eval "cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DLEVELDB_BUILD_TESTS=0 -DLEVELDB_BUILD_BENCHMARKS=0 -DBUILD_SHARED_LIBS=0 ."
make -j$CPUS
$SUDO make install
cd ..

NURAFT_VERSION="1.3.0"
if [ ! -d "NuRaft-${NURAFT_VERSION}-${CMAKE_BUILD_TYPE}" ]; then
echo -e "${green}Building NuRaft from sources...${end}"
wget https://github.com/eBay/NuRaft/archive/v${NURAFT_VERSION}.tar.gz
tar xzvf v${NURAFT_VERSION}.tar.gz
rm v${NURAFT_VERSION}.tar.gz
mv NuRaft-${NURAFT_VERSION} "NuRaft-${NURAFT_VERSION}-${CMAKE_BUILD_TYPE}"
cd "NuRaft-${NURAFT_VERSION}-${CMAKE_BUILD_TYPE}"
./prepare.sh
if [[ "$BUILD_RELEASE" == "1" ]]; then
# If we're doing a release build, remove the examples and tests
rm -rf examples tests
mkdir examples
mkdir tests
touch examples/CMakeLists.txt
touch tests/CMakeLists.txt
fi
mkdir -p build
cd build
eval "cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DDISABLE_SSL=1 .."
eval "make -j$CPUS static_lib"
else
echo -e "${green}Installing NuRaft from cache...${end}"
cd "NuRaft-${NURAFT_VERSION}-${CMAKE_BUILD_TYPE}/build"
echo -e "${green}Building NuRaft from sources...${end}"
wget https://github.com/eBay/NuRaft/archive/v${NURAFT_VERSION}.tar.gz
rm -rf "NuRaft-${NURAFT_VERSION}-${CMAKE_BUILD_TYPE}"
tar xzvf v${NURAFT_VERSION}.tar.gz
rm v${NURAFT_VERSION}.tar.gz
mv NuRaft-${NURAFT_VERSION} "NuRaft-${NURAFT_VERSION}-${CMAKE_BUILD_TYPE}"
cd "NuRaft-${NURAFT_VERSION}-${CMAKE_BUILD_TYPE}"
./prepare.sh
if [[ "$BUILD_RELEASE" == "1" ]]; then
# If we're doing a release build, remove the examples and tests
rm -rf examples tests
mkdir examples
mkdir tests
touch examples/CMakeLists.txt
touch tests/CMakeLists.txt
fi
mkdir -p build
cd build
eval "cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DDISABLE_SSL=1 .."
eval "make -j$CPUS static_lib"

echo -e "${green}Copying nuraft to /usr/local"
$SUDO cp libnuraft.a /usr/local/lib
$SUDO cp -r ../include/libnuraft /usr/local/include

cd ..
cd ../..

PYTHON_TIDY=/usr/local/bin/run-clang-tidy.py
if [ ! -f "${PYTHON_TIDY}" ]; then
Expand Down

0 comments on commit 602d1fd

Please sign in to comment.