diff --git a/.travis.yml b/.travis.yml index 56cc07d27..192c37286 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ services: docker env: - VERSION=3.5 VARIANT= - VERSION=3.5 VARIANT=slim + - VERSION=3.5 VARIANT=alpine - VERSION=3.4 VARIANT= - VERSION=3.4 VARIANT=slim - VERSION=3.4 VARIANT=wheezy diff --git a/3.5/Dockerfile b/3.5/Dockerfile index 880fb05da..eaf89f4d3 100644 --- a/3.5/Dockerfile +++ b/3.5/Dockerfile @@ -16,12 +16,13 @@ ENV PYTHON_VERSION 3.5.1 ENV PYTHON_PIP_VERSION 7.1.2 RUN set -x \ - && mkdir -p /usr/src/python \ && curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \ && curl -fSL "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 \ + && mkdir -p /usr/src/python \ && 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) \ diff --git a/3.5/alpine/Dockerfile b/3.5/alpine/Dockerfile new file mode 100644 index 000000000..4228ccec5 --- /dev/null +++ b/3.5/alpine/Dockerfile @@ -0,0 +1,64 @@ +FROM alpine:3.3 + +# gpg: key F73C700D: public key "Larry Hastings " imported +ENV GPG_KEY 97FC712E4C024BBEA48A61ED3A5CA953F73C700D + +ENV PYTHON_VERSION 3.5.1 + +# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" +ENV PYTHON_PIP_VERSION 7.1.2 + +RUN set -ex \ + && apk add --no-cache --virtual .fetch-deps curl gnupg \ + && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \ + && curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \ + && curl -fSL "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 \ + && mkdir -p /usr/src \ + && tar -xJC /usr/src -f python.tar.xz \ + && mv "/usr/src/Python-$PYTHON_VERSION" /usr/src/python \ + && rm python.tar.xz* \ + && apk del .fetch-deps \ + && rm -r ~/.gnupg \ + \ + && apk add --no-cache --virtual .build-deps \ + bzip2-dev \ + gcc \ + libc-dev \ + libedit-dev \ + linux-headers \ + make \ + ncurses-dev \ + openssl-dev \ + pax-utils \ + sqlite-dev \ + zlib-dev \ + && cd /usr/src/python \ + && ./configure --enable-shared --enable-unicode=ucs4 \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + && 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 '{}' + \ + && runDeps="$( \ + scanelf --needed --nobanner --recursive /usr/local \ + | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ + | sort -u \ + | xargs -r apk info --installed \ + | sort -u \ + )" \ + && apk add --virtual .python-rundeps $runDeps \ + && apk del .build-deps \ + && rm -rf /usr/src/python + +# make some useful symlinks that are expected to exist +RUN cd /usr/local/bin \ + && ln -s easy_install-3.5 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/slim/Dockerfile b/3.5/slim/Dockerfile index 390913e61..336afb633 100644 --- a/3.5/slim/Dockerfile +++ b/3.5/slim/Dockerfile @@ -36,12 +36,13 @@ RUN set -x \ 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 -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \ && curl -fSL "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 \ + && mkdir -p /usr/src/python \ && 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) \