From 82bf05d215dfcc2ef779395bf79b5fc23d5b9555 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 10 Feb 2021 18:36:04 +0100 Subject: [PATCH 01/10] bpo-43112: detect musl as a separate SOABI musl libc and gnu libc are not ABI compatible so we need set different SOABI for musl and not simply assume that all linux is linux-gnu. Replace linux-gnu with the detected os for the build from config.guess for linux-musl*. --- configure.ac | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac index 60c5d8e0b5b034..0e6b617080123b 100644 --- a/configure.ac +++ b/configure.ac @@ -860,6 +860,11 @@ EOF if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` + case "$build_os" in + linux-musl*) + PLATFORM_TRIPLET=`echo "$PLATFORM_TRIPLET" | sed 's/linux-gnu/linux-musl/'` + ;; + esac AC_MSG_RESULT([$PLATFORM_TRIPLET]) else AC_MSG_RESULT([none]) From a2f26c78cfa7e41dea21d7adcf59809b3b933adf Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Wed, 10 Feb 2021 17:54:06 +0000 Subject: [PATCH 02/10] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20b?= =?UTF-8?q?lurb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst diff --git a/Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst b/Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst new file mode 100644 index 00000000000000..8da82f85b49088 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst @@ -0,0 +1 @@ +Detect musl libc as a separate SOABI. \ No newline at end of file From e45d9f5889a49bb66d67d7a79df364fe9e1accd1 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 10 Feb 2021 20:04:11 +0100 Subject: [PATCH 03/10] regenerate configure --- configure | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 8e0cc71a50480d..4183b10fbb17bc 100755 --- a/configure +++ b/configure @@ -789,6 +789,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -910,6 +911,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1162,6 +1164,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1299,7 +1310,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1452,6 +1463,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -5351,6 +5363,11 @@ EOF if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` + case "$build_os" in + linux-musl*) + PLATFORM_TRIPLET=`echo "$PLATFORM_TRIPLET" | sed 's/linux-gnu/linux-musl/'` + ;; + esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PLATFORM_TRIPLET" >&5 $as_echo "$PLATFORM_TRIPLET" >&6; } else From 85e060266dae2e5e6bbbd7f5fe828f8916651b8b Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 12 Feb 2021 10:55:48 +0100 Subject: [PATCH 04/10] Revert the runstate changes in the generated configure --- configure | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/configure b/configure index 4183b10fbb17bc..cb1ef8612dcb78 100755 --- a/configure +++ b/configure @@ -789,7 +789,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -911,7 +910,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1164,15 +1162,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1310,7 +1299,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1463,7 +1452,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] From 9db690f4bb6931b5e6ce3000ad3f924e4dc49a17 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 26 Nov 2021 09:51:45 +0100 Subject: [PATCH 05/10] Fix sysconfig test to work with -musl SOABI commit a8e2c0c0698a (bpo-43112: detect musl as a separate SOABI) introduced a new suffix to shared libs with musl libc. Adjust the sysconfig test accordingly. --- Lib/test/test_sysconfig.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index e279957e26ced4..83ce74aa6ffae1 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -387,10 +387,13 @@ def test_triplet_in_ext_suffix(self): if re.match('(i[3-6]86|x86_64)$', machine): if ctypes.sizeof(ctypes.c_char_p()) == 4: self.assertTrue(suffix.endswith('i386-linux-gnu.so') or - suffix.endswith('x86_64-linux-gnux32.so'), + suffix.endswith('x86_64-linux-gnux32.so') or + suffix.endswith('i386-linux-musl.so'), suffix) else: # 8 byte pointer size - self.assertTrue(suffix.endswith('x86_64-linux-gnu.so'), suffix) + self.assertTrue(suffix.endswith('x86_64-linux-gnu.so') or + suffix.endswith('x86_64-linux-musl.so'), + suffix) @unittest.skipUnless(sys.platform == 'darwin', 'OS X-specific test') def test_osx_ext_suffix(self): From eb307dc09c6b07c1bca41961b31aa0857c7432a3 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 14 Jan 2022 13:16:44 -0800 Subject: [PATCH 06/10] Update Lib/test/test_sysconfig.py --- Lib/test/test_sysconfig.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 83ce74aa6ffae1..ef1bbe1ed5d2a8 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -391,9 +391,9 @@ def test_triplet_in_ext_suffix(self): suffix.endswith('i386-linux-musl.so'), suffix) else: # 8 byte pointer size - self.assertTrue(suffix.endswith('x86_64-linux-gnu.so') or - suffix.endswith('x86_64-linux-musl.so'), - suffix) + expected_suffixes = 'x86_64-linux-gnu.so', 'x86_64-linux-musl.so' + self.assertTrue(suffix.endswith(expected_suffixes), + f'unexpected suffix {suffix!r}')) @unittest.skipUnless(sys.platform == 'darwin', 'OS X-specific test') def test_osx_ext_suffix(self): From 12bc9639c1746d7d39ea47d2e66f678f684dd16e Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 14 Jan 2022 13:16:52 -0800 Subject: [PATCH 07/10] Update Lib/test/test_sysconfig.py --- Lib/test/test_sysconfig.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index ef1bbe1ed5d2a8..a21c745bd22cb6 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -389,7 +389,7 @@ def test_triplet_in_ext_suffix(self): self.assertTrue(suffix.endswith('i386-linux-gnu.so') or suffix.endswith('x86_64-linux-gnux32.so') or suffix.endswith('i386-linux-musl.so'), - suffix) + f'unexpected suffix {suffix!r}') else: # 8 byte pointer size expected_suffixes = 'x86_64-linux-gnu.so', 'x86_64-linux-musl.so' self.assertTrue(suffix.endswith(expected_suffixes), From 6920cd46bf6ef8d90d91794cd68573376a778dee Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 25 Jan 2022 16:08:19 +0100 Subject: [PATCH 08/10] Fix unmatched ) error in Lib/test/test_sysconfig.py --- Lib/test/test_sysconfig.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index a21c745bd22cb6..6d8f3520cac21d 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -393,7 +393,7 @@ def test_triplet_in_ext_suffix(self): else: # 8 byte pointer size expected_suffixes = 'x86_64-linux-gnu.so', 'x86_64-linux-musl.so' self.assertTrue(suffix.endswith(expected_suffixes), - f'unexpected suffix {suffix!r}')) + f'unexpected suffix {suffix!r}') @unittest.skipUnless(sys.platform == 'darwin', 'OS X-specific test') def test_osx_ext_suffix(self): From 58b19dad262fa26d02594646b40e3403d8dd18ba Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 25 Jan 2022 17:01:12 +0100 Subject: [PATCH 09/10] Simplify test for suffixes in Lib/test/test_sysconfig.py --- Lib/test/test_sysconfig.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 6d8f3520cac21d..a0d114e67ad144 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -386,14 +386,11 @@ def test_triplet_in_ext_suffix(self): self.assertTrue('linux' in suffix, suffix) if re.match('(i[3-6]86|x86_64)$', machine): if ctypes.sizeof(ctypes.c_char_p()) == 4: - self.assertTrue(suffix.endswith('i386-linux-gnu.so') or - suffix.endswith('x86_64-linux-gnux32.so') or - suffix.endswith('i386-linux-musl.so'), - f'unexpected suffix {suffix!r}') + expected_suffixes = 'i386-linux-gnu.so', 'x86_64-linux-gnux32.so', 'i386-linux-musl.so' else: # 8 byte pointer size expected_suffixes = 'x86_64-linux-gnu.so', 'x86_64-linux-musl.so' - self.assertTrue(suffix.endswith(expected_suffixes), - f'unexpected suffix {suffix!r}') + self.assertTrue(suffix.endswith(expected_suffixes), + f'unexpected suffix {suffix!r}') @unittest.skipUnless(sys.platform == 'darwin', 'OS X-specific test') def test_osx_ext_suffix(self): From 011cbe96b935b61a6eb0504d7fcb499b622ac9f8 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 26 Jan 2022 18:18:13 +0100 Subject: [PATCH 10/10] Update Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Éric --- Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst b/Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst index 8da82f85b49088..0e250edfa3ec1f 100644 --- a/Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst +++ b/Misc/NEWS.d/next/Build/2021-02-10-17-54-04.bpo-43112.H5Lat6.rst @@ -1 +1 @@ -Detect musl libc as a separate SOABI. \ No newline at end of file +Detect musl libc as a separate SOABI (tagged as ``linux-musl``). \ No newline at end of file