diff --git a/autoconf/Dockerfile b/autoconf/Dockerfile index da9abba..9e809fb 100644 --- a/autoconf/Dockerfile +++ b/autoconf/Dockerfile @@ -3,6 +3,9 @@ FROM docker.io/library/ubuntu:24.04 ARG AUTOCONF_VERSION="2.72" ARG AUTOCONF_ARCHIVE_VERSION="2023.02.20" ARG AUTOMAKE_VERSION="1.16.5" +# Specific revision of https://git.savannah.gnu.org/git/config.git +# for config.guess and config.sub. +ARG CONFIG_GIT_REV="00b15927496058d23e6258a28d8996f87cf1f191" LABEL org.opencontainers.image.source="https://github.com/python/cpython-devcontainers" LABEL org.opencontainers.image.base.name="docker.io/library/ubuntu:22.04" @@ -40,6 +43,15 @@ RUN PATCH_VERBOSE=1 curl https://ftp.gnu.org/gnu/autoconf-archive/autoconf-archi && ./configure --prefix=/usr/local \ && make \ && make install +ADD --chmod=755 https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=${CONFIG_GIT_REV} \ + /usr/local/share/autoconf/build-aux/config.guess +ADD --chmod=755 https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=${CONFIG_GIT_REV} \ + /usr/local/share/autoconf/build-aux/config.sub +COPY config.sub.patch . +RUN p=$(pwd)/config.sub.patch \ + && cd /usr/local/share/autoconf/build-aux \ + && patch -p1 <$p \ + && rm "$p" # https://stackoverflow.com/questions/8811381/possibly-undefined-macro-ac-msg-error/49103418#49103418 RUN cp /usr/local/share/aclocal/*.m4 /usr/share/aclocal \ diff --git a/autoconf/config.sub.patch b/autoconf/config.sub.patch new file mode 100644 index 0000000..3cbd448 --- /dev/null +++ b/autoconf/config.sub.patch @@ -0,0 +1,64 @@ +From 7a7c6fc48512405ede8b2db440b702e866364b00 Mon Sep 17 00:00:00 2001 +From: Russell Keith-Magee +Date: Mon, 26 Feb 2024 09:21:10 +0800 +Subject: [PATCH] config.sub: Include support for arm64_32 and iOS/tvOS/watchOS + simulators + + * Normalise the watchOS CPU architecture descriptor used by + Apple (`arm64_32`). + * Accept the `-simulator` suffix for descriptors for iOS, tvOS and + watchOS. + +The following is the list of compiler triples generated by Apple's +clang toolchains for iOS 12.0, tvOS 9.0, and watchOS 4.0: + + * `arm64-apple-ios12.0` + * `x86_64-apple-ios12.0-simulator` + * `arm64-apple-ios12.0-simulator` + * `arm64-apple-tvos9.0` + * `x86_64-apple-tvos9.0-simulator` + * `arm64-apple-tvos9.0-simulator` + * `arm64_32-apple-watchos4.0` + * `arm64-apple-watchos4.0-simulator` + +The `-simulator` suffix is significant because iOS devices and iOS +simulators have a different ABI. It is therefore essential that these +can be differentiated in a compiler triple. +--- + config.sub | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/config.sub b/config.sub +index 4aaae46..335706d 100755 +--- a/config.sub ++++ b/config.sub +@@ -4,7 +4,7 @@ + + # shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale + +-timestamp='2024-05-27' ++timestamp='2025-01-06' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -1194,7 +1194,7 @@ case $cpu-$vendor in + xscale-* | xscalee[bl]-*) + cpu=`echo "$cpu" | sed 's/^xscale/arm/'` + ;; +- arm64-* | aarch64le-*) ++ arm64-* | aarch64le-* | arm64_32-*) + cpu=aarch64 + ;; + +@@ -2249,6 +2249,8 @@ case $kernel-$os-$obj in + ;; + *-eabi*- | *-gnueabi*-) + ;; ++ ios*-simulator- | tvos*-simulator- | watchos*-simulator- ) ++ ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format +-- +2.47.1 + diff --git a/autoconf/entry.sh b/autoconf/entry.sh index 5075608..d73b08c 100755 --- a/autoconf/entry.sh +++ b/autoconf/entry.sh @@ -22,6 +22,14 @@ if [ "$#" = "0" ]; then fi echo "Rebuilding configure script using $($AUTOCONF --version | head -n 1)" + set -x + # autoreconf's '--force' option doesn't affect any of the files installed + # by the '--install' option. Remove the files to truly force them to be + # updated so that the CPython repo doesn't drift from this repo. + rm -f /src/aclocal.m4 + rm -f /src/config.guess + rm -f /src/config.sub + rm -f /src/install-sh exec $AUTORECONF -ivf -Werror $@ fi