testspace / scripts /install.sh
nilshoehing's picture
Fix RLP helper script permissions during Space build
3204772 verified
Raw
History Blame Contribute Delete
2.61 kB
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PYTHON_BIN="${PYTHON_BIN:-$(command -v python3 || command -v python)}"
if [[ -z "${PYTHON_BIN}" ]]; then
echo "Python interpreter not found." >&2
exit 1
fi
DEBIAN_MIRROR="${DEBIAN_MIRROR:-https://ftp.us.debian.org/debian}"
DEBIAN_SECURITY_MIRROR="${DEBIAN_SECURITY_MIRROR:-https://security.debian.org/debian-security}"
CPU_COUNT="$(getconf _NPROCESSORS_ONLN 2>/dev/null || sysctl -n hw.logicalcpu 2>/dev/null || echo 4)"
if command -v apt-get >/dev/null 2>&1; then
sed -i "s|http://deb.debian.org|${DEBIAN_MIRROR}|g" /etc/apt/sources.list || true
sed -i "s|https://deb.debian.org|${DEBIAN_MIRROR}|g" /etc/apt/sources.list || true
sed -i "s|http://security.debian.org|${DEBIAN_SECURITY_MIRROR}|g" /etc/apt/sources.list || true
sed -i "s|https://security.debian.org|${DEBIAN_SECURITY_MIRROR}|g" /etc/apt/sources.list || true
if ls /etc/apt/sources.list.d/*.list >/dev/null 2>&1; then
sed -i "s|http://deb.debian.org|${DEBIAN_MIRROR}|g" /etc/apt/sources.list.d/*.list
sed -i "s|https://deb.debian.org|${DEBIAN_MIRROR}|g" /etc/apt/sources.list.d/*.list
sed -i "s|http://security.debian.org|${DEBIAN_SECURITY_MIRROR}|g" /etc/apt/sources.list.d/*.list
sed -i "s|https://security.debian.org|${DEBIAN_SECURITY_MIRROR}|g" /etc/apt/sources.list.d/*.list
fi
APT_ARGS=(
-o Acquire::Retries=5
-o Acquire::http::Timeout=30
-o Acquire::https::Timeout=30
)
apt-get update "${APT_ARGS[@]}"
apt-get install -y --no-install-recommends "${APT_ARGS[@]}" \
ca-certificates \
build-essential \
cmake \
gcc \
git \
imagemagick \
libgtk-3-dev \
pkg-config
rm -rf /var/lib/apt/lists/*
else
echo "apt-get not found; skipping OS package installation and assuming build tools are already available."
fi
"${PYTHON_BIN}" -m pip install --upgrade pip setuptools wheel
"${PYTHON_BIN}" -m pip install -e "${ROOT_DIR}"
"${PYTHON_BIN}" -m pip install "pygame>=2.1.0"
pushd "${ROOT_DIR}/submodules/rlp" >/dev/null
"${PYTHON_BIN}" setup.py build_ext --inplace
popd >/dev/null
find "${ROOT_DIR}/submodules/rlp/puzzles" -type f -name "*.sh" -exec chmod +x {} +
mkdir -p "${ROOT_DIR}/submodules/rlp/rlp/lib"
pushd "${ROOT_DIR}/submodules/rlp/rlp/lib" >/dev/null
cmake ../../puzzles
make -j"${CPU_COUNT}" libbridges libgalaxies libloopy libpattern libundead
popd >/dev/null
pushd "${ROOT_DIR}/submodules/flowfree" >/dev/null
gcc -std=c11 -O2 -Wall -Wextra -o flowfree_all_solutions flowfree_all_solutions.c
popd >/dev/null
echo "TopoBench install complete."