From 0fa3202789648132971160f686f5a37595108f44 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Fri, 17 Jul 2015 10:17:57 -0700 Subject: [PATCH] Add 3.5.0b3 --- .travis.yml | 2 ++ 3.5/Dockerfile | 45 ++++++++++++++++++++++++ 3.5/onbuild/Dockerfile | 9 +++++ 3.5/slim/Dockerfile | 66 +++++++++++++++++++++++++++++++++++ generate-stackbrew-library.sh | 9 ++++- update.sh | 4 +++ 6 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 3.5/Dockerfile create mode 100644 3.5/onbuild/Dockerfile create mode 100644 3.5/slim/Dockerfile diff --git a/.travis.yml b/.travis.yml index 38a1495..a102636 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,8 @@ language: bash dist: trusty env: + - VERSION=3.5 VARIANT= + - VERSION=3.5 VARIANT=slim - VERSION=3.4 VARIANT= - VERSION=3.4 VARIANT=slim - VERSION=3.4 VARIANT=wheezy diff --git a/3.5/Dockerfile b/3.5/Dockerfile new file mode 100644 index 0000000..f2a88ba --- /dev/null +++ b/3.5/Dockerfile @@ -0,0 +1,45 @@ +FROM buildpack-deps:jessie + +# remove several traces of debian python +RUN apt-get purge -y python.* + +# http://bugs.python.org/issue19846 +# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK. +ENV LANG C.UTF-8 + +# gpg: key F73C700D: public key "Larry Hastings " imported +RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 97FC712E4C024BBEA48A61ED3A5CA953F73C700D + +ENV PYTHON_VERSION 3.5.0b3 + +# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" +ENV PYTHON_PIP_VERSION 7.1.0 + +RUN set -x \ + && mkdir -p /usr/src/python \ + && curl -SL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \ + && curl -SL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" -o python.tar.xz.asc \ + && gpg --verify python.tar.xz.asc \ + && tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \ + && rm python.tar.xz* \ + && cd /usr/src/python \ + && ./configure --enable-shared --enable-unicode=ucs4 \ + && make -j$(nproc) \ + && make install \ + && ldconfig \ + && pip3 install --no-cache-dir --upgrade --ignore-installed pip==$PYTHON_PIP_VERSION \ + && find /usr/local \ + \( -type d -a -name test -o -name tests \) \ + -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \ + -exec rm -rf '{}' + \ + && rm -rf /usr/src/python + +# make some useful symlinks that are expected to exist +RUN cd /usr/local/bin \ + && ln -s easy_install-3.4 easy_install \ + && ln -s idle3 idle \ + && ln -s pydoc3 pydoc \ + && ln -s python3 python \ + && ln -s python-config3 python-config + +CMD ["python3"] diff --git a/3.5/onbuild/Dockerfile b/3.5/onbuild/Dockerfile new file mode 100644 index 0000000..536d848 --- /dev/null +++ b/3.5/onbuild/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.5 + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +ONBUILD COPY requirements.txt /usr/src/app/ +ONBUILD RUN pip install --no-cache-dir -r requirements.txt + +ONBUILD COPY . /usr/src/app diff --git a/3.5/slim/Dockerfile b/3.5/slim/Dockerfile new file mode 100644 index 0000000..bcbc99b --- /dev/null +++ b/3.5/slim/Dockerfile @@ -0,0 +1,66 @@ +FROM debian:jessie + +# remove several traces of debian python +RUN apt-get purge -y python.* + +# http://bugs.python.org/issue19846 +# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK. +ENV LANG C.UTF-8 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + libsqlite3-0 \ + libssl1.0.0 \ + && rm -rf /var/lib/apt/lists/* + +# gpg: key F73C700D: public key "Larry Hastings " imported +RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 97FC712E4C024BBEA48A61ED3A5CA953F73C700D + +ENV PYTHON_VERSION 3.5.0b3 + +# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" +ENV PYTHON_PIP_VERSION 7.1.0 + +RUN set -x \ + && buildDeps=' \ + curl \ + gcc \ + libbz2-dev \ + libc6-dev \ + libncurses-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + make \ + xz-utils \ + zlib1g-dev \ + ' \ + && apt-get update && apt-get install -y $buildDeps --no-install-recommends && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /usr/src/python \ + && curl -SL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \ + && curl -SL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" -o python.tar.xz.asc \ + && gpg --verify python.tar.xz.asc \ + && tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \ + && rm python.tar.xz* \ + && cd /usr/src/python \ + && ./configure --enable-shared --enable-unicode=ucs4 \ + && make -j$(nproc) \ + && make install \ + && ldconfig \ + && pip3 install --no-cache-dir --upgrade --ignore-installed pip==$PYTHON_PIP_VERSION \ + && find /usr/local \ + \( -type d -a -name test -o -name tests \) \ + -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \ + -exec rm -rf '{}' + \ + && apt-get purge -y --auto-remove $buildDeps \ + && rm -rf /usr/src/python + +# make some useful symlinks that are expected to exist +RUN cd /usr/local/bin \ + && ln -s easy_install-3.4 easy_install \ + && ln -s idle3 idle \ + && ln -s pydoc3 pydoc \ + && ln -s python3 python \ + && ln -s python-config3 python-config + +CMD ["python3"] diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 12d78a2..62c9506 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -18,7 +18,13 @@ echo '# maintainer: InfoSiftr (@infosiftr)' for version in "${versions[@]}"; do commit="$(git log -1 --format='format:%H' -- "$version")" fullVersion="$(grep -m1 'ENV PYTHON_VERSION ' "$version/Dockerfile" | cut -d' ' -f3)" - versionAliases=( $fullVersion $version ${aliases[$version]} ) + + versionAliases=() + while [ "$fullVersion" != "$version" -a "${fullVersion%[.a-z-]*}" != "$fullVersion" ]; do + versionAliases+=( $fullVersion ) + fullVersion="${fullVersion%[.a-z-]*}" + done + versionAliases+=( $version ${aliases[$version]} ) echo for va in "${versionAliases[@]}"; do @@ -26,6 +32,7 @@ for version in "${versions[@]}"; do done for variant in onbuild slim wheezy; do + [ -f "$version/$variant/Dockerfile" ] || continue commit="$(git log -1 --format='format:%H' -- "$version/$variant")" echo for va in "${versionAliases[@]}"; do diff --git a/update.sh b/update.sh index 02e8d0e..92645da 100755 --- a/update.sh +++ b/update.sh @@ -16,6 +16,10 @@ for version in "${versions[@]}"; do # Python 3.4.1 fullVersion="$(curl -sSL 'https://www.python.org/downloads/' | awk -F 'Python |' '/]+>Python '"$version"'./ { print $2 }' | grep -v 'rc' | sort -V | tail -1)" # TODO figure out a better want to handle RCs than just filtering them out wholesale + if [ -z "$fullVersion" ]; then + echo >&2 "warning: cannot find $version" + continue + fi ( set -x sed -ri '