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 /etc/tasks | |
parent | 90136ee5fcaed3bd2f243bff94215f9a508aabe9 (diff) | |
parent | 11f358cafab2da28692fdaa837dfbcc3cc163736 (diff) | |
download | docker-python-95c3d164fbd68e720a93192f8d99540a7afdd266.tar.gz |
Merge pull request #1 from jhunkeler/tools
Tools
Diffstat (limited to 'etc/tasks')
-rwxr-xr-x | etc/tasks/001-openssl.sh | 73 | ||||
-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/002-python.sh | 133 | ||||
-rwxr-xr-x | etc/tasks/999-clean.sh | 3 |
5 files changed, 16 insertions, 222 deletions
diff --git a/etc/tasks/001-openssl.sh b/etc/tasks/001-openssl.sh deleted file mode 100755 index 1f99fe8..0000000 --- a/etc/tasks/001-openssl.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -set -e -set -x - -name="openssl" -version="1.1.0j" - -tarball="${name}-${version}.tar.gz" -dest="${tarball%%.tar.gz}" -url="https://www.openssl.org/source/${tarball}" -prefix="${TOOLCHAIN}" - - -function pre() -{ - curl -LO "${url}" - tar xf "${tarball}" -} - - -function get_system_cacert() { - local paths=( - /etc/ssl/cert.pem - /etc/ssl/cacert.pem - /etc/ssl/certs/cacert.pem - /etc/ssl/certs/ca-bundle.crt - ) - for bundle in "${paths[@]}" - do - if [[ -f ${bundle} ]]; then - echo "${bundle}" - break - fi - done -} - - -function build() -{ - pre - pushd "${dest}" - export PATH="${prefix}/bin:${PATH}" - export LDFLAGS="-Wl,-rpath=${prefix}/lib" - export KERNEL_BITS=64 - target="linux-x86_64" - - ./Configure \ - --prefix="${prefix}" \ - --openssldir="ssl" \ - --libdir="lib" \ - ${LDFLAGS} \ - ${target} \ - enable-ec_nistp_64_gcc_128 \ - zlib-dynamic \ - shared \ - no-ssl3-method - make - make install MANDIR="${prefix}/share/man" MANSUFFIX=ssl - popd - post -} - -function post() -{ - bundle=$(get_system_cacert) - install -D -m644 "${bundle}" "${prefix}/ssl/cert.pem" - rm -rf "${dest}" - rm -rf "${tarball}" - echo "All done." -} - -# Main -build 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/002-python.sh b/etc/tasks/002-python.sh deleted file mode 100755 index d7db12f..0000000 --- a/etc/tasks/002-python.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/bash -set -e -set -x - -python_version="${PYTHON_VERSION}" -python_basever="${python_version%.*}" - -if [[ ! ${python_version} || ! ${python_basever} ]]; then - echo "Need a python version..." - exit 1 -fi - -python_base_url="https://www.python.org/ftp/python" -python_tarball="Python-${python_version}.tgz" -python_source="${python_tarball%%.tgz}" -python_url="${python_base_url}/${python_version}/${python_tarball}" -prefix="${TOOLCHAIN}" - -dep_table=( - "bzlib.h libbz2.so" - "expat.h libexpat.so" - "ffi.h libffi.so" - "gdbm.h libgdbm.so" - "lzma.h liblzma.so" - "ncurses.h libncurses.so" - "nislib.h libnsl.so" - "readline.h libreadline.so" - "ssl.h libssl.so" - "sqlite3.h libsqlite3.so" - "tcl.h libtcl.so" - "tk.h libtk.so" - "zlib.h libz.so" -) - - -function depcheck() -{ - dep_count=0 - dep_total="${#dep_table[@]}" - - set +x - for _record in "${dep_table[@]}" - do - unset record - read -ra record <<< $_record - - header=$(find /usr/include /usr/lib{,64} -regex ".*\/${record[0]}" 2>/dev/null | head -n 1 || true) - if [[ -n $header ]]; then - dep_count=$((dep_count+1)) - else - echo "Missing header: ${record[0]}" - fi - lib=$(find /usr/lib{,64} -regex ".*\/${record[1]}" 2>/dev/null | head -n 1 || true) - if [[ -n "$lib" ]]; then - dep_count=$((dep_count+1)) - else - echo "Missing library: ${record[1]}" - fi - done - set -x - - if [[ ${dep_count} != $(( (dep_total * 2) )) ]]; then - echo 'Missing dependencies...' - exit 1 - fi -} - - -function pre() -{ - depcheck - - if [[ ! -f ${python_tarball} ]]; then - curl -LO "${python_url}" - fi - - if [[ -d ${python_source} ]]; then - rm -rf "${python_source}" - fi - - tar xf "${python_tarball}" -} - - -function build() -{ - pre - export CFLAGS="-I${prefix}/include" - export LDFLAGS="-L${prefix}/lib -Wl,-rpath=${prefix}/lib" - pushd "${python_source}" - #--enable-optimizations \ - ./configure \ - --prefix="${prefix}" \ - --enable-ipv6 \ - --enable-loadable-sqlite-extensions \ - --enable-profiling \ - --enable-shared \ - --with-dbmliborder=gdbm:ndbm \ - --with-pymalloc \ - --with-system-expat - make -j4 - make install - popd - post -} - - -function post() -{ - export PATH=$prefix/bin:$PATH - ln -sf python3 "${prefix}"/bin/python - ln -sf python3-config "${prefix}"/bin/python-config - ln -sf idle3 "${prefix}"/bin/idle - ln -sf pydoc3 "${prefix}"/bin/pydoc - ln -sf pip3 "${prefix}"/bin/pip - ln -sf python${python_basever}.1 "${prefix}"/share/man/man1/python.1 - - echo '---' - python --version - python -c "import sys; from pprint import pprint; pprint(sys.path)" - echo '---' - ldd $(which python) - echo '---' - - rm -rf $HOME/.config/pip - rm -rf "${python_tarball}" - rm -rf "${python_source}" - echo "All done." -} - - -# Main -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}" |