From ed11fcd7ef667bcc6c24f6e2079846a37e507053 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Fri, 11 Sep 2026 07:49:54 +0400 Subject: [PATCH 1/7] python3-boltons: update to 25.0.0. --- .../python3-boltons/patches/py39-test.patch | 62 ------------------- srcpkgs/python3-boltons/template | 18 ++++-- 2 files changed, 12 insertions(+), 68 deletions(-) delete mode 100644 srcpkgs/python3-boltons/patches/py39-test.patch diff --git a/srcpkgs/python3-boltons/patches/py39-test.patch b/srcpkgs/python3-boltons/patches/py39-test.patch deleted file mode 100644 index 45df36723a9c43..00000000000000 --- a/srcpkgs/python3-boltons/patches/py39-test.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 754afddf141ea26956c88c7e13fe5e7ca7942654 Mon Sep 17 00:00:00 2001 -From: Karthikeyan Singaravelan -Date: Mon, 23 Nov 2020 11:23:49 +0530 -Subject: [PATCH] Fix Python 3.9 compatibility for FrozenDict due to PEP 584 - implementation. (#271) - ---- - boltons/dictutils.py | 2 +- - tests/test_dictutils.py | 12 ++++++++++++ - 2 files changed, 13 insertions(+), 1 deletion(-) - -diff --git boltons/dictutils.py boltons/dictutils.py -index ce5884c..8d1a4e7 100644 ---- a/boltons/dictutils.py -+++ b/boltons/dictutils.py -@@ -1076,7 +1076,7 @@ def _raise_frozen_typeerror(self, *a, **kw): - "raises a TypeError, because FrozenDicts are immutable" - raise TypeError('%s object is immutable' % self.__class__.__name__) - -- __setitem__ = __delitem__ = update = _raise_frozen_typeerror -+ __ior__ = __setitem__ = __delitem__ = update = _raise_frozen_typeerror - setdefault = pop = popitem = clear = _raise_frozen_typeerror - - del _raise_frozen_typeerror -diff --git tests/test_dictutils.py tests/test_dictutils.py -index b6873a8..6eac812 100644 ---- a/tests/test_dictutils.py -+++ b/tests/test_dictutils.py -@@ -1,5 +1,6 @@ - # -*- coding: utf-8 -*- - -+import sys - import pytest - - from boltons.dictutils import OMD, OneToOne, ManyToMany, FrozenDict, subdict, FrozenHashError -@@ -432,6 +433,15 @@ def test_frozendict(): - return - - -+@pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9 or higher") -+def test_frozendict_ior(): -+ data = {'a': 'A', 'b': 'B'} -+ fd = FrozenDict(data) -+ -+ with pytest.raises(TypeError, match=".*FrozenDicts are immutable.*"): -+ fd |= fd -+ -+ - def test_frozendict_api(): - # all the read-only methods that are fine - through_methods = ['__class__', -@@ -452,8 +462,10 @@ def test_frozendict_api(): - '__lt__', - '__ne__', - '__new__', -+ '__or__', - '__reduce__', - '__reversed__', -+ '__ror__', - '__setattr__', - '__sizeof__', - '__str__', diff --git a/srcpkgs/python3-boltons/template b/srcpkgs/python3-boltons/template index 5120462fdb5e09..5c9720dab174fd 100644 --- a/srcpkgs/python3-boltons/template +++ b/srcpkgs/python3-boltons/template @@ -1,17 +1,23 @@ # Template file for 'python3-boltons' pkgname=python3-boltons -version=20.2.1 -revision=6 -build_style=python3-module -hostmakedepends="python3-setuptools" +version=25.0.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-flit_core" depends="python3" checkdepends="python3-pytest" short_desc="Collection of functionality to be bolted on the standard lib" -maintainer="Orphaned " +maintainer="Kevin Deldycke " license="BSD-3-Clause" homepage="https://github.com/mahmoud/boltons" distfiles="https://github.com/mahmoud/boltons/archive/${version}.tar.gz" -checksum=f5b63fba62bed021c5086e43b4cfdaf6c8396a3ae1ccdcb549b4eb2f36f8a794 +checksum=7c9e47f2ca1c1f704950e913bf518c6c599dc4a01bc5feffffce2c3bf3c878ee + +post_extract() { + # boltons caps ``flit_core<4`` in its build requirements. Void ships + # flit_core 4.x, which builds this pure-Python package unchanged. + vsed -i -e "s/flit_core >=3.2,<4/flit_core >=3.2/" pyproject.toml +} post_install() { vlicense LICENSE From 643698f52b71375ae4e0ab1e9e260f60eae46f3a Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Fri, 11 Sep 2026 07:50:07 +0400 Subject: [PATCH 2/7] New package: python3-cloup-3.1.0 --- srcpkgs/python3-cloup/template | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 srcpkgs/python3-cloup/template diff --git a/srcpkgs/python3-cloup/template b/srcpkgs/python3-cloup/template new file mode 100644 index 00000000000000..1934423e238762 --- /dev/null +++ b/srcpkgs/python3-cloup/template @@ -0,0 +1,25 @@ +# Template file for 'python3-cloup' +pkgname=python3-cloup +version=3.1.0 +revision=1 +build_style=python3-module +hostmakedepends="python3-setuptools python3-wheel python3-setuptools_scm" +depends="python3-click" +checkdepends="${depends} python3-pytest" +short_desc="Click extension: option groups, constraints, aliases and themed help" +maintainer="Kevin Deldycke " +license="MIT" +homepage="https://github.com/janluke/cloup" +distfiles="${PYPI_SITE}/c/cloup/cloup-${version}.tar.gz" +checksum=637c1e628fe98f3f20a5e44da591a72b42bf54d7d4527190bf39ed5f64af7585 + +post_extract() { + # Cloup pins ``setuptools_scm<10`` via legacy ``setup_requires`` which + # triggers a network fetch inside the build sandbox. Void ships + # setuptools_scm 10.x, so widen the constraint to use the host package. + vsed -i -e "s/setuptools_scm<10/setuptools_scm/" setup.py +} + +post_install() { + vlicense LICENSE +} From 47b0d7c8f186f221aba244a9016ebdacc3490358 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Fri, 11 Sep 2026 07:50:18 +0400 Subject: [PATCH 3/7] New package: python3-deepmerge-3.0.1 --- srcpkgs/python3-deepmerge/template | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 srcpkgs/python3-deepmerge/template diff --git a/srcpkgs/python3-deepmerge/template b/srcpkgs/python3-deepmerge/template new file mode 100644 index 00000000000000..d3ab1a5d59fbb7 --- /dev/null +++ b/srcpkgs/python3-deepmerge/template @@ -0,0 +1,18 @@ +# Template file for 'python3-deepmerge' +pkgname=python3-deepmerge +version=3.0.1 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools python3-wheel python3-setuptools_scm" +depends="python3" +checkdepends="${depends} python3-pytest" +short_desc="Tools to handle merging of nested data structures in Python" +maintainer="Kevin Deldycke " +license="MIT" +homepage="https://github.com/toumorokoshi/deepmerge" +distfiles="${PYPI_SITE}/d/deepmerge/deepmerge-${version}.tar.gz" +checksum=35b39a4cb92cf328d6eca61cbbf65f68a37c2ceb3085f0f853cbb2e52a59fc23 + +post_install() { + vlicense LICENSE +} From 6c567d19ddd4dfd4df61e53290595a11fa81c243 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Fri, 11 Sep 2026 07:50:30 +0400 Subject: [PATCH 4/7] New package: python3-packageurl-python-0.17.6 --- srcpkgs/python3-packageurl-python/template | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 srcpkgs/python3-packageurl-python/template diff --git a/srcpkgs/python3-packageurl-python/template b/srcpkgs/python3-packageurl-python/template new file mode 100644 index 00000000000000..7f6defabb159f5 --- /dev/null +++ b/srcpkgs/python3-packageurl-python/template @@ -0,0 +1,20 @@ +# Template file for 'python3-packageurl-python' +pkgname=python3-packageurl-python +version=0.17.6 +revision=1 +build_style=python3-module +# test_purl_spec.py needs a git submodule absent from the sdist. +make_check_args="--ignore tests/test_purl_spec.py" +hostmakedepends="python3-setuptools python3-wheel" +depends="python3" +checkdepends="${depends} python3-pytest" +short_desc="Package URL (purl) parser and builder" +maintainer="Kevin Deldycke " +license="MIT" +homepage="https://github.com/package-url/packageurl-python" +distfiles="${PYPI_SITE}/p/packageurl-python/packageurl_python-${version}.tar.gz" +checksum=1252ce3a102372ca6f86eb968e16f9014c4ba511c5c37d95a7f023e2ca6e5c25 + +post_install() { + vlicense mit.LICENSE LICENSE +} From bb45e45211f8d1674b59661b0fcc59acd6ac986a Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Fri, 11 Sep 2026 07:51:02 +0400 Subject: [PATCH 5/7] New package: python3-extra-platforms-13.9.0 --- srcpkgs/python3-extra-platforms/template | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 srcpkgs/python3-extra-platforms/template diff --git a/srcpkgs/python3-extra-platforms/template b/srcpkgs/python3-extra-platforms/template new file mode 100644 index 00000000000000..dc618c936fb344 --- /dev/null +++ b/srcpkgs/python3-extra-platforms/template @@ -0,0 +1,24 @@ +# Template file for 'python3-extra-platforms' +pkgname=python3-extra-platforms +version=13.9.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="uv-build" +depends="python3" +checkdepends="${depends} python3-pytest" +short_desc="Detect architectures, platforms, shells, terminals, CI systems, agents" +maintainer="Kevin Deldycke " +license="Apache-2.0" +homepage="https://github.com/kdeldycke/extra-platforms" +distfiles="${PYPI_SITE}/e/extra-platforms/extra_platforms-${version}.tar.gz" +checksum=971d373715cdcf5f4e5bdec5cd733b058fb589d7365ba964f654617bc35fcedc + +do_check() { + local testdir="${wrksrc}/.xbps-testdir" + + python3 -m installer --destdir "${testdir}" dist/*.whl + # test_trait.py reaches click-extra through extra_platforms._docs, and + # click-extra depends on this package. + PATH="${testdir}/usr/bin:${PATH}" PYTHONPATH="${testdir}/${py3_sitelib}" \ + python3 -m pytest -m "not network" --ignore tests/test_trait.py +} From c67b1a3413350f87a9c47da7915434f33a9b3983 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Fri, 11 Sep 2026 07:51:12 +0400 Subject: [PATCH 6/7] New package: python3-click-extra-8.9.1 --- srcpkgs/python3-click-extra/template | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 srcpkgs/python3-click-extra/template diff --git a/srcpkgs/python3-click-extra/template b/srcpkgs/python3-click-extra/template new file mode 100644 index 00000000000000..ec23208af12e54 --- /dev/null +++ b/srcpkgs/python3-click-extra/template @@ -0,0 +1,25 @@ +# Template file for 'python3-click-extra' +pkgname=python3-click-extra +version=8.9.1 +revision=1 +build_style=python3-pep517 +hostmakedepends="uv-build" +depends="python3-boltons python3-click python3-cloup python3-deepmerge python3-extra-platforms python3-tabulate python3-wcwidth python3-wcmatch" +checkdepends="${depends} git python3-hjson python3-packaging python3-Pygments python3-pytest python3-pytest-httpserver python3-requests python3-tomlkit python3-xmltodict python3-yaml" +short_desc="Drop-in replacement for Click to build colorful, user-friendly CLIs" +maintainer="Kevin Deldycke " +license="GPL-2.0-or-later" +homepage="https://github.com/kdeldycke/click-extra" +distfiles="${PYPI_SITE}/c/click-extra/click_extra-${version}.tar.gz" +checksum=18a99d91d94375aaa27dc6a5efdebf6cb0cd0637bae49fd1cb6d8a6398cf8294 + +do_check() { + local testdir="${wrksrc}/.xbps-testdir" + + python3 -m installer --destdir "${testdir}" dist/*.whl + # Void has no python3-myst-parser or python3-mkdocs, which the + # documentation-extension tests import. + PATH="${testdir}/usr/bin:${PATH}" PYTHONPATH="${testdir}/${py3_sitelib}" \ + python3 -m pytest -m "not network" \ + --ignore tests/mkdocs --ignore tests/sphinx +} From 8551f05f6b4b6adfcbada36ddcc06f9d1a28341b Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Fri, 11 Sep 2026 07:51:29 +0400 Subject: [PATCH 7/7] New package: mpm-7.6.1 --- srcpkgs/mpm/template | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 srcpkgs/mpm/template diff --git a/srcpkgs/mpm/template b/srcpkgs/mpm/template new file mode 100644 index 00000000000000..43ebfceac64b3a --- /dev/null +++ b/srcpkgs/mpm/template @@ -0,0 +1,23 @@ +# Template file for 'mpm' +pkgname=mpm +version=7.6.1 +revision=1 +build_style=python3-pep517 +# Void has no python3-cyclonedx-python-lib or python3-respx, which the SBOM +# tests import. +make_check_args="--skip-destructive --ignore tests/test_sbom.py + --ignore tests/test_sbom_vulnerabilities.py" +hostmakedepends="uv-build" +depends="python3-boltons python3-click-extra python3-extra-platforms python3-packageurl-python python3-tomli-w python3-xmltodict" +checkdepends="${depends} python3-pytest python3-tomlkit python3-yaml" +short_desc="CLI that wraps all package managers behind a unifying interface" +maintainer="Kevin Deldycke " +license="GPL-2.0-or-later" +homepage="https://github.com/kdeldycke/meta-package-manager" +distfiles="${PYPI_SITE}/m/meta-package-manager/meta_package_manager-${version}.tar.gz" +checksum=b504c57323c83dd545846abead91d1389cc843aa1ab01a20ac0eb96834f10344 + +# mpm drives the host package managers, so its CLI suite needs a populated +# system: in a build chroot every invocation exits on "No manager selected". +# Run it with `-K` on a real Void host instead. +make_check=extended