Created
February 28, 2020 14:22
-
-
Save bjodah/9866f3bcf247002a26176785e8d33817 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# This script uses docker to build a specific symengine commit under CentOS6/GCC8/boost1.72 | |
# | |
# Example usage: | |
# | |
# $ sudo ./docker_symengine_cos6.sh e7d7ae55f4fd6740a48acaea0e7e24542ceda6b7 | |
# | |
if ! which docker; then | |
2>&1 echo "You need to have docker installed. See e.g. https://www.docker.com/community-edition#/download" | |
exit 1 | |
fi | |
if [ -z ${1:-""} ]; then | |
2>&1 echo 'No commit given, pass e.g. "master" as an argument' | |
exit 1 | |
fi | |
set -euxo pipefail | |
if [ ! -d environment_cos6 ]; then | |
mkdir environment_cos6 | |
cat <<EOF >environment_cos6/Dockerfile | |
FROM centos:6 | |
ENV LANG en_US.UTF-8 | |
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 && \ | |
yum update -y && \ | |
yum install -y \ | |
bzip2 \ | |
make \ | |
patch \ | |
sudo \ | |
tar \ | |
which \ | |
m4 \ | |
perl \ | |
centos-release-scl && \ | |
yum --enablerepo=centos-sclo-rh-testing install -y \ | |
devtoolset-8-binutils \ | |
devtoolset-8-gcc \ | |
devtoolset-8-gcc-c++ && \ | |
yum clean all && \ | |
curl -Ls https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-Linux-x86_64.tar.gz | tar xz -C /opt/ && \ | |
curl -Ls https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.bz2 | tar xj -C /opt/ | |
EOF | |
fi | |
if groups | grep docker; then | |
DOCKERCMD=docker | |
else | |
DOCKERCMD="sudo docker" | |
fi | |
DOCKERIMAGE=$($DOCKERCMD build environment_cos6 | tee /dev/tty | tail -n 1 | cut -d' ' -f3) | |
MOUNT=$(realpath mount_cos6) | |
if [ ! -d $MOUNT ]; then | |
mkdir $MOUNT | |
fi | |
if [ ! -e $MOUNT/run.sh ]; then | |
cat <<'EOF' >$MOUNT/run.sh | |
#!/bin/bash -xe | |
export SYMENGINE_COMMIT=$1 | |
if [ ! -d symengine-${SYMENGINE_COMMIT} ]; then | |
curl -Ls https://github.com/symengine/symengine/archive/${SYMENGINE_COMMIT}.tar.gz | tar xz | |
fi | |
mkdir -p symengine-build | |
cd symengine-build | |
export PATH="$(ls -d /opt/cmake-* | head -n 1)/bin:$PATH" | |
. scl_source enable devtoolset-8 | |
cmake \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG -march=sandybridge -funroll-loops" \ | |
-DBUILD_SHARED_LIBS=OFF \ | |
-DINTEGER_CLASS=boostmp \ | |
../symengine-${SYMENGINE_COMMIT} | |
make -j $(nproc) | |
ctest --output-on-failure | |
EOF | |
chmod +x $MOUNT/run.sh | |
fi | |
HOST_USER=${SUDO_USER:-${LOGNAME}} | |
$DOCKERCMD run --rm --name "symengine_compile" \ | |
-e HOST_WHOAMI=${HOST_USER} -e HOST_UID=$(id -u ${HOST_USER}) -e HOST_GID=$(id -g ${HOST_USER}) \ | |
-v $MOUNT:/mount -w /mount --cap-add SYS_PTRACE \ | |
-it $DOCKERIMAGE /usr/bin/env bash -x -c \ | |
"groupadd -f --gid \$HOST_GID \$HOST_WHOAMI; \ | |
useradd --uid \$HOST_UID --gid \$HOST_GID --home /mount \$HOST_WHOAMI; \ | |
/usr/bin/sudo -E -u \$HOST_WHOAMI -i /bin/bash /mount/run.sh $1" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
xref: symengine/symengine#1639
TODO: use patched boost and/or update symengine source to work-around bug in boost.