From 17b3343e0e69597ef19ef0636f24f2eff070da8c Mon Sep 17 00:00:00 2001 From: Woodpecker CI Date: Thu, 12 Jun 2025 07:30:22 +0000 Subject: Woodpecker CI 56431a6959312e549b43ccace3cc194a92b94517 [SKIP CI] --- bmake/.checksum | 2 + bmake/.files | 104 ++++++++++ bmake/abuild | 9 + bmake/separate-tests.patch | 26 +++ libffi/.checksum | 2 +- libffi/abuild | 2 +- libjpeg-turbo/.checksum | 2 +- libjpeg-turbo/abuild | 2 +- lowdown/.checksum | 2 +- lowdown/.files | 11 +- lowdown/abuild | 8 +- lowdown/depends | 1 + pixman/.checksum | 2 +- pixman/.files | 4 +- pixman/abuild | 2 +- python/.checksum | 1 + python/.files | 8 +- python/abuild | 23 +-- python/musl-pgo-tests.patch | 453 ++++++++++++++++++++++++++++++++++++++++++++ unrar/.checksum | 2 +- unrar/abuild | 2 +- vim/.checksum | 2 +- vim/abuild | 2 +- wev/.checksum | 2 +- wev/abuild | 2 +- 25 files changed, 635 insertions(+), 41 deletions(-) create mode 100644 bmake/.checksum create mode 100644 bmake/.files create mode 100644 bmake/abuild create mode 100644 bmake/separate-tests.patch create mode 100644 lowdown/depends create mode 100644 python/musl-pgo-tests.patch diff --git a/bmake/.checksum b/bmake/.checksum new file mode 100644 index 00000000..c2cae176 --- /dev/null +++ b/bmake/.checksum @@ -0,0 +1,2 @@ +8aad5de212a74fa450420673c64c742f714af78fcddefb1bb546d0c52dcd2a50 bmake-20250528.tar.gz +4aa065be4b80c6d4cdfa7078a6d3798e8a927f4d940325c5c2c3c31087018bb5 separate-tests.patch diff --git a/bmake/.files b/bmake/.files new file mode 100644 index 00000000..d004c76a --- /dev/null +++ b/bmake/.files @@ -0,0 +1,104 @@ +drwxr-xr-x root/root usr/ +drwxr-xr-x root/root usr/bin/ +-r-xr-xr-x root/root usr/bin/bmake +drwxr-xr-x root/root usr/share/ +drwxr-xr-x root/root usr/share/man/ +drwxr-xr-x root/root usr/share/man/man1/ +-r--r--r-- root/root usr/share/man/man1/bmake.1.gz +drwxr-xr-x root/root usr/share/mk/ +-r--r--r-- root/root usr/share/mk/auto.dep.mk +-r--r--r-- root/root usr/share/mk/auto.obj.mk +-r--r--r-- root/root usr/share/mk/autoconf.mk +-r--r--r-- root/root usr/share/mk/autodep.mk +lrwxrwxrwx root/root usr/share/mk/bsd.dep.mk -> dep.mk +lrwxrwxrwx root/root usr/share/mk/bsd.doc.mk -> doc.mk +lrwxrwxrwx root/root usr/share/mk/bsd.files.mk -> files.mk +lrwxrwxrwx root/root usr/share/mk/bsd.inc.mk -> inc.mk +lrwxrwxrwx root/root usr/share/mk/bsd.init.mk -> init.mk +lrwxrwxrwx root/root usr/share/mk/bsd.lib.mk -> lib.mk +lrwxrwxrwx root/root usr/share/mk/bsd.links.mk -> links.mk +lrwxrwxrwx root/root usr/share/mk/bsd.man.mk -> man.mk +lrwxrwxrwx root/root usr/share/mk/bsd.nls.mk -> nls.mk +lrwxrwxrwx root/root usr/share/mk/bsd.obj.mk -> obj.mk +lrwxrwxrwx root/root usr/share/mk/bsd.own.mk -> own.mk +lrwxrwxrwx root/root usr/share/mk/bsd.prog.mk -> prog.mk +lrwxrwxrwx root/root usr/share/mk/bsd.subdir.mk -> subdir.mk +-r--r--r-- root/root usr/share/mk/cc-wrap.mk +-r--r--r-- root/root usr/share/mk/ccm.dep.mk +-r--r--r-- root/root usr/share/mk/compiler.mk +-r--r--r-- root/root usr/share/mk/cython.mk +-r--r--r-- root/root usr/share/mk/dep.mk +-r--r--r-- root/root usr/share/mk/dirdeps-cache-update.mk +-r--r--r-- root/root usr/share/mk/dirdeps-options.mk +-r--r--r-- root/root usr/share/mk/dirdeps-targets.mk +-r--r--r-- root/root usr/share/mk/dirdeps.mk +-r--r--r-- root/root usr/share/mk/dirdeps2dplibs.mk +-r--r--r-- root/root usr/share/mk/doc.mk +-r--r--r-- root/root usr/share/mk/dpadd.mk +-r--r--r-- root/root usr/share/mk/files.mk +-r--r--r-- root/root usr/share/mk/final.mk +-r--r--r-- root/root usr/share/mk/gendirdeps.mk +-r--r--r-- root/root usr/share/mk/genfiles.mk +-r--r--r-- root/root usr/share/mk/host-target.mk +-r--r--r-- root/root usr/share/mk/host.libnames.mk +-r--r--r-- root/root usr/share/mk/inc.mk +-r--r--r-- root/root usr/share/mk/init.mk +-r--r--r-- root/root usr/share/mk/install-new.mk +-r-xr-xr-x root/root usr/share/mk/install-sh +-r--r--r-- root/root usr/share/mk/java.mk +-r--r--r-- root/root usr/share/mk/jobs.mk +-r--r--r-- root/root usr/share/mk/ldorder.mk +-r--r--r-- root/root usr/share/mk/lib.mk +-r--r--r-- root/root usr/share/mk/libnames.mk +-r--r--r-- root/root usr/share/mk/libs.mk +-r--r--r-- root/root usr/share/mk/links.mk +-r--r--r-- root/root usr/share/mk/man.mk +-r--r--r-- root/root usr/share/mk/manifest.mk +-r--r--r-- root/root usr/share/mk/meta.autodep.mk +-r--r--r-- root/root usr/share/mk/meta.stage.mk +-r--r--r-- root/root usr/share/mk/meta.subdir.mk +-r--r--r-- root/root usr/share/mk/meta.sys.mk +-r-xr-xr-x root/root usr/share/mk/meta2deps.py +-r-xr-xr-x root/root usr/share/mk/meta2deps.sh +-r-xr-xr-x root/root usr/share/mk/mkopt.sh +-r-xr-xr-x root/root usr/share/mk/newlog.sh +-r--r--r-- root/root usr/share/mk/nls.mk +-r--r--r-- root/root usr/share/mk/obj.mk +-r--r--r-- root/root usr/share/mk/options.mk +-r--r--r-- root/root usr/share/mk/own.mk +-r--r--r-- root/root usr/share/mk/posix.mk +-r--r--r-- root/root usr/share/mk/prlist.mk +-r--r--r-- root/root usr/share/mk/prog.mk +-r--r--r-- root/root usr/share/mk/progs.mk +-r--r--r-- root/root usr/share/mk/rst2htm.mk +-r--r--r-- root/root usr/share/mk/rust.mk +-r--r--r-- root/root usr/share/mk/scripts.mk +-r-xr-xr-x root/root usr/share/mk/setopts.sh +-r--r--r-- root/root usr/share/mk/srctop.mk +-r-xr-xr-x root/root usr/share/mk/stage-install.sh +-r--r--r-- root/root usr/share/mk/subdir.mk +-r--r--r-- root/root usr/share/mk/suffixes.mk +-r--r--r-- root/root usr/share/mk/sys.clean-env.mk +-r--r--r-- root/root usr/share/mk/sys.debug.mk +-r--r--r-- root/root usr/share/mk/sys.dependfile.mk +-r--r--r-- root/root usr/share/mk/sys.dirdeps.mk +-r--r--r-- root/root usr/share/mk/sys.mk +-r--r--r-- root/root usr/share/mk/sys.vars.mk +drwxr-xr-x root/root usr/share/mk/sys/ +-r--r--r-- root/root usr/share/mk/sys/AIX.mk +-r--r--r-- root/root usr/share/mk/sys/Cygwin.mk +-r--r--r-- root/root usr/share/mk/sys/Darwin.mk +-r--r--r-- root/root usr/share/mk/sys/Generic.mk +-r--r--r-- root/root usr/share/mk/sys/HP-UX.mk +-r--r--r-- root/root usr/share/mk/sys/IRIX.mk +-r--r--r-- root/root usr/share/mk/sys/Linux.mk +-r--r--r-- root/root usr/share/mk/sys/NetBSD.mk +-r--r--r-- root/root usr/share/mk/sys/OSF1.mk +-r--r--r-- root/root usr/share/mk/sys/OpenBSD.mk +-r--r--r-- root/root usr/share/mk/sys/SCO_SV.mk +-r--r--r-- root/root usr/share/mk/sys/SunOS.mk +-r--r--r-- root/root usr/share/mk/sys/UnixWare.mk +-r--r--r-- root/root usr/share/mk/target-flags.mk +-r--r--r-- root/root usr/share/mk/warnings.mk +-r--r--r-- root/root usr/share/mk/whats.mk +-r--r--r-- root/root usr/share/mk/yacc.mk diff --git a/bmake/abuild b/bmake/abuild new file mode 100644 index 00000000..9954d480 --- /dev/null +++ b/bmake/abuild @@ -0,0 +1,9 @@ +name=bmake +version=20250528 +release=1 +source="https://www.crufty.net/ftp/pub/sjg/${name}-${version}.tar.gz + separate-tests.patch" + +prebuild() { + sed -i unit-tests/Makefile -e "/deptgt-delete_on_error/d" +} diff --git a/bmake/separate-tests.patch b/bmake/separate-tests.patch new file mode 100644 index 00000000..58a63e84 --- /dev/null +++ b/bmake/separate-tests.patch @@ -0,0 +1,26 @@ +By default tests are run on build and install. Normally, Alpine +tests are invoked separately in a check stage. To allow doing +that this patch disable the automatic test invocations during build and +install. + +diff -upr bmake.orig/boot-strap bmake/boot-strap +--- bmake.orig/boot-strap 2024-03-15 11:26:18.664828810 +0100 ++++ bmake/boot-strap 2024-03-15 11:27:12.081555010 +0100 +@@ -435,9 +435,6 @@ op_build() { + [ -s make-bootstrap.sh ] || op_configure + chmod 755 make-bootstrap.sh || exit 1 + ./make-bootstrap.sh || exit 1 +- case "$op" in +- build) rm -f tested; op_test;; +- esac + } + + op_test() { +@@ -461,7 +458,6 @@ op_clean() { + } + + op_install() { +- op_test + case "$INSTALL_PREFIX,$INSTALL_BIN,$prefix" in + ,$HOST_TARGET/bin,*/$HOST_TARGET) + INSTALL_PREFIX=`dirname $prefix` diff --git a/libffi/.checksum b/libffi/.checksum index c75b6fa4..c42e9e50 100644 --- a/libffi/.checksum +++ b/libffi/.checksum @@ -1 +1 @@ -e9299dfa053b439519f34bd5d11e4fe4fbb31ad5061185246fd47033724b1705 libffi-3.5.0.tar.gz +b538f856236ab334f313a147127e96b28e54e420380ab237b90e585ed697a6dc libffi-3.5.1.tar.gz diff --git a/libffi/abuild b/libffi/abuild index fddff77b..e5826c4f 100644 --- a/libffi/abuild +++ b/libffi/abuild @@ -1,5 +1,5 @@ name=libffi -version=3.5.0 +version=3.5.1 release=1 source="https://github.com/$name/$name/releases/download/v$version/$name-$version.tar.gz" build_opt="--with-gcc-arch=x86-64" diff --git a/libjpeg-turbo/.checksum b/libjpeg-turbo/.checksum index 69f87441..567df5c6 100644 --- a/libjpeg-turbo/.checksum +++ b/libjpeg-turbo/.checksum @@ -1 +1 @@ -3efc14da55c56fc0a6a50f109d9e1ee8a91f5ae7dd17a21d3aebe04a65f3ee96 libjpeg-turbo-3.1.0.tar.gz +5f5a9680e0ad320cc458da85c4207589bb549dfd944d374f39a684f8a0280736 libjpeg-turbo-3.1.1.tar.gz diff --git a/libjpeg-turbo/abuild b/libjpeg-turbo/abuild index 237ab20e..6b9d8593 100644 --- a/libjpeg-turbo/abuild +++ b/libjpeg-turbo/abuild @@ -1,5 +1,5 @@ name=libjpeg-turbo -version=3.1.0 +version=3.1.1 release=1 source="https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$version/$name-$version.tar.gz" build_opt="-DWITH_JPEG8=ON -DCMAKE_INSTALL_LIBDIR=/usr/lib" diff --git a/lowdown/.checksum b/lowdown/.checksum index 493435e3..2706757b 100644 --- a/lowdown/.checksum +++ b/lowdown/.checksum @@ -1 +1 @@ -78297f4b69054eed64b3ccc2c73b33bfbc58df8ee3e3e0e7caf30d1050f5cde2 VERSION_1_4_0.tar.gz +d72e10b007c4c9bb7b5310d345845fdc7b5d178a1729eccd72f52f237f73c992 VERSION_2_0_2.tar.gz diff --git a/lowdown/.files b/lowdown/.files index 2a4c9d7b..a5c6f3bf 100644 --- a/lowdown/.files +++ b/lowdown/.files @@ -5,14 +5,21 @@ drwxr-xr-x root/root usr/bin/ drwxr-xr-x root/root usr/include/ -r--r--r-- root/root usr/include/lowdown.h drwxr-xr-x root/root usr/lib/ -lrwxrwxrwx root/root usr/lib/liblowdown.so -> liblowdown.so.1 --r--r--r-- root/root usr/lib/liblowdown.so.1 +lrwxrwxrwx root/root usr/lib/liblowdown.so -> liblowdown.so.2 +-r--r--r-- root/root usr/lib/liblowdown.so.2 drwxr-xr-x root/root usr/lib/pkgconfig/ -r--r--r-- root/root usr/lib/pkgconfig/lowdown.pc drwxr-xr-x root/root usr/share/ drwxr-xr-x root/root usr/share/lowdown/ drwxr-xr-x root/root usr/share/lowdown/html/ -r--r--r-- root/root usr/share/lowdown/html/default.html +-r--r--r-- root/root usr/share/lowdown/html/sblg.xml +drwxr-xr-x root/root usr/share/lowdown/latex/ +-r--r--r-- root/root usr/share/lowdown/latex/default.latex +drwxr-xr-x root/root usr/share/lowdown/man/ +-r--r--r-- root/root usr/share/lowdown/man/default.man +drwxr-xr-x root/root usr/share/lowdown/ms/ +-r--r--r-- root/root usr/share/lowdown/ms/default.ms drwxr-xr-x root/root usr/share/lowdown/odt/ -r--r--r-- root/root usr/share/lowdown/odt/styles.xml drwxr-xr-x root/root usr/share/man/ diff --git a/lowdown/abuild b/lowdown/abuild index aa5291b6..4700998a 100644 --- a/lowdown/abuild +++ b/lowdown/abuild @@ -1,12 +1,12 @@ name=lowdown -version=1.4.0 +version=2.0.2 _v=$(echo $version | sed 's/\./_/g') release=1 source="https://github.com/kristapsdz/lowdown/archive/refs/tags/VERSION_${_v}.tar.gz" build(){ ./configure PREFIX=/usr MANDIR=/usr/share/man - make - make regress - make install install_libs + bmake + bmake regress + bmake install install_libs } diff --git a/lowdown/depends b/lowdown/depends new file mode 100644 index 00000000..18de1f23 --- /dev/null +++ b/lowdown/depends @@ -0,0 +1 @@ +bmake diff --git a/pixman/.checksum b/pixman/.checksum index 99dd3052..79ecb6a5 100644 --- a/pixman/.checksum +++ b/pixman/.checksum @@ -1 +1 @@ -753566b77e7696d97ef9827811c21a6d57bc90262f1a7eb3b9099f5865b08814 pixman-0.46.0.tar.gz +7ecc38fd97db72c063883a2bdb16425478d1a289003d9a9ba12130563b970af6 pixman-0.46.2.tar.gz diff --git a/pixman/.files b/pixman/.files index 18f1717d..73f784a8 100644 --- a/pixman/.files +++ b/pixman/.files @@ -5,7 +5,7 @@ drwxr-xr-x root/root usr/include/pixman-1/ -rw-r--r-- root/root usr/include/pixman-1/pixman.h drwxr-xr-x root/root usr/lib/ lrwxrwxrwx root/root usr/lib/libpixman-1.so -> libpixman-1.so.0 -lrwxrwxrwx root/root usr/lib/libpixman-1.so.0 -> libpixman-1.so.0.46.0 --rwxr-xr-x root/root usr/lib/libpixman-1.so.0.46.0 +lrwxrwxrwx root/root usr/lib/libpixman-1.so.0 -> libpixman-1.so.0.46.2 +-rwxr-xr-x root/root usr/lib/libpixman-1.so.0.46.2 drwxr-xr-x root/root usr/lib/pkgconfig/ -rw-r--r-- root/root usr/lib/pkgconfig/pixman-1.pc diff --git a/pixman/abuild b/pixman/abuild index 14451036..4bc70aca 100644 --- a/pixman/abuild +++ b/pixman/abuild @@ -1,4 +1,4 @@ name=pixman -version=0.46.0 +version=0.46.2 release=1 source="https://www.cairographics.org/releases/$name-$version.tar.gz" diff --git a/python/.checksum b/python/.checksum index 43b9a4d7..17fe6bf8 100644 --- a/python/.checksum +++ b/python/.checksum @@ -1,2 +1,3 @@ 5ead80f2625e236d9e052daca1c8addbca7571fcf200ab07cd1de7ef5898b711 Python-3.13.3.tar.xz 35e9add593786361413181ba969a05ef43c40a8e81500a8e1e0d301096e39eab libressl.diff +bdb57378412d2d78b74df2d08d974d6b66d9effa6d11c2293a25f9d5e329d84f musl-pgo-tests.patch diff --git a/python/.files b/python/.files index 97ceeee8..bbd3f66b 100644 --- a/python/.files +++ b/python/.files @@ -1,12 +1,9 @@ drwxr-xr-x root/root usr/ drwxr-xr-x root/root usr/bin/ -lrwxrwxrwx root/root usr/bin/idle3 -> idle3.13 -rwxr-xr-x root/root usr/bin/idle3.13 -lrwxrwxrwx root/root usr/bin/pydoc3 -> pydoc3.13 -rwxr-xr-x root/root usr/bin/pydoc3.13 -lrwxrwxrwx root/root usr/bin/python -> python3 +lrwxrwxrwx root/root usr/bin/python -> python3.13 lrwxrwxrwx root/root usr/bin/python3 -> python3.13 -lrwxrwxrwx root/root usr/bin/python3-config -> python3.13-config -rwxr-xr-x root/root usr/bin/python3.13 -rwxr-xr-x root/root usr/bin/python3.13-config drwxr-xr-x root/root usr/include/ @@ -286,8 +283,6 @@ lrwxrwxrwx root/root usr/lib/libpython3.13.so -> libpython3.13.so.1.0 drwxr-xr-x root/root usr/lib/pkgconfig/ -rw-r--r-- root/root usr/lib/pkgconfig/python-3.13-embed.pc -rw-r--r-- root/root usr/lib/pkgconfig/python-3.13.pc -lrwxrwxrwx root/root usr/lib/pkgconfig/python3-embed.pc -> python-3.13-embed.pc -lrwxrwxrwx root/root usr/lib/pkgconfig/python3.pc -> python-3.13.pc drwxr-xr-x root/root usr/lib/python3.13/ -rw-r--r-- root/root usr/lib/python3.13/LICENSE.txt -rw-r--r-- root/root usr/lib/python3.13/__future__.py @@ -8227,5 +8222,4 @@ drwxr-xr-x root/root usr/lib/python3.13/zoneinfo/__pycache__/ drwxr-xr-x root/root usr/share/ drwxr-xr-x root/root usr/share/man/ drwxr-xr-x root/root usr/share/man/man1/ -lrwxrwxrwx root/root usr/share/man/man1/python3.1.gz -> python3.13.1.gz -rw-r--r-- root/root usr/share/man/man1/python3.13.1.gz diff --git a/python/abuild b/python/abuild index 1d55c670..f74b5f8b 100644 --- a/python/abuild +++ b/python/abuild @@ -1,19 +1,14 @@ name=python version=3.13.3 -release=1 +release=2 source="https://www.$name.org/ftp/$name/$version/Python-$version.tar.xz + musl-pgo-tests.patch libressl.diff" -build_opt="--without-ensurepip - --enable-shared - --with-system-expat - --with-system-ffi - --enable-optimizations" build() { - # Reported 20-27% performance improvements. - # See: "PythonNoSemanticInterpositionSpeedup" - export CFLAGS="$CFLAGS -fno-semantic-interposition" - export LDFLAGS="$LDFLAGS -fno-semantic-interposition" + # musl workaround + export ac_cv_file__dev_ptmx=yes + export ac_cv_file__dev_ptc=no ./configure \ --prefix=/usr \ @@ -24,8 +19,10 @@ build() { --mandir=/usr/share/man \ --without-ensurepip \ --enable-shared \ - --with-system-expat + --with-system-expat \ + --enable-optimization make - make DESTDIR=$PKG install - ln -s python3 $PKG/usr/bin/python + make DESTDIR=$PKG altinstall + ln -s python${version%.*} $PKG/usr/bin/python + ln -s python${version%.*} $PKG/usr/bin/python3 } diff --git a/python/musl-pgo-tests.patch b/python/musl-pgo-tests.patch new file mode 100644 index 00000000..d519da60 --- /dev/null +++ b/python/musl-pgo-tests.patch @@ -0,0 +1,453 @@ +From 6146295a5b8e9286ccb8f90818b764c9a0192090 Mon Sep 17 00:00:00 2001 +From: "R. David Murray" +Date: Wed, 19 Mar 2025 13:05:09 -0400 +Subject: [PATCH] gh-90548: Make musl test skips smarter (fixes Alpine errors) + (#131313) + +* Make musl test skips smarter (fixes Alpine errors) + +A relatively small number of tests fail when the underlying c library is +provided by musl. This was originally reported in bpo-46390 by +Christian Heimes. Among other changes, these tests were marked for +skipping in gh-31947/ef1327e3 as part of bpo-40280 (emscripten support), +but the skips were conditioned on the *platform* being emscripten (or +wasi, skips for which ere added in 9b50585e02). + +In gh-131071 Victor Stinner added a linked_to_musl function to enable +skipping a test in test_math that fails under musl, like it does on a +number of other platforms. This check can successfully detect that +python is running under musl on Alpine, which was the original problem +report in bpo-46390. + +This PR replaces Victor's solution with an enhancement to +platform.libc_ver that does the check more cheaply, and also gets the +version number. The latter is important because the math test being +skipped is due to a bug in musl that has been fixed, but as of this +checkin date has not yet been released. When it is, the test skip can +be fixed to check for the minimum needed version. + +The enhanced version of linked_to_musl is also used to do the skips of +the other tests that generically fail under musl, as opposed to +emscripten or wasi only failures. This will allow these tests to be +skipped automatically on Alpine. + +This PR does *not* enhance libc_ver to support emscripten and wasi, as +I'm not familiar with those platforms; instead it returns a version +triple of (0, 0, 0) for those platforms. This means the musl tests will +be skipped regardless of musl version, so ideally someone will add +support to libc_ver for these platforms. + +* Platform tests and bug fixes. + +In adding tests for the new platform code I found a bug in the old code: +if a valid version is passed for version and it is greater than the +version found for an so *and* there is no glibc version, then the +version from the argument was returned. The code changes here fix +that. + +* Add support docs, including for some preexisting is_xxx's. + +* Add news item about libc_ver enhancement. + +* Prettify platform re expression using re.VERBOSE. +--- + Doc/library/test.rst | 31 ++++++++++++++- + Lib/platform.py | 37 +++++++++++------- + Lib/test/support/__init__.py | 39 +++++++++++++------ + Lib/test/test__locale.py | 20 ++-------- + Lib/test/test_locale.py | 12 ++---- + Lib/test/test_math.py | 3 ++ + Lib/test/test_os.py | 15 ++++--- + Lib/test/test_platform.py | 35 +++++++++++++---- + Lib/test/test_re.py | 12 ++---- + Lib/test/test_strptime.py | 5 +-- + Lib/test/test_support.py | 13 ++++++- + ...5-03-17-17-11-41.gh-issue-90548.xSPf_L.rst | 2 + + 12 files changed, 143 insertions(+), 81 deletions(-) + create mode 100644 Misc/NEWS.d/next/Library/2025-03-17-17-11-41.gh-issue-90548.xSPf_L.rst + +diff --git a/Doc/library/test.rst b/Doc/library/test.rst +index 46f8975687714b..f27cd55e7271a0 100644 +--- a/Doc/library/test.rst ++++ b/Doc/library/test.rst +@@ -246,7 +246,27 @@ The :mod:`test.support` module defines the following constants: + + .. data:: is_android + +- ``True`` if the system is Android. ++ ``True`` if ``sys.platform`` is ``android``. ++ ++ ++.. data:: is_emscripten ++ ++ ``True`` if ``sys.platform`` is ``emscripten``. ++ ++ ++.. data:: is_wasi ++ ++ ``True`` if ``sys.platform`` is ``wasi``. ++ ++ ++.. data:: is_apple_mobile ++ ++ ``True`` if ``sys.platform`` is ``ios``, ``tvos``, or ``watchos``. ++ ++ ++.. data:: is_apple ++ ++ ``True`` if ``sys.platform`` is ``darwin`` or ``is_apple_mobile`` is ``True``. + + + .. data:: unix_shell +@@ -831,6 +851,15 @@ The :mod:`test.support` module defines the following functions: + Decorator for tests that fill the address space. + + ++.. function:: linked_with_musl() ++ ++ Return ``False`` if there is no evidence the interperter was compiled with ++ ``musl``, otherwise return a version triple, either ``(0, 0, 0)`` if the ++ version is unknown, or the actual version if it is known. Intended for use ++ in ``skip`` decorators. ``emscripten`` and ``wasi`` are assumed to be ++ compiled with ``musl``; otherwise ``platform.libc_ver`` is checked. ++ ++ + .. function:: check_syntax_error(testcase, statement, errtext='', *, lineno=None, offset=None) + + Test for syntax errors in *statement* by attempting to compile *statement*. +diff --git a/Lib/platform.py b/Lib/platform.py +index 1f6baed66d3df9..a62192589af8ff 100644 +--- a/Lib/platform.py ++++ b/Lib/platform.py +@@ -189,22 +189,25 @@ def libc_ver(executable=None, lib='', version='', chunksize=16384): + # sys.executable is not set. + return lib, version + +- libc_search = re.compile(b'(__libc_init)' +- b'|' +- b'(GLIBC_([0-9.]+))' +- b'|' +- br'(libc(_\w+)?\.so(?:\.(\d[0-9.]*))?)', re.ASCII) ++ libc_search = re.compile(br""" ++ (__libc_init) ++ | (GLIBC_([0-9.]+)) ++ | (libc(_\w+)?\.so(?:\.(\d[0-9.]*))?) ++ | (musl-([0-9.]+)) ++ """, ++ re.ASCII | re.VERBOSE) + + V = _comparable_version + # We use os.path.realpath() + # here to work around problems with Cygwin not being + # able to open symlinks for reading + executable = os.path.realpath(executable) ++ ver = None + with open(executable, 'rb') as f: + binary = f.read(chunksize) + pos = 0 + while pos < len(binary): +- if b'libc' in binary or b'GLIBC' in binary: ++ if b'libc' in binary or b'GLIBC' in binary or b'musl' in binary: + m = libc_search.search(binary, pos) + else: + m = None +@@ -216,7 +219,7 @@ def libc_ver(executable=None, lib='', version='', chunksize=16384): + continue + if not m: + break +- libcinit, glibc, glibcversion, so, threads, soversion = [ ++ libcinit, glibc, glibcversion, so, threads, soversion, musl, muslversion = [ + s.decode('latin1') if s is not None else s + for s in m.groups()] + if libcinit and not lib: +@@ -224,18 +227,22 @@ def libc_ver(executable=None, lib='', version='', chunksize=16384): + elif glibc: + if lib != 'glibc': + lib = 'glibc' +- version = glibcversion +- elif V(glibcversion) > V(version): +- version = glibcversion ++ ver = glibcversion ++ elif V(glibcversion) > V(ver): ++ ver = glibcversion + elif so: + if lib != 'glibc': + lib = 'libc' +- if soversion and (not version or V(soversion) > V(version)): +- version = soversion +- if threads and version[-len(threads):] != threads: +- version = version + threads ++ if soversion and (not ver or V(soversion) > V(ver)): ++ ver = soversion ++ if threads and ver[-len(threads):] != threads: ++ ver = ver + threads ++ elif musl: ++ lib = 'musl' ++ if not ver or V(muslversion) > V(ver): ++ ver = muslversion + pos = m.end() +- return lib, version ++ return lib, version if ver is None else ver + + def _norm_version(version, build=''): + +diff --git a/Lib/test/test__locale.py b/Lib/test/test__locale.py +index cef84fd9580c37..11b2c9545a1b43 100644 +--- a/Lib/test/test__locale.py ++++ b/Lib/test/test__locale.py +@@ -137,10 +137,7 @@ def numeric_tester(self, calc_type, calc_value, data_type, used_locale): + return True + + @unittest.skipUnless(nl_langinfo, "nl_langinfo is not available") +- @unittest.skipIf( +- support.is_emscripten or support.is_wasi, +- "musl libc issue on Emscripten, bpo-46390" +- ) ++ @unittest.skipIf(support.linked_to_musl(), "musl libc issue, bpo-46390") + def test_lc_numeric_nl_langinfo(self): + # Test nl_langinfo against known values + tested = False +@@ -158,10 +155,7 @@ def test_lc_numeric_nl_langinfo(self): + if not tested: + self.skipTest('no suitable locales') + +- @unittest.skipIf( +- support.is_emscripten or support.is_wasi, +- "musl libc issue on Emscripten, bpo-46390" +- ) ++ @unittest.skipIf(support.linked_to_musl(), "musl libc issue, bpo-46390") + def test_lc_numeric_localeconv(self): + # Test localeconv against known values + tested = False +@@ -210,10 +204,7 @@ def test_lc_numeric_basic(self): + + @unittest.skipUnless(nl_langinfo, "nl_langinfo is not available") + @unittest.skipUnless(hasattr(locale, 'ALT_DIGITS'), "requires locale.ALT_DIGITS") +- @unittest.skipIf( +- support.is_emscripten or support.is_wasi, +- "musl libc issue on Emscripten, bpo-46390" +- ) ++ @unittest.skipIf(support.linked_to_musl(), "musl libc issue, bpo-46390") + def test_alt_digits_nl_langinfo(self): + # Test nl_langinfo(ALT_DIGITS) + tested = False +@@ -245,10 +236,7 @@ def test_alt_digits_nl_langinfo(self): + + @unittest.skipUnless(nl_langinfo, "nl_langinfo is not available") + @unittest.skipUnless(hasattr(locale, 'ERA'), "requires locale.ERA") +- @unittest.skipIf( +- support.is_emscripten or support.is_wasi, +- "musl libc issue on Emscripten, bpo-46390" +- ) ++ @unittest.skipIf(support.linked_to_musl(), "musl libc issue, bpo-46390") + def test_era_nl_langinfo(self): + # Test nl_langinfo(ERA) + tested = False +diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py +index 798c6ad62cddd1..528ceef528114c 100644 +--- a/Lib/test/test_locale.py ++++ b/Lib/test/test_locale.py +@@ -1,5 +1,5 @@ + from decimal import Decimal +-from test.support import verbose, is_android, is_emscripten, is_wasi ++from test.support import verbose, is_android, linked_to_musl, os_helper + from test.support.warnings_helper import check_warnings + from test.support.import_helper import import_fresh_module + from unittest import mock +@@ -351,10 +351,7 @@ + + @unittest.skipIf(sys.platform.startswith('aix'), + 'bpo-29972: broken test on AIX') +- @unittest.skipIf( +- is_emscripten or is_wasi, +- "musl libc issue on Emscripten/WASI, bpo-46390" +- ) ++ @unittest.skipIf(linked_to_musl(), "musl libc issue, bpo-46390") + @unittest.skipIf(sys.platform.startswith("netbsd"), + "gh-124108: NetBSD doesn't support UTF-8 for LC_COLLATE") + def test_strcoll_with_diacritic(self): +@@ -362,10 +359,7 @@ + + @unittest.skipIf(sys.platform.startswith('aix'), + 'bpo-29972: broken test on AIX') +- @unittest.skipIf( +- is_emscripten or is_wasi, +- "musl libc issue on Emscripten/WASI, bpo-46390" +- ) ++ @unittest.skipIf(linked_to_musl(), "musl libc issue, bpo-46390") + @unittest.skipIf(sys.platform.startswith("netbsd"), + "gh-124108: NetBSD doesn't support UTF-8 for LC_COLLATE") + def test_strxfrm_with_diacritic(self): +diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py +index 2649be86e5086e..b4f5dd80f55f86 100644 +--- a/Lib/test/test_math.py ++++ b/Lib/test/test_math.py +@@ -2772,6 +2772,9 @@ def test_fma_infinities(self): + or (sys.platform == "android" and platform.machine() == "x86_64") + or support.linked_to_musl(), # gh-131032 + f"this platform doesn't implement IEE 754-2008 properly") ++ # gh-131032: musl is fixed but the fix is not yet released; when the fixed ++ # version is known change this to: ++ # or support.linked_to_musl() < (1, ,

) + def test_fma_zero_result(self): + nonnegative_finites = [0.0, 1e-300, 2.3, 1e300] + +diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py +index 0353c2b4866c45..333179a71e3cdc 100644 +--- a/Lib/test/test_os.py ++++ b/Lib/test/test_os.py +@@ -2393,14 +2393,11 @@ + self.check(os.fchown, -1, -1) + + @unittest.skipUnless(hasattr(os, 'fpathconf'), 'test needs os.fpathconf()') +- @unittest.skipIf( +- support.is_emscripten or support.is_wasi, +- "musl libc issue on Emscripten/WASI, bpo-46390" +- ) + def test_fpathconf(self): + self.assertIn("PC_NAME_MAX", os.pathconf_names) +- self.check(os.pathconf, "PC_NAME_MAX") +- self.check(os.fpathconf, "PC_NAME_MAX") ++ if not support.linked_to_musl(): ++ self.check(os.pathconf, "PC_NAME_MAX") ++ self.check(os.fpathconf, "PC_NAME_MAX") + self.check_bool(os.pathconf, "PC_NAME_MAX") + self.check_bool(os.fpathconf, "PC_NAME_MAX") + +diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py +index ca73b043d31b7f..6ba630ad527f91 100644 +--- a/Lib/test/test_platform.py ++++ b/Lib/test/test_platform.py +@@ -551,6 +551,10 @@ def test_libc_ver(self): + (b'GLIBC_2.9', ('glibc', '2.9')), + (b'libc.so.1.2.5', ('libc', '1.2.5')), + (b'libc_pthread.so.1.2.5', ('libc', '1.2.5_pthread')), ++ (b'/aports/main/musl/src/musl-1.2.5', ('musl', '1.2.5')), ++ # musl uses semver, but we accept some variations anyway: ++ (b'/aports/main/musl/src/musl-12.5', ('musl', '12.5')), ++ (b'/aports/main/musl/src/musl-1.2.5.7', ('musl', '1.2.5.7')), + (b'', ('', '')), + ): + with open(filename, 'wb') as fp: +@@ -562,14 +566,29 @@ def test_libc_ver(self): + expected) + + # binary containing multiple versions: get the most recent, +- # make sure that 1.9 is seen as older than 1.23.4 +- chunksize = 16384 +- with open(filename, 'wb') as f: +- # test match at chunk boundary +- f.write(b'x'*(chunksize - 10)) +- f.write(b'GLIBC_1.23.4\0GLIBC_1.9\0GLIBC_1.21\0') +- self.assertEqual(platform.libc_ver(filename, chunksize=chunksize), +- ('glibc', '1.23.4')) ++ # make sure that eg 1.9 is seen as older than 1.23.4, and that ++ # the arguments don't count even if they are set. ++ chunksize = 200 ++ for data, expected in ( ++ (b'GLIBC_1.23.4\0GLIBC_1.9\0GLIBC_1.21\0', ('glibc', '1.23.4')), ++ (b'libc.so.2.4\0libc.so.9\0libc.so.23.1\0', ('libc', '23.1')), ++ (b'musl-1.4.1\0musl-2.1.1\0musl-2.0.1\0', ('musl', '2.1.1')), ++ (b'no match here, so defaults are used', ('test', '100.1.0')), ++ ): ++ with open(filename, 'wb') as f: ++ # test match at chunk boundary ++ f.write(b'x'*(chunksize - 10)) ++ f.write(data) ++ self.assertEqual( ++ expected, ++ platform.libc_ver( ++ filename, ++ lib='test', ++ version='100.1.0', ++ chunksize=chunksize, ++ ), ++ ) ++ + + def test_android_ver(self): + res = platform.android_ver() +diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py +index 5538de60b2a03a..f65b4076aee2c6 100644 +--- a/Lib/test/test_re.py ++++ b/Lib/test/test_re.py +@@ -1,6 +1,6 @@ + from test.support import (gc_collect, bigmemtest, _2G, + cpython_only, captured_stdout, +- check_disallow_instantiation, is_emscripten, is_wasi, ++ check_disallow_instantiation, linked_to_musl, + warnings_helper, SHORT_TIMEOUT, CPUStopwatch, requires_resource) + import locale + import re +@@ -2172,10 +2172,7 @@ def test_bug_20998(self): + # with ignore case. + self.assertEqual(re.fullmatch('[a-c]+', 'ABC', re.I).span(), (0, 3)) + +- @unittest.skipIf( +- is_emscripten or is_wasi, +- "musl libc issue on Emscripten/WASI, bpo-46390" +- ) ++ @unittest.skipIf(linked_to_musl(), "musl libc issue, bpo-46390") + def test_locale_caching(self): + # Issue #22410 + oldlocale = locale.setlocale(locale.LC_CTYPE) +@@ -2212,10 +2209,7 @@ def check_en_US_utf8(self): + self.assertIsNone(re.match(b'(?Li)\xc5', b'\xe5')) + self.assertIsNone(re.match(b'(?Li)\xe5', b'\xc5')) + +- @unittest.skipIf( +- is_emscripten or is_wasi, +- "musl libc issue on Emscripten/WASI, bpo-46390" +- ) ++ @unittest.skipIf(linked_to_musl(), "musl libc issue, bpo-46390") + def test_locale_compiled(self): + oldlocale = locale.setlocale(locale.LC_CTYPE) + self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale) +diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py +index 0d30a63ab0c140..fbc43829e22a96 100644 +--- a/Lib/test/test_strptime.py ++++ b/Lib/test/test_strptime.py +@@ -544,10 +544,7 @@ def test_date_locale(self): + self.roundtrip('%x', slice(0, 3), time.localtime(now - 366*24*3600)) + + # NB: Dates before 1969 do not roundtrip on many locales, including C. +- @unittest.skipIf( +- support.is_emscripten or support.is_wasi, +- "musl libc issue on Emscripten, bpo-46390" +- ) ++ @unittest.skipIf(support.linked_to_musl(), "musl libc issue, bpo-46390") + @run_with_locales('LC_TIME', 'en_US', 'fr_FR', 'de_DE', 'ja_JP', + 'eu_ES', 'ar_AE', 'my_MM', 'shn_MM') + def test_date_locale2(self): +diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py +index 46d796379fa212..8d5b3440d3bd30 100644 +--- a/Lib/test/test_support.py ++++ b/Lib/test/test_support.py +@@ -746,7 +746,18 @@ def test_get_signal_name(self): + + def test_linked_to_musl(self): + linked = support.linked_to_musl() +- self.assertIsInstance(linked, bool) ++ self.assertIsNotNone(linked) ++ if support.is_wasi or support.is_emscripten: ++ self.assertTrue(linked) ++ # The value is cached, so make sure it returns the same value again. ++ self.assertIs(linked, support.linked_to_musl()) ++ # The unlike libc, the musl version is a triple. ++ if linked: ++ self.assertIsInstance(linked, tuple) ++ self.assertEqual(3, len(linked)) ++ for v in linked: ++ self.assertIsInstance(v, int) ++ + + # XXX -follows a list of untested API + # make_legacy_pyc +diff --git a/Misc/NEWS.d/next/Library/2025-03-17-17-11-41.gh-issue-90548.xSPf_L.rst b/Misc/NEWS.d/next/Library/2025-03-17-17-11-41.gh-issue-90548.xSPf_L.rst +new file mode 100644 +index 00000000000000..88746c1866f14e +--- /dev/null ++++ b/Misc/NEWS.d/next/Library/2025-03-17-17-11-41.gh-issue-90548.xSPf_L.rst +@@ -0,0 +1,2 @@ ++:func:`platform.libc_ver` can now detect and report the version of ``musl`` ++on Alpine Linux. diff --git a/unrar/.checksum b/unrar/.checksum index 412c9f2b..c025d7ad 100644 --- a/unrar/.checksum +++ b/unrar/.checksum @@ -1 +1 @@ -1b1913d207f8ffafdc2dcf6cf0bb96a75b713c35f3b49b53573489d7b564e48f unrarsrc-7.1.6.tar.gz +6de1a9195f4bc34cd9018ad5ffde73fd49351a116c698a3e4ecb33562634c339 unrarsrc-7.1.7.tar.gz diff --git a/unrar/abuild b/unrar/abuild index 0a4136a7..6b5939f3 100644 --- a/unrar/abuild +++ b/unrar/abuild @@ -1,5 +1,5 @@ name=unrar -version=7.1.6 +version=7.1.7 release=1 source="https://www.rarlab.com/rar/${name}src-$version.tar.gz" diff --git a/vim/.checksum b/vim/.checksum index 8f47fa02..d7ba6722 100644 --- a/vim/.checksum +++ b/vim/.checksum @@ -1 +1 @@ -f2c5046c7ddc0ed41ede40064d97702c0e418286c90e16ecded545ea55d0f156 vim-9.1.1435.tar.gz +9b1fcf0789459ec81639af45c1be0e9e377bafee1b154a8591da598f6d7b0f46 vim-9.1.1453.tar.gz diff --git a/vim/abuild b/vim/abuild index 7483f0b3..21b33eb2 100644 --- a/vim/abuild +++ b/vim/abuild @@ -1,5 +1,5 @@ name=vim -version=9.1.1435 +version=9.1.1453 release=1 source="https://github.com/$name/$name/archive/v$version/$name-$version.tar.gz" build_opt="--without-x --disable-gui --disable-gpm --disable-libsodium --disable-nls" diff --git a/wev/.checksum b/wev/.checksum index 038c8b0a..1f8ec2d6 100644 --- a/wev/.checksum +++ b/wev/.checksum @@ -1 +1 @@ -1aff850515069e1315c63504502bee473910bc4bc5570c7ec04d7f75f2bdd335 wev-1.0.0.tar.gz +5ca5fe6d86e5d21c528c6ea2bee55db0327486a66fce9b9e0cbe088a1b66a06c wev-1.1.0.tar.gz diff --git a/wev/abuild b/wev/abuild index 2dafb246..ec818e55 100644 --- a/wev/abuild +++ b/wev/abuild @@ -1,4 +1,4 @@ name=wev -version=1.0.0 +version=1.1.0 release=1 source="$name-$version.tar.gz::https://git.sr.ht/~sircmpwn/${name}/archive/${version}.tar.gz" -- cgit v1.2.3