summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2019-01-31 13:23:24 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2019-01-31 13:23:24 -0500
commita16452a5187314523a0d3d1431d589463e3f281d (patch)
treeff05a63c43942f6b21420660df6cf7e3d023836b /etc
downloaddocker-base-a16452a5187314523a0d3d1431d589463e3f281d.tar.gz
Initial commit
Diffstat (limited to 'etc')
-rwxr-xr-xetc/pkgs/000-dummy.sh2
-rwxr-xr-xetc/pkgs/001-gcc.sh97
-rwxr-xr-xetc/pkgs/002-binutils.sh27
-rwxr-xr-xetc/tasks/001-packages.sh41
-rwxr-xr-xetc/tasks/999-clean.sh26
5 files changed, 193 insertions, 0 deletions
diff --git a/etc/pkgs/000-dummy.sh b/etc/pkgs/000-dummy.sh
new file mode 100755
index 0000000..06bd986
--- /dev/null
+++ b/etc/pkgs/000-dummy.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+exit 0
diff --git a/etc/pkgs/001-gcc.sh b/etc/pkgs/001-gcc.sh
new file mode 100755
index 0000000..62ddae0
--- /dev/null
+++ b/etc/pkgs/001-gcc.sh
@@ -0,0 +1,97 @@
+#!/bin/bash -e
+set -x
+name=gcc
+version=8.2.0
+url=http://mirrors-usa.go-parts.com/gcc/releases/${name}-${version}/${name}-${version}.tar.gz
+src=${name}-${version}
+bld=${src}_build
+
+version_isl=0.20
+url_isl=http://isl.gforge.inria.fr/isl-${version_isl}.tar.bz2
+
+version_cloog=0.18.4
+url_cloog="http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-${version_cloog}.tar.gz"
+
+# Ensure 64-bit libraries go into /lib
+sudo ln -sf ${TOOLCHAIN_LIB} ${TOOLCHAIN}/lib64
+
+curl -LO ${url}
+tar xf ${src}.tar.gz
+
+mkdir -p ${bld}
+pushd ${src}
+ unset CFLAGS
+ unset LDFLAGS
+
+ # Disable fixincludes
+ sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
+
+ # Use /lib, not /lib64
+ #sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64
+ #sed -i 's/lib64/lib/g' gcc/config.gcc
+ #sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure
+
+ # Download MPFR and friends
+ ./contrib/download_prerequisites
+
+ curl -LO ${url_isl}
+ tar xf $(basename ${url_isl})
+ ln -s isl-${version_isl} isl
+
+ curl -LO ${url_cloog}
+ tar xf $(basename ${url_cloog})
+ ln -s cloog-${version_cloog} cloog
+popd
+
+pushd ${bld}
+ # Beware: x86_64-only toolchain (multilib disabled)
+ ../${src}/configure \
+ --prefix=${TOOLCHAIN} \
+ --libdir=${TOOLCHAIN_LIB} \
+ --libexecdir=${TOOLCHAIN_LIB} \
+ --disable-bootstrap \
+ --disable-multilib \
+ --disable-werror \
+ --disable-libunwind-exceptions \
+ --disable-libstdcxx-pch \
+ --disable-libssp \
+ --with-system-zlib \
+ --with-isl \
+ --with-linker-hash-style=gnu \
+ --with-tune=generic \
+ --enable-languages=c,c++,fortran,lto,go \
+ --enable-shared \
+ --enable-threads=posix \
+ --enable-libmpx \
+ --enable-__cxa_atexit \
+ --enable-clocale=gnu \
+ --enable-gnu-unique-object \
+ --enable-linker-build-id \
+ --enable-lto \
+ --enable-plugin \
+ --enable-install-libiberty \
+ --enable-gnu-indirect-function \
+ --enable-default-pie \
+ --enable-default-ssp \
+ --enable-cet=auto \
+ --enable-checking=release
+
+ make -j${_maxjobs}
+ make install-strip
+
+ # Create compiler links
+ ln -sf gcc ${TOOLCHAIN_BIN}/cc
+
+ # Prevent ldconfig from picking up gdb python scripts
+ autoload="${TOOLCHAIN_DATA}/gdb/auto-load${TOOLCHAIN_LIB}"
+ mkdir -p "${autoload}"
+ mv -v "${TOOLCHAIN_LIB}"/*gdb.py "${autoload}"
+
+ # Binutils build cannot use this static archive
+ rm -f "${TOOLCHAIN_LIB}/libiberty.a"
+
+ # Enforce global linkage to toolchain
+ /bin/echo "${TOOLCHAIN_LIB}" > gcc.conf
+ sudo cp -a gcc.conf /etc/ld.so.conf.d
+ sudo ldconfig
+popd
diff --git a/etc/pkgs/002-binutils.sh b/etc/pkgs/002-binutils.sh
new file mode 100755
index 0000000..4c2e13d
--- /dev/null
+++ b/etc/pkgs/002-binutils.sh
@@ -0,0 +1,27 @@
+#!/bin/bash -x
+name=binutils
+version=2.31.1
+url=https://ftp.gnu.org/gnu/binutils/${name}-${version}.tar.gz
+
+curl -LO ${url}
+tar xf ${name}-${version}.tar.gz
+
+mkdir -p binutils
+pushd binutils
+ ../${name}-${version}/configure \
+ --prefix=${TOOLCHAIN} \
+ --with-lib-path=${TOOLCHAIN_LIB}:/lib64:/usr/lib64:/usr/local/lib64 \
+ --target=x86_64-pc-linux-gnu \
+ --enable-shared \
+ --enable-lto \
+ --enable-gold \
+ --enable-ld=default \
+ --enable-plugins \
+ --enable-threads \
+ --disable-static \
+ --disable-multilib \
+ --with-sysroot=/ \
+ --with-tune=generic
+ make -j${_maxjobs}
+ make install-strip
+popd
diff --git a/etc/tasks/001-packages.sh b/etc/tasks/001-packages.sh
new file mode 100755
index 0000000..e9e0c60
--- /dev/null
+++ b/etc/tasks/001-packages.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -x
+
+sysconfdir="${TOOLCHAIN_BUILD}/etc"
+reqdir=${sysconfdir}/pkgs
+blddir=builds
+
+function pre()
+{
+ if [[ ! -d ${reqdir} ]]; then
+ # Nothing there, but maybe that's on purpose.
+ exit 0
+ fi
+ mkdir -p "${blddir}"
+ pushd ${blddir} &>/dev/null
+}
+
+function build()
+{
+ pre
+ # Iterate over binary package build scripts
+ for req in ${reqdir}/*
+ do
+ chmod +x "${req}"
+ "${req}"
+ retval=$?
+ if [[ ${retval} != 0 ]]; then
+ echo "BUILD FAILED: ${req}"
+ exit ${retval}
+ fi
+ done
+ post
+}
+
+function post()
+{
+ popd &>/dev/null
+ [[ -d ${blddir} ]] && rm -rf "${blddir}" || true
+}
+
+build
diff --git a/etc/tasks/999-clean.sh b/etc/tasks/999-clean.sh
new file mode 100755
index 0000000..2900413
--- /dev/null
+++ b/etc/tasks/999-clean.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+if [[ ! -f /.dockerenv ]]; then
+ echo "This script cannot be executed outside of a docker container."
+ exit 1
+fi
+
+packages=(
+ gcc
+ gcc-c++
+ gcc-gfortran
+)
+sudo yum remove -y "${packages[@]}"
+sudo yum clean all
+
+sudo rm -rf "${HOME}/.astropy"
+sudo rm -rf "${HOME}"/*
+sudo rm -rf /tmp/*
+sudo rm -rf /var/cache/yum
+
+# Ensure new shared libraries ingested
+sudo ldconfig
+
+for logfile in /var/log/*
+do
+ [[ -f ${logfile} ]] && sudo truncate --size=0 "${logfile}"
+done