Update par files in a Docker container with known-good Python interpreter
diff --git a/tools/update_tools/Dockerfile b/tools/update_tools/Dockerfile new file mode 100644 index 0000000..4439eb8 --- /dev/null +++ b/tools/update_tools/Dockerfile
@@ -0,0 +1,21 @@ +FROM gcr.io/gcp-runtimes/ubuntu_16_0_4:latest + +# Install Bazel (https://docs.bazel.build/versions/master/install-ubuntu.html) +RUN apt-get update -y && apt-get install openjdk-8-jdk -y +RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list +RUN curl https://bazel.build/bazel-release.pub.gpg | apt-key add - +RUN apt-get update -y && apt-get install bazel -y +RUN bazel help info >/dev/null 2>&1 + +# Install Python 2.7.12 +RUN apt-get install python -y + +# Build par files. We have a source and work directory to avoid +# stomping on other files as root. +CMD cp -r /opt/rules_python_source /opt/rules_python && \ + cd /opt/rules_python && \ + bazel clean && \ + bazel build //rules_python:piptool.par //rules_python:whltool.par && \ + cp bazel-bin/rules_python/piptool.par bazel-bin/rules_python/whltool.par /opt/rules_python_source/tools/ && \ + chown --reference=/opt/rules_python_source/update_tools.sh /opt/rules_python_source/tools/piptool.par /opt/rules_python_source/tools/whltool.par +
diff --git a/update_tools.sh b/update_tools.sh index 5f00e9c..748c9b7 100755 --- a/update_tools.sh +++ b/update_tools.sh
@@ -16,6 +16,18 @@ set -euo pipefail -bazel build //rules_python:piptool.par //rules_python:whltool.par -cp bazel-bin/rules_python/piptool.par tools/piptool.par -cp bazel-bin/rules_python/whltool.par tools/whltool.par +usage() { + echo "Usage: $0 [--nodocker]" 1>&2 + exit 1 +} + +if [ "$#" -eq 0 ] ; then + docker build -f tools/update_tools/Dockerfile --tag rules_python:update_tools . + docker run -v"$PWD":/opt/rules_python_source rules_python:update_tools +elif [ "$#" -eq 1 -a "$1" == "--nodocker" ] ; then + bazel build //rules_python:piptool.par //rules_python:whltool.par + cp bazel-bin/rules_python/piptool.par tools/piptool.par + cp bazel-bin/rules_python/whltool.par tools/whltool.par +else + usage +fi