Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 07 Mar 2026 16:59:25 +0000
From:      =?utf-8?Q?Jes=C3=BAs?= Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 78d07a643388 - main - sysutils/py-dbuild: New port: Build, test, and push FreeBSD OCI container images
Message-ID:  <69ac596d.44287.6b77e64e@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by dtxdf:

URL: https://cgit.FreeBSD.org/ports/commit/?id=78d07a64338818483fa2b1122a3735ca8dbf5e1e

commit 78d07a64338818483fa2b1122a3735ca8dbf5e1e
Author:     Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
AuthorDate: 2026-03-07 16:57:23 +0000
Commit:     Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
CommitDate: 2026-03-07 16:58:48 +0000

    sysutils/py-dbuild: New port: Build, test, and push FreeBSD OCI container images
    
    dbuild is a build tool for daemonless container images. It reads a
    project directory containing Containerfile templates and an optional
    .daemonless/config.yaml, then handles the full image lifecycle:
    build, integration test, SBOM generation, and registry push.
    
    WWW: https://daemonless.io/guides/dbuild
---
 sysutils/Makefile                                 |  1 +
 sysutils/py-dbuild/Makefile                       | 50 +++++++++++++++++++++++
 sysutils/py-dbuild/distinfo                       |  3 ++
 sysutils/py-dbuild/files/patch-dbuild_ci__test.py | 10 +++++
 sysutils/py-dbuild/pkg-descr                      |  4 ++
 5 files changed, 68 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 27e3cf6116b9..cf6cf43021b3 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1050,6 +1050,7 @@
     SUBDIR += py-cron-descriptor
     SUBDIR += py-croniter
     SUBDIR += py-croniter2
+    SUBDIR += py-dbuild
     SUBDIR += py-debian-inspector
     SUBDIR += py-dict-toolbox
     SUBDIR += py-diffoscope
diff --git a/sysutils/py-dbuild/Makefile b/sysutils/py-dbuild/Makefile
new file mode 100644
index 000000000000..c642f89f6bb9
--- /dev/null
+++ b/sysutils/py-dbuild/Makefile
@@ -0,0 +1,50 @@
+PORTNAME=	dbuild
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.4.0
+CATEGORIES=	sysutils python
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	dtxdf@FreeBSD.org
+COMMENT=	Build, test, and push FreeBSD OCI container images
+WWW=		https://daemonless.io/guides/dbuild
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pyyaml>=0:devel/py-pyyaml@${PY_FLAVOR} \
+		buildah:sysutils/buildah \
+		podman:sysutils/podman
+
+USES=		python
+USE_GITHUB=	yes
+GH_ACCOUNT=	daemonless
+USE_PYTHON=	autoplist pep517
+
+NO_ARCH=	yes
+
+PORTDOCS=	README.md
+
+OPTIONS_DEFINE=		COMPOSE_TESTING DOCS MULTI_ARCH_MANIFESTS SBOM \
+			SCREENSHOT_TESTING
+OPTIONS_DEFAULT=	MULTI_ARCH_MANIFESTS SBOM
+
+COMPOSE_TESTING_DESC=		Compose testing
+MULTI_ARCH_MANIFESTS_DESC=	Multi-arch manifests
+SBOM_DESC=			SBOM generation
+SCREENSHOT_TESTING_DESC=	Screenshot testing
+
+COMPOSE_TESTING_RUN_DEPENDS=		podman-compose:sysutils/podman-compose
+MULTI_ARCH_MANIFESTS_RUN_DEPENDS=	skopeo:sysutils/skopeo
+SBOM_RUN_DEPENDS=			trivy:security/trivy
+SCREENSHOT_TESTING_RUN_DEPENDS=		${PYTHON_PKGNAMEPREFIX}scikit-image>=0:graphics/py-scikit-image@${PY_FLAVOR} \
+					${PYTHON_PKGNAMEPREFIX}selenium>=0:www/py-selenium@${PY_FLAVOR} \
+					chromium>=0:www/chromium
+
+do-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}/${DOCSDIR}
+	${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}/${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/sysutils/py-dbuild/distinfo b/sysutils/py-dbuild/distinfo
new file mode 100644
index 000000000000..05393656c55b
--- /dev/null
+++ b/sysutils/py-dbuild/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1772857558
+SHA256 (daemonless-dbuild-v1.4.0_GH0.tar.gz) = b4dcbbf7421f1310027f6087ec4a89e0f6d7c51980d195cf3ae5c9327337c06c
+SIZE (daemonless-dbuild-v1.4.0_GH0.tar.gz) = 75512
diff --git a/sysutils/py-dbuild/files/patch-dbuild_ci__test.py b/sysutils/py-dbuild/files/patch-dbuild_ci__test.py
new file mode 100644
index 000000000000..807c239b9a72
--- /dev/null
+++ b/sysutils/py-dbuild/files/patch-dbuild_ci__test.py
@@ -0,0 +1,10 @@
+--- dbuild/ci_test.py.orig	2026-03-07 16:44:08 UTC
++++ dbuild/ci_test.py
+@@ -97,6 +97,7 @@ def _check_ocijail_annotation(annotation: str, base_im
+         *podman._priv_prefix(),
+         "podman", "run", "--rm",
+         "--annotation", f"{annotation}=true",
++        "--entrypoint", "",
+         base_image,
+         "/bin/echo", "ok",
+     ]
diff --git a/sysutils/py-dbuild/pkg-descr b/sysutils/py-dbuild/pkg-descr
new file mode 100644
index 000000000000..708815e2235d
--- /dev/null
+++ b/sysutils/py-dbuild/pkg-descr
@@ -0,0 +1,4 @@
+dbuild is a build tool for daemonless container images. It reads a
+project directory containing Containerfile templates and an optional
+.daemonless/config.yaml, then handles the full image lifecycle:
+build, integration test, SBOM generation, and registry push.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ac596d.44287.6b77e64e>