diff options
author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2019-01-31 14:36:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-31 14:36:13 -0500 |
commit | 95c3d164fbd68e720a93192f8d99540a7afdd266 (patch) | |
tree | 9ed443d35c71e4c27a2803733c41d3e8a2322a73 | |
parent | 90136ee5fcaed3bd2f243bff94215f9a508aabe9 (diff) | |
parent | 11f358cafab2da28692fdaa837dfbcc3cc163736 (diff) | |
download | docker-python-95c3d164fbd68e720a93192f8d99540a7afdd266.tar.gz |
Merge pull request #1 from jhunkeler/tools
Tools
-rw-r--r-- | Dockerfile | 80 | ||||
-rwxr-xr-x | build.sh | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | etc/pkgs/000-dummy.sh | 0 | ||||
-rwxr-xr-x | etc/pkgs/001-openssl.sh (renamed from etc/tasks/001-openssl.sh) | 4 | ||||
-rwxr-xr-x | etc/pkgs/002-python.sh (renamed from etc/tasks/002-python.sh) | 3 | ||||
-rwxr-xr-x | etc/tasks/001-packages.sh (renamed from etc/tasks/004-packages.sh) | 12 | ||||
-rwxr-xr-x | etc/tasks/002-python-packages.sh (renamed from etc/tasks/003-python-packages.sh) | 17 | ||||
-rwxr-xr-x | etc/tasks/999-clean.sh | 3 | ||||
-rwxr-xr-x | scripts/build.sh | 17 |
9 files changed, 57 insertions, 81 deletions
@@ -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}" @@ -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 |