aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bmake/.checksum2
-rw-r--r--bmake/.files104
-rw-r--r--bmake/abuild9
-rw-r--r--bmake/separate-tests.patch26
-rw-r--r--libffi/.checksum2
-rw-r--r--libffi/abuild2
-rw-r--r--libjpeg-turbo/.checksum2
-rw-r--r--libjpeg-turbo/abuild2
-rw-r--r--lowdown/.checksum2
-rw-r--r--lowdown/.files11
-rw-r--r--lowdown/abuild8
-rw-r--r--lowdown/depends1
-rw-r--r--pixman/.checksum2
-rw-r--r--pixman/.files4
-rw-r--r--pixman/abuild2
-rw-r--r--python/.checksum1
-rw-r--r--python/.files8
-rw-r--r--python/abuild23
-rw-r--r--python/musl-pgo-tests.patch453
-rw-r--r--unrar/.checksum2
-rw-r--r--unrar/abuild2
-rw-r--r--vim/.checksum2
-rw-r--r--vim/abuild2
-rw-r--r--wev/.checksum2
-rw-r--r--wev/abuild2
25 files changed, 635 insertions, 41 deletions
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" <rdmurray@bitdance.com>
+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, <m>, <p>)
+ 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"