diff --git a/testing/ocaml-markup/APKBUILD b/testing/ocaml-markup/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..a3f62d4f87753afb094b0508d2989e8f929d6482
--- /dev/null
+++ b/testing/ocaml-markup/APKBUILD
@@ -0,0 +1,81 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer:
+pkgname=ocaml-markup
+_pkgname=markup.ml
+pkgver=1.0.3
+pkgrel=0
+pkgdesc="Error-recovering functional HTML5 and XML parsers and writers for OCaml"
+url="https://aantron.github.io/markup.ml"
+arch="all !riscv64" # restricted by ocaml
+license="MIT"
+depends="ocaml-runtime ocaml-lwt ocaml-uutf"
+depends_dev="$pkgname=$pkgver-r$pkgrel"
+checkdepends="ocaml-result-dev ocaml-ounit-dev"
+makedepends="
+	dune
+	ocaml
+	ocaml-bisect_ppx-dev
+	ocaml-compiler-libs
+	ocaml-compiler-libs-repackaged-dev
+	ocaml-ppx_derivers-dev
+	ocaml-ppxlib-dev
+	ocaml-sexplib0-dev
+	ocaml-seq-dev
+	ocaml-stdlib-shims
+	ocaml-uutf-dev
+	ocaml-lwt-dev
+	ocaml-ocplib-endian-dev
+	ocaml-mmap-dev
+	ocaml-bigarray-compat-dev
+	"
+provides="$pkgname-lwt=$pkgver-r$pkgrel"
+subpackages="$pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/aantron/markup.ml/archive/$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+# 32-bit archs
+case "$CARCH" in
+	arm*|x86) options="$options textrels" ;;
+esac
+
+build() {
+	export OCAMLPATH=/usr/lib/ocaml
+	dune build --root . @install --no-buffer --verbose
+}
+
+check() {
+	dune runtest --no-buffer --verbose
+}
+
+package() {
+	dune install \
+		--destdir="$pkgdir" \
+		--prefix=/usr \
+		--libdir=/usr/lib/ocaml
+
+	# There's just a readme and changelog.
+	rm -Rf "$pkgdir"/usr/doc
+}
+
+dev() {
+	default_dev
+	provides="$pkgname-lwt-dev=$pkgver-r$pkgrel"
+
+	cd "$pkgdir"
+
+	local path; for path in $(find usr/lib/ocaml \( \
+			-name '*.cmt' -o \
+			-name '*.cmti' -o \
+			-name '*.cmx' -o \
+			-name '*.cmxa' -o \
+			-name '*.ml' -o \
+			-name '*.mli' \
+		\))
+	do
+		amove "$path"
+	done
+}
+
+sha512sums="
+1bb030fa2d79f7a7ac2d04c07c72a39e83620757b1d7d8a33eea1ec9b4c32883a67de45d1eea9bfa6533ae8076009fab9af5f180ad2be9c1fef66e3e5937048a  ocaml-markup-1.0.3.tar.gz
+"
diff --git a/unmaintained/ocaml-markup/APKBUILD b/unmaintained/ocaml-markup/APKBUILD
deleted file mode 100644
index ef9be285461176c500009aa6ab3bded682dcab5c..0000000000000000000000000000000000000000
--- a/unmaintained/ocaml-markup/APKBUILD
+++ /dev/null
@@ -1,67 +0,0 @@
-# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Maintainer:
-pkgname=ocaml-markup
-_pkgname=markup.ml
-pkgver=0.7.6
-pkgrel=5
-pkgdesc="Error-recovering streaming HTML5 and XML parsers for OCaml"
-url="https://aantron.github.io/markup.ml"
-arch="all !x86 !armhf !armv7 !s390x !mips !mips64"  # limited by ocaml aport
-license="BSD-2-Clause"
-depends="ocaml-runtime ocaml-lwt ocaml-uchar ocaml-uutf"
-depends_dev="$pkgname=$pkgver-r$pkgrel"
-checkdepends="ocaml-result-dev ocaml-ounit-dev"
-makedepends="dune ocaml ocaml-findlib ocaml-lwt-dev ocaml-uchar-dev
-	ocaml-uutf-dev opam"
-subpackages="$pkgname-dev"
-source="$pkgname-$pkgver.tar.gz::https://github.com/aantron/$_pkgname/archive/$pkgver.tar.gz"
-builddir="$srcdir/$_pkgname-$pkgver"
-
-build() {
-	cd "$builddir"
-
-	ocaml src/configure.ml
-	jbuilder build @install
-}
-
-check() {
-	cd "$builddir"
-
-	# FIXME: Allow to fail on ppc64le for now.
-	case "$CARCH" in
-		ppc64le) jbuilder runtest --no-buffer -j1 || true;;
-		*) jbuilder runtest --no-buffer -j1;;
-	esac
-}
-
-package() {
-	cd "$builddir"
-
-	mkdir -p "$pkgdir"/usr/lib/ocaml
-	jbuilder install \
-		--destdir="$pkgdir"/usr \
-		--libdir="$pkgdir"/usr/lib/ocaml
-
-	# There's just a readme and changelog.
-	rm -Rf "$pkgdir"/usr/doc
-
-	# Remove annotation files and sources.
-	find "$pkgdir"/usr/lib/ocaml \
-		\( -name '*.cmt' -o -name '*.cmti' -o -name '*.ml' \) \
-		-a -delete
-}
-
-dev() {
-	local sitelib="usr/lib/ocaml/markup"
-	default_dev
-
-	cd "$pkgdir"
-
-	local path
-	for path in $(find $sitelib -name '*.cmx' -o -name '*.cmxa' -o -name '*.mli*'); do
-		mkdir -p "${path%/*}"
-		mv "$path" "$subpkgdir"/${path%/*}/
-	done
-}
-
-sha512sums="dcb06d0d271677842f76f3eabd64ac4aefbd8c8194c0ca8732d32120b4f1026378f989c2979706f752d3df45f878194283bd2754023033b61063878de4deb319  ocaml-markup-0.7.6.tar.gz"