From f02fe0e21b8a4533d90bdd850e629bcfdf8c1d5a Mon Sep 17 00:00:00 2001 From: Adrian Palacios Date: Fri, 20 Oct 2023 13:40:33 -0400 Subject: [PATCH] Add scripts for setup in AL2 --- scripts/setup/al2/install_cbmc.sh | 32 ++++++++++++++++++++++++++++ scripts/setup/al2/install_deps.sh | 31 +++++++++++++++++++++++++++ scripts/setup/al2/install_viewer.sh | 19 +++++++++++++++++ scripts/setup/al2/reinstall_cmake.sh | 24 +++++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100755 scripts/setup/al2/install_cbmc.sh create mode 100755 scripts/setup/al2/install_deps.sh create mode 100755 scripts/setup/al2/install_viewer.sh create mode 100755 scripts/setup/al2/reinstall_cmake.sh diff --git a/scripts/setup/al2/install_cbmc.sh b/scripts/setup/al2/install_cbmc.sh new file mode 100755 index 000000000000..39af92e0693b --- /dev/null +++ b/scripts/setup/al2/install_cbmc.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Copyright Kani Contributors +# SPDX-License-Identifier: Apache-2.0 OR MIT + +set -eu + +# Source kani-dependencies to get CBMC_VERSION +source kani-dependencies + +if [ -z "${CBMC_VERSION:-}" ]; then + echo "$0: Error: CBMC_VERSION is not specified" + exit 1 +fi + +# Binaries are not released for AL2, so build from source +WORK_DIR=$(mktemp -d) +git clone \ + --branch develop --depth 1 \ + https://github.com/diffblue/cbmc \ + "${WORK_DIR}" + +pushd "${WORK_DIR}" + +mkdir build +git submodule update --init + +cmake -S . -Bbuild -DWITH_JBMC=OFF -Dsat_impl="minisat2;cadical" +make -C build -j$(nproc) +sudo make -C build install + +popd +rm -rf "${WORK_DIR}" diff --git a/scripts/setup/al2/install_deps.sh b/scripts/setup/al2/install_deps.sh new file mode 100755 index 000000000000..c9178b6537be --- /dev/null +++ b/scripts/setup/al2/install_deps.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# Copyright Kani Contributors +# SPDX-License-Identifier: Apache-2.0 OR MIT + +set -eu + +# Dependencies. +DEPS=( + git + openssl-devel + python3-pip + wget +) + +set -x + +sudo yum -y update +sudo yum -y groupinstall "Development Tools" +sudo yum -y install "${DEPS[@]}" + +# Add Python package dependencies +python3 -m pip install autopep8 + +# Get the directory containing this script +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +${SCRIPT_DIR}/reinstall_cmake.sh +${SCRIPT_DIR}/install_cbmc.sh +${SCRIPT_DIR}/install_viewer.sh +# The Kissat installation script is platform-independent, so is placed one level up +${SCRIPT_DIR}/../install_kissat.sh diff --git a/scripts/setup/al2/install_viewer.sh b/scripts/setup/al2/install_viewer.sh new file mode 100755 index 000000000000..c8ba7b7b838e --- /dev/null +++ b/scripts/setup/al2/install_viewer.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Copyright Kani Contributors +# SPDX-License-Identifier: Apache-2.0 OR MIT + +set -eu + +# Install cbmc-viewer + +# Source kani-dependencies to get CBMC_VIEWER_VERSION +source kani-dependencies + +if [ -z "${CBMC_VIEWER_VERSION:-}" ]; then + echo "$0: Error: CBMC_VIEWER_VERSION is not specified" + exit 1 +fi + +set -x + +python3 -m pip install cbmc-viewer==$CBMC_VIEWER_VERSION diff --git a/scripts/setup/al2/reinstall_cmake.sh b/scripts/setup/al2/reinstall_cmake.sh new file mode 100755 index 000000000000..b6efa35094ce --- /dev/null +++ b/scripts/setup/al2/reinstall_cmake.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# Copyright Kani Contributors +# SPDX-License-Identifier: Apache-2.0 OR MIT + +set -eux + +CMAKE_VERSION="3.27.7" + +# Remove other versions of CMake +sudo yum -y remove cmake + +sudo rm -rf /tmp/cmake_installation +mkdir /tmp/cmake_installation +pushd /tmp/cmake_installation + +wget https://github.com/Kitware/CMake/releases/download/v"${CMAKE_VERSION}"/cmake-"${CMAKE_VERSION}".tar.gz +tar -xzvf cmake-"${CMAKE_VERSION}".tar.gz +cd cmake-"${CMAKE_VERSION}" + +./bootstrap +make -j$(nproc) +sudo make install + +popd \ No newline at end of file