summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@users.noreply.github.com>2019-01-31 14:36:13 -0500
committerGitHub <noreply@github.com>2019-01-31 14:36:13 -0500
commit95c3d164fbd68e720a93192f8d99540a7afdd266 (patch)
tree9ed443d35c71e4c27a2803733c41d3e8a2322a73
parent90136ee5fcaed3bd2f243bff94215f9a508aabe9 (diff)
parent11f358cafab2da28692fdaa837dfbcc3cc163736 (diff)
downloaddocker-python-95c3d164fbd68e720a93192f8d99540a7afdd266.tar.gz
Merge pull request #1 from jhunkeler/tools
Tools
-rw-r--r--Dockerfile80
-rwxr-xr-xbuild.sh2
-rwxr-xr-x[-rw-r--r--]etc/pkgs/000-dummy.sh0
-rwxr-xr-xetc/pkgs/001-openssl.sh (renamed from etc/tasks/001-openssl.sh)4
-rwxr-xr-xetc/pkgs/002-python.sh (renamed from etc/tasks/002-python.sh)3
-rwxr-xr-xetc/tasks/001-packages.sh (renamed from etc/tasks/004-packages.sh)12
-rwxr-xr-xetc/tasks/002-python-packages.sh (renamed from etc/tasks/003-python-packages.sh)17
-rwxr-xr-xetc/tasks/999-clean.sh3
-rwxr-xr-xscripts/build.sh17
9 files changed, 57 insertions, 81 deletions
diff --git a/Dockerfile b/Dockerfile
index 04e29c3..d03e3e9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,74 +1,36 @@
-FROM centos:6.9
+FROM astroconda/base:1.0.0
LABEL maintainer="jhunk@stsci.edu" \
vendor="Space Telescope Science Institute"
-RUN yum install -y epel-release \
- && yum clean all
-
-RUN yum install -y \
- gcc \
- gcc-c++ \
- gcc-gfortran \
- git \
- glibc \
- libuuid-devel \
- make \
- perl \
- pkgconfig \
- expat-devel \
- bzip2-devel \
- gdbm-devel \
- libffi-devel \
- ncurses-devel \
- openssl-devel \
- readline-devel \
- sqlite-devel \
- sudo \
- tcl-devel \
- tk-devel \
- which \
- xz-devel \
- zlib-devel \
- && yum clean all
-
-ENV TOOLCHAIN="/opt/toolchain"
-ENV TOOLCHAIN_BIN="${TOOLCHAIN}/bin"
-ENV TOOLCHAIN_LIB="${TOOLCHAIN}/lib"
-ENV TOOLCHAIN_INCLUDE="${TOOLCHAIN}/include"
-ENV TOOLCHAIN_DATA="${TOOLCHAIN}/share"
-ENV TOOLCHAIN_SYSCONF="${TOOLCHAIN}/etc"
-ENV TOOLCHAIN_MAN="${TOOLCHAIN_DATA}/man"
-ENV TOOLCHAIN_PKGCONFIG="${TOOLCHAIN_LIB}/pkgconfig"
-ENV TOOLCHAIN_BUILD="/opt/buildroot"
-ENV PATH="${TOOLCHAIN_BIN}:${PATH}"
-
ARG PYTHON_VERSION=${PYTHON_VERSION:-3.7.1}
-ARG USER_ACCT=${USER_ACCT:-developer}
-ARG USER_HOME=/home/${USER_ACCT}
-ARG USER_UID=${USER_UID:-1000}
-ARG USER_GID=${USER_GID:-1000}
-RUN groupadd -g ${USER_GID} ${USER_ACCT} \
- && useradd -u ${USER_UID} -g ${USER_ACCT} \
- -m -d ${USER_HOME} -s /bin/bash ${USER_ACCT} \
- && echo "${USER_ACCT}:${USER_ACCT}" | chpasswd \
- && echo "${USER_ACCT} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
+USER root
-RUN echo export PATH="${TOOLCHAIN_BIN}:\${PATH}" > /etc/profile.d/toolchain.sh \
- && echo export MANPATH="${TOOLCHAIN_MAN}:\${MANPATH}" >> /etc/profile.d/toolchain.sh \
- && echo export PKG_CONFIG_PATH="${TOOLCHAIN_PKGCONFIG}:\${PKG_CONFIG_PATH}" >> /etc/profile.d/toolchain.sh
+RUN yum install -y epel-release \
+ && yum install -y \
+ bzip2-devel \
+ expat-devel \
+ gdbm-devel \
+ git \
+ libffi-devel \
+ libuuid-devel \
+ ncurses-devel \
+ openssl-devel \
+ readline-devel \
+ sqlite-devel \
+ tcl-devel \
+ tk-devel \
+ xz-devel \
+ zlib-devel \
+ && yum clean all
WORKDIR "${TOOLCHAIN_BUILD}"
+
COPY scripts/ ${TOOLCHAIN_BUILD}/bin
COPY etc/ ${TOOLCHAIN_BUILD}/etc
-
-RUN mkdir -p "${TOOLCHAIN}" \
- && chown -R ${USER_ACCT}: \
- ${TOOLCHAIN} \
- ${TOOLCHAIN_BUILD}
+RUN chown -R ${USER_ACCT}: "${TOOLCHAIN_BUILD}"
USER "${USER_ACCT}"
-
RUN bin/build.sh \
&& sudo rm -rf "${TOOLCHAIN_BUILD}"
diff --git a/build.sh b/build.sh
index 2f1fa49..8d9848a 100755
--- a/build.sh
+++ b/build.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-PROJECT=python
+PROJECT=astroconda/python
PYTHON_VERSION="${1}"
if [[ -z ${PYTHON_VERSION} ]]; then
echo "Need a fully qualified Python version to build. [e.g. 3.7.1]"
diff --git a/etc/pkgs/000-dummy.sh b/etc/pkgs/000-dummy.sh
index 06bd986..06bd986 100644..100755
--- a/etc/pkgs/000-dummy.sh
+++ b/etc/pkgs/000-dummy.sh
diff --git a/etc/tasks/001-openssl.sh b/etc/pkgs/001-openssl.sh
index 1f99fe8..fe7aad8 100755
--- a/etc/tasks/001-openssl.sh
+++ b/etc/pkgs/001-openssl.sh
@@ -1,5 +1,4 @@
#!/bin/bash
-set -e
set -x
name="openssl"
@@ -54,7 +53,7 @@ function build()
zlib-dynamic \
shared \
no-ssl3-method
- make
+ make -j${_maxjobs}
make install MANDIR="${prefix}/share/man" MANSUFFIX=ssl
popd
post
@@ -64,6 +63,7 @@ function post()
{
bundle=$(get_system_cacert)
install -D -m644 "${bundle}" "${prefix}/ssl/cert.pem"
+ rm -rf "${prefix}/share/doc/openssl/html"
rm -rf "${dest}"
rm -rf "${tarball}"
echo "All done."
diff --git a/etc/tasks/002-python.sh b/etc/pkgs/002-python.sh
index d7db12f..36cebc6 100755
--- a/etc/tasks/002-python.sh
+++ b/etc/pkgs/002-python.sh
@@ -1,5 +1,4 @@
#!/bin/bash
-set -e
set -x
python_version="${PYTHON_VERSION}"
@@ -98,7 +97,7 @@ function build()
--with-dbmliborder=gdbm:ndbm \
--with-pymalloc \
--with-system-expat
- make -j4
+ make -j${_maxjobs}
make install
popd
post
diff --git a/etc/tasks/004-packages.sh b/etc/tasks/001-packages.sh
index f7d0cad..5d20ee7 100755
--- a/etc/tasks/004-packages.sh
+++ b/etc/tasks/001-packages.sh
@@ -1,17 +1,10 @@
#!/bin/bash
-set -e
set -x
-prefix="${TOOLCHAIN}"
sysconfdir="${TOOLCHAIN_BUILD}/etc"
reqdir=${sysconfdir}/pkgs
blddir=builds
-export PATH="${prefix}/bin:${PATH}"
-export CFLAGS="-I${prefix}/include"
-export LDFLAGS="-L${prefix}/lib -Wl,-rpath=${prefix}/lib"
-export PREFIX="${prefix}"
-
function pre()
{
if [[ ! -d ${reqdir} ]]; then
@@ -30,6 +23,11 @@ function build()
do
chmod +x "${req}"
"${req}"
+ retval=$?
+ if [[ ${retval} != 0 ]]; then
+ echo "BUILD FAILED: ${req}"
+ exit ${retval}
+ fi
done
post
}
diff --git a/etc/tasks/003-python-packages.sh b/etc/tasks/002-python-packages.sh
index cb248ff..bcd0b6f 100755
--- a/etc/tasks/003-python-packages.sh
+++ b/etc/tasks/002-python-packages.sh
@@ -1,15 +1,9 @@
#!/bin/bash
set -x
-# Uses GLOBAL environment variable: PYTHON_VERSION defined by `docker build` argument
-prefix="${TOOLCHAIN}"
sysconfdir="${TOOLCHAIN_BUILD}/etc"
reqdir=${sysconfdir}/pip
-export PATH="${prefix}/bin:${PATH}"
-export CFLAGS="-I${prefix}/include"
-export LDFLAGS="-L${prefix}/lib -Wl,-rpath=${prefix}/lib"
-
function pre()
{
if [[ ! -d ${reqdir} ]]; then
@@ -24,7 +18,12 @@ function build()
# Iterate over pip requirement files
for req in ${reqdir}/*
do
- pip install --upgrade --progress-bar=off -v -r "${req}"
+ pip install --upgrade --progress-bar=off -r "${req}"
+ retval=$?
+ if [[ ${retval} != 0 ]]; then
+ echo "BUILD FAILED: ${req}"
+ exit ${retval}
+ fi
done
post
}
@@ -32,8 +31,8 @@ function build()
function post()
{
rm -rf ~/.cache/pip
- [[ -d src ]] && rm -rf src
- [[ -f gmon.out ]] && rm -rf gmon.out
+ [[ -d src ]] && rm -rf src || true
+ [[ -f gmon.out ]] && rm -rf gmon.out || true
}
build
diff --git a/etc/tasks/999-clean.sh b/etc/tasks/999-clean.sh
index 44f5d16..e4e8d13 100755
--- a/etc/tasks/999-clean.sh
+++ b/etc/tasks/999-clean.sh
@@ -11,6 +11,9 @@ 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}"
diff --git a/scripts/build.sh b/scripts/build.sh
index 23d0ea1..63f0a00 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -1,12 +1,22 @@
-#!/bin/bash -e
+#!/bin/bash -x
+prefix="${TOOLCHAIN}"
taskdir=${TOOLCHAIN_BUILD}/etc/tasks
+export _maxjobs=$(getconf _NPROCESSORS_ONLN)
+export PATH="${prefix}/bin:${PATH}"
+export CFLAGS="-I${prefix}/include"
+export LDFLAGS="-L${prefix}/lib -Wl,-rpath=${prefix}/lib"
+export PKG_CONFIG_PATH="${prefix}/lib/pkgconfig"
+export PREFIX="${prefix}"
+
if [[ ! -d ${taskdir} ]]; then
echo "No tasks. ${taskdir} does not exist."
exit 1
fi
+printenv | sort
+
for task in ${taskdir}/*
do
# Check for execution permission
@@ -16,4 +26,9 @@ do
fi
echo "Executing: ${task}"
${task}
+ retval=$?
+ if [[ ${retval} != 0 ]]; then
+ echo "TASK FAILED: ${task}"
+ exit ${retval}
+ fi
done