diff --git a/3.12-rc/alpine3.17/Dockerfile b/3.12-rc/alpine3.17/Dockerfile index 032f53a30..e9e6f3a1b 100644 --- a/3.12-rc/alpine3.17/Dockerfile +++ b/3.12-rc/alpine3.17/Dockerfile @@ -21,7 +21,7 @@ RUN set -eux; \ ; ENV GPG_KEY 7169605F62C751356D054A26A821E680E5FA6305 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN set -eux; \ \ @@ -130,9 +130,7 @@ RUN set -eux; \ done # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -149,7 +147,6 @@ RUN set -eux; \ --no-cache-dir \ --no-compile \ "pip==$PYTHON_PIP_VERSION" \ - "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ ; \ rm -f get-pip.py; \ \ diff --git a/3.12-rc/alpine3.18/Dockerfile b/3.12-rc/alpine3.18/Dockerfile index d147a3cbf..8dc6a6b58 100644 --- a/3.12-rc/alpine3.18/Dockerfile +++ b/3.12-rc/alpine3.18/Dockerfile @@ -21,7 +21,7 @@ RUN set -eux; \ ; ENV GPG_KEY 7169605F62C751356D054A26A821E680E5FA6305 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN set -eux; \ \ @@ -130,9 +130,7 @@ RUN set -eux; \ done # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -149,7 +147,6 @@ RUN set -eux; \ --no-cache-dir \ --no-compile \ "pip==$PYTHON_PIP_VERSION" \ - "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ ; \ rm -f get-pip.py; \ \ diff --git a/3.12-rc/bullseye/Dockerfile b/3.12-rc/bullseye/Dockerfile index 981a49981..8d17c5abd 100644 --- a/3.12-rc/bullseye/Dockerfile +++ b/3.12-rc/bullseye/Dockerfile @@ -24,7 +24,7 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/* ENV GPG_KEY 7169605F62C751356D054A26A821E680E5FA6305 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN set -eux; \ \ @@ -100,9 +100,7 @@ RUN set -eux; \ done # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -119,7 +117,6 @@ RUN set -eux; \ --no-cache-dir \ --no-compile \ "pip==$PYTHON_PIP_VERSION" \ - "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ ; \ rm -f get-pip.py; \ \ diff --git a/3.12-rc/buster/Dockerfile b/3.12-rc/buster/Dockerfile index 5ab46c165..21ae2a48d 100644 --- a/3.12-rc/buster/Dockerfile +++ b/3.12-rc/buster/Dockerfile @@ -24,7 +24,7 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/* ENV GPG_KEY 7169605F62C751356D054A26A821E680E5FA6305 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN set -eux; \ \ @@ -100,9 +100,7 @@ RUN set -eux; \ done # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -119,7 +117,6 @@ RUN set -eux; \ --no-cache-dir \ --no-compile \ "pip==$PYTHON_PIP_VERSION" \ - "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ ; \ rm -f get-pip.py; \ \ diff --git a/3.12-rc/slim-bullseye/Dockerfile b/3.12-rc/slim-bullseye/Dockerfile index 1409e0b80..2aec0c95c 100644 --- a/3.12-rc/slim-bullseye/Dockerfile +++ b/3.12-rc/slim-bullseye/Dockerfile @@ -24,7 +24,7 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/* ENV GPG_KEY 7169605F62C751356D054A26A821E680E5FA6305 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN set -eux; \ \ @@ -134,9 +134,7 @@ RUN set -eux; \ done # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -162,7 +160,6 @@ RUN set -eux; \ --no-cache-dir \ --no-compile \ "pip==$PYTHON_PIP_VERSION" \ - "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ ; \ rm -f get-pip.py; \ \ diff --git a/3.12-rc/slim-buster/Dockerfile b/3.12-rc/slim-buster/Dockerfile index 9f1b87193..40cab1b0e 100644 --- a/3.12-rc/slim-buster/Dockerfile +++ b/3.12-rc/slim-buster/Dockerfile @@ -24,7 +24,7 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/* ENV GPG_KEY 7169605F62C751356D054A26A821E680E5FA6305 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN set -eux; \ \ @@ -134,9 +134,7 @@ RUN set -eux; \ done # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -162,7 +160,6 @@ RUN set -eux; \ --no-cache-dir \ --no-compile \ "pip==$PYTHON_PIP_VERSION" \ - "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ ; \ rm -f get-pip.py; \ \ diff --git a/3.12-rc/windows/windowsservercore-1809/Dockerfile b/3.12-rc/windows/windowsservercore-1809/Dockerfile index cfeffd978..b0c71dfce 100644 --- a/3.12-rc/windows/windowsservercore-1809/Dockerfile +++ b/3.12-rc/windows/windowsservercore-1809/Dockerfile @@ -11,7 +11,7 @@ SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPref # https://github.com/docker-library/python/pull/557 ENV PYTHONIOENCODING UTF-8 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN $url = ('https://www.python.org/ftp/python/{0}/python-{1}-amd64.exe' -f ($env:PYTHON_VERSION -replace '[a-z]+[0-9]*$', ''), $env:PYTHON_VERSION); \ Write-Host ('Downloading {0} ...' -f $url); \ @@ -51,9 +51,7 @@ RUN $url = ('https://www.python.org/ftp/python/{0}/python-{1}-amd64.exe' -f ($en Write-Host 'Complete.' # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -75,7 +73,6 @@ RUN Write-Host ('Downloading get-pip.py ({0}) ...' -f $env:PYTHON_GET_PIP_URL); --no-cache-dir \ --no-compile \ ('pip=={0}' -f $env:PYTHON_PIP_VERSION) \ - ('setuptools=={0}' -f $env:PYTHON_SETUPTOOLS_VERSION) \ ; \ Remove-Item get-pip.py -Force; \ \ diff --git a/3.12-rc/windows/windowsservercore-ltsc2022/Dockerfile b/3.12-rc/windows/windowsservercore-ltsc2022/Dockerfile index 25def3c83..c27c25a0a 100644 --- a/3.12-rc/windows/windowsservercore-ltsc2022/Dockerfile +++ b/3.12-rc/windows/windowsservercore-ltsc2022/Dockerfile @@ -11,7 +11,7 @@ SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPref # https://github.com/docker-library/python/pull/557 ENV PYTHONIOENCODING UTF-8 -ENV PYTHON_VERSION 3.12.0a7 +ENV PYTHON_VERSION 3.12.0b1 RUN $url = ('https://www.python.org/ftp/python/{0}/python-{1}-amd64.exe' -f ($env:PYTHON_VERSION -replace '[a-z]+[0-9]*$', ''), $env:PYTHON_VERSION); \ Write-Host ('Downloading {0} ...' -f $url); \ @@ -51,9 +51,7 @@ RUN $url = ('https://www.python.org/ftp/python/{0}/python-{1}-amd64.exe' -f ($en Write-Host 'Complete.' # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" -ENV PYTHON_PIP_VERSION 23.0.1 -# https://github.com/docker-library/python/issues/365 -ENV PYTHON_SETUPTOOLS_VERSION 65.5.1 +ENV PYTHON_PIP_VERSION 23.1.2 # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py ENV PYTHON_GET_PIP_SHA256 96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207 @@ -75,7 +73,6 @@ RUN Write-Host ('Downloading get-pip.py ({0}) ...' -f $env:PYTHON_GET_PIP_URL); --no-cache-dir \ --no-compile \ ('pip=={0}' -f $env:PYTHON_PIP_VERSION) \ - ('setuptools=={0}' -f $env:PYTHON_SETUPTOOLS_VERSION) \ ; \ Remove-Item get-pip.py -Force; \ \ diff --git a/Dockerfile-linux.template b/Dockerfile-linux.template index 8b5102b54..c3f206af3 100644 --- a/Dockerfile-linux.template +++ b/Dockerfile-linux.template @@ -306,8 +306,10 @@ RUN set -eux; \ # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" ENV PYTHON_PIP_VERSION {{ .pip.version }} +{{ if .setuptools then ( -}} # https://github.com/docker-library/python/issues/365 ENV PYTHON_SETUPTOOLS_VERSION {{ .setuptools.version }} +{{ ) else "" end -}} # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL {{ .pip.url }} ENV PYTHON_GET_PIP_SHA256 {{ .pip.sha256 }} @@ -337,7 +339,9 @@ RUN set -eux; \ --no-cache-dir \ --no-compile \ "pip==$PYTHON_PIP_VERSION" \ +{{ if .setuptools then ( -}} "setuptools==$PYTHON_SETUPTOOLS_VERSION" \ +{{ ) else "" end -}} ; \ rm -f get-pip.py; \ \ diff --git a/Dockerfile-windows.template b/Dockerfile-windows.template index 556f6705e..faa47356e 100644 --- a/Dockerfile-windows.template +++ b/Dockerfile-windows.template @@ -46,8 +46,10 @@ RUN $url = ('https://www.python.org/ftp/python/{0}/python-{1}-amd64.exe' -f ($en # if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value ''" ENV PYTHON_PIP_VERSION {{ .pip.version }} +{{ if .setuptools then ( -}} # https://github.com/docker-library/python/issues/365 ENV PYTHON_SETUPTOOLS_VERSION {{ .setuptools.version }} +{{ ) else "" end -}} # https://github.com/pypa/get-pip ENV PYTHON_GET_PIP_URL {{ .pip.url }} ENV PYTHON_GET_PIP_SHA256 {{ .pip.sha256 }} @@ -69,7 +71,9 @@ RUN Write-Host ('Downloading get-pip.py ({0}) ...' -f $env:PYTHON_GET_PIP_URL); --no-cache-dir \ --no-compile \ ('pip=={0}' -f $env:PYTHON_PIP_VERSION) \ +{{ if .setuptools then ( -}} ('setuptools=={0}' -f $env:PYTHON_SETUPTOOLS_VERSION) \ +{{ ) else "" end -}} ; \ Remove-Item get-pip.py -Force; \ \ diff --git a/versions.json b/versions.json index 927ed2ab7..6453e4dbe 100644 --- a/versions.json +++ b/versions.json @@ -45,10 +45,7 @@ "pip": { "sha256": "96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207", "url": "https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py", - "version": "23.0.1" - }, - "setuptools": { - "version": "65.5.1" + "version": "23.1.2" }, "variants": [ "bullseye", @@ -60,7 +57,7 @@ "windows/windowsservercore-ltsc2022", "windows/windowsservercore-1809" ], - "version": "3.12.0a7" + "version": "3.12.0b1" }, "3.7": { "pip": { diff --git a/versions.sh b/versions.sh index 209690cd4..749aca617 100755 --- a/versions.sh +++ b/versions.sh @@ -125,34 +125,53 @@ for version in "${versions[@]}"; do | grep -E '^[^[:space:]]+_VERSION[[:space:]]*=' )" pipVersion="$(sed -nre 's/^_PIP_VERSION[[:space:]]*=[[:space:]]*"(.*?)".*/\1/p' <<<"$ensurepipVersions")" - setuptoolsVersion="$(sed -nre 's/^_SETUPTOOLS_VERSION[[:space:]]*=[[:space:]]*"(.*?)".*/\1/p' <<<"$ensurepipVersions")" - # make sure we got something - if [ -z "$pipVersion" ] || [ -z "$setuptoolsVersion" ]; then - echo >&2 "error: $version: missing either pip ($pipVersion) or setuptools ($setuptoolsVersion) version" + if [ -z "$pipVersion" ]; then + echo >&2 "error: $version: missing pip version" exit 1 fi - # make sure what we got is valid versions - if ! wget -q -O /dev/null -o /dev/null --spider "https://pypi.org/pypi/pip/$pipVersion/json" || ! wget -q -O /dev/null -o /dev/null --spider "https://pypi.org/pypi/setuptools/$setuptoolsVersion/json"; then - echo >&2 "error: $version: either pip ($pipVersion) or setuptools ($setuptoolsVersion) version seems to be invalid?" + if ! wget -q -O /dev/null -o /dev/null --spider "https://pypi.org/pypi/pip/$pipVersion/json"; then + echo >&2 "error: $version: pip version ($pipVersion) seems to be invalid?" exit 1 fi - # TODO remove this once Python 3.7 and 3.8 are either "new enough setuptools" or EOL - setuptoolsVersion="$( - { - echo "$setuptoolsVersion" - echo "$minimumSetuptoolsVersion" - } | sort -rV | head -1 - )" + setuptoolsVersion="$(sed -nre 's/^_SETUPTOOLS_VERSION[[:space:]]*=[[:space:]]*"(.*?)".*/\1/p' <<<"$ensurepipVersions")" + case "$rcVersion" in + 3.7 | 3.8 | 3.9 | 3.10 | 3.11) + if [ -z "$setuptoolsVersion" ]; then + echo >&2 "error: $version: missing setuptools version" + exit 1 + fi + if ! wget -q -O /dev/null -o /dev/null --spider "https://pypi.org/pypi/setuptools/$setuptoolsVersion/json"; then + echo >&2 "error: $version: setuptools version ($setuptoolsVersion) seems to be invalid?" + exit 1 + fi - # https://github.com/docker-library/python/issues/781 (TODO remove this once 3.10, 3.11, and 3.12 embed a newer setuptools and this section no longer applies) - if [ "$setuptoolsVersion" = '65.5.0' ]; then - setuptoolsVersion='65.5.1' - fi + # TODO remove this once Python 3.7 and 3.8 are either "new enough setuptools" or EOL + setuptoolsVersion="$( + { + echo "$setuptoolsVersion" + echo "$minimumSetuptoolsVersion" + } | sort -rV | head -1 + )" + + # https://github.com/docker-library/python/issues/781 (TODO remove this if 3.10 and 3.11 embed a newer setuptools and this section no longer applies) + if [ "$setuptoolsVersion" = '65.5.0' ]; then + setuptoolsVersion='65.5.1' + fi + ;; + + *) + # https://github.com/python/cpython/issues/95299 -> https://github.com/python/cpython/commit/ece20dba120a1a4745721c49f8d7389d4b1ee2a7 + if [ -n "$setuptoolsVersion" ]; then + echo >&2 "error: $version: unexpected setuptools: $setuptoolsVersion" + exit 1 + fi + ;; + esac # TODO wheelVersion, somehow: https://github.com/docker-library/python/issues/365#issuecomment-914669320 - echo "$version: $fullVersion (pip $pipVersion, setuptools $setuptoolsVersion${hasWindows:+, windows})" + echo "$version: $fullVersion (pip $pipVersion${setuptoolsVersion:+, setuptools $setuptoolsVersion}${hasWindows:+, windows})" export fullVersion pipVersion setuptoolsVersion hasWindows json="$(jq <<<"$json" -c ' @@ -163,9 +182,6 @@ for version in "${versions[@]}"; do url: env.getPipUrl, sha256: env.getPipSha256, }, - setuptools: { - version: env.setuptoolsVersion, - }, variants: [ ( "bullseye", @@ -182,7 +198,11 @@ for version in "${versions[@]}"; do | "windows/windowsservercore-" + .) else empty end ], - } + } + if env.setuptoolsVersion != "" then { + setuptools: { + version: env.setuptoolsVersion, + }, + } else {} end ')" done