diff --git a/testing/py3-dt-schema/APKBUILD b/testing/py3-dt-schema/APKBUILD
index 6d16d8cd40b3ec82e6a49906d33dcbd138516a92..972bb277cf91861225d42c2ee831b0f0aea35d37 100644
--- a/testing/py3-dt-schema/APKBUILD
+++ b/testing/py3-dt-schema/APKBUILD
@@ -1,31 +1,61 @@
-# Contributor: Iskren Chernev <iskren.chernev@gmail.com>
-# Maintainer: Iskren Chernev <iskren.chernev@gmail.com>
+# Contributor: Iskren Chernev <me@iskren.info>
+# Maintainer: Iskren Chernev <me@iskren.info>
 pkgname=py3-dt-schema
-pkgver=2023.06.1
+pkgver=2023.09
 pkgrel=0
 pkgdesc="Devicetree schema tools"
 url="https://github.com/devicetree-org/dt-schema"
 arch="noarch"
 license="BSD-2-Clause"
-depends="python3 py3-ruamel.yaml py3-jsonschema py3-rfc3987 py3-libfdt"
-makedepends="py3-setuptools py3-setuptools_scm"
+depends="python3 py3-ruamel.yaml py3-jsonschema417 py3-rfc3987 py3-libfdt"
+makedepends="py3-setuptools py3-setuptools_scm py3-wheel py3-gpep517 py3-installer"
 checkdepends="dtc"
 subpackages="$pkgname-pyc"
 source="dt-schema-$pkgver.tar.gz::https://github.com/devicetree-org/dt-schema/archive/v$pkgver.tar.gz"
 builddir="$srcdir/dt-schema-$pkgver"
+options="net"
 
-build() {
-	SETUPTOOLS_SCM_PRETEND_VERSION="$pkgver" python3 setup.py build
+prepare() {
+	default_prepare
+	{
+		find dtschema -name '*.py'
+		find test -name '*.py'
+		find tools -type f
+	} | while read -r file; do
+		sed -i \
+			-e 's/import jsonschema$/import jsonschema417 as jsonschema/' \
+			-e 's/from jsonschema/from jsonschema417/' \
+			"$file"
+	done
+	sed -i 's/jsonschema/jsonschema417/' pyproject.toml
+	# The project uses setuptools_scm, which handles adding the schema
+	# files to the package, but there is no SCM here..
+	{
+		echo '[tools.setuptools.package.find]'
+		echo 'where=["."]'
+	} >> pyproject.toml
+	echo "recursive-include dtschema/*schemas *.yaml" > MANIFEST.in
 }
 
-package() {
-	SETUPTOOLS_SCM_PRETEND_VERSION="$pkgver" python3 setup.py install --skip-build --root="$pkgdir"
+build() {
+	SETUPTOOLS_SCM_PRETEND_VERSION="$pkgver" \
+		gpep517 build-wheel \
+		--wheel-dir .dist \
+		--output-fd 3 3>&1 >&2
 }
 
 check() {
-	PYTHONPATH=. python3 test/test-dt-validate.py
+	python3 -m venv --clear --without-pip --system-site-packages .testenv
+	.testenv/bin/python3 -m installer .dist/*.whl
+	.testenv/bin/python3 test/test-dt-validate.py
+}
+
+package() {
+	SETUPTOOLS_SCM_PRETEND_VERSION="$pkgver" \
+		python3 -m installer -d "$pkgdir" \
+		.dist/dtschema-*-py3-none-any.whl
 }
 
 sha512sums="
-9d8f11e22f9b84369bc01a80c2e70c36471741f567723edc679eafc679cc8e48ebfe2934c677d04199b3ea87c7179f3616c464a0defff39f1ea69d852b0cc179  dt-schema-2023.06.1.tar.gz
+d8b3d7e92c13b239df070f9eee8c079b2cf51b1f48e3e3982aa6b55fb91115fbc43e248b250852895ebea1e0fef0bdc7e95a11e2f0e40e9330bc1c899c6b6da3  dt-schema-2023.09.tar.gz
 "