Index | Thread | Search

From:
Antoine Jacoutot <ajacoutot@bsdfrog.org>
Subject:
better interaction between meson and cargo modules
To:
ports@openbsd.org
Date:
Fri, 28 Aug 2026 17:33:08 +0200

Download raw body.

Thread
Hi.

Here's a diff for the meson MODULE to easily interact with the cargo one.
Along with patches for ports using both MODULEs (all rebuilt fine).
Comments, OK?

Index: meson.port.mk
===================================================================
RCS file: /cvs/ports/devel/meson/meson.port.mk,v
diff -u -p -r1.125 meson.port.mk
--- meson.port.mk	28 Aug 2026 10:56:26 -0000	1.125
+++ meson.port.mk	28 Aug 2026 15:31:50 -0000
@@ -56,6 +56,19 @@ MODMESON_CONFIGURE_ARGS +=	${_MODMESON_S
 MODMESON_post-patch=	@ln -sf /usr/bin/false ${WRKDIR}/bin/cmake
 .   endif
 
+# interaction with the devel/cargo MODULE
+.   if ${MODULES:Mdevel/cargo}
+MOD_ORDER != echo '${MODULES}' | grep -qE 'devel/meson.*devel/cargo' || echo KO
+.     if ${MOD_ORDER} == "KO"
+ERRORS +=	"Fatal: devel/meson must be listed before devel/cargo in MODULES"
+.     endif
+MODCARGO_BUILD=		No
+MODCARGO_INSTALL=	No
+MODCARGO_TEST=		No
+MAKE_ENV +=		${MODCARGO_ENV}
+MODMESON_pre-configure +=	@${MODCARGO_configure}
+.   endif
+
 CONFIGURE_ARGS +=	${MODMESON_CONFIGURE_ARGS}
 CONFIGURE_ENV +=	${MODMESON_CONFIGURE_ENV}
 MODMESON_configure=	${SETENV} ${CONFIGURE_ENV} ${LOCALBASE}/bin/meson setup \


Index: audio/euphonica/Makefile
===================================================================
RCS file: /cvs/ports/audio/euphonica/Makefile,v
diff -u -p -r1.5 Makefile
--- audio/euphonica/Makefile	18 Aug 2026 13:08:43 -0000	1.5
+++ audio/euphonica/Makefile	28 Aug 2026 15:32:27 -0000
@@ -19,8 +19,8 @@ WANTLIB += ${MODCARGO_WANTLIB} adwaita-1
 WANTLIB += glib-2.0 gobject-2.0 graphene-1.0 gtk-4 intl m pipewire-0.3
 WANTLIB += secret-1 sqlite3 ssl
 
-MODULES =		devel/cargo \
-			devel/meson
+MODULES =		devel/meson \
+			devel/cargo
 
 BUILD_DEPENDS =		devel/gettext,-tools
 
@@ -41,17 +41,6 @@ MODULES +=		lang/clang
 MODCARGO_ENV +=		CLANG_BASE_PATH=/usr \
 			LIBCLANG_PATH=${LOCALBASE}/llvm${MODCLANG_VERSION}/lib \
 			LD_LIBRARY_PATH=${LOCALBASE}/llvm${MODCLANG_VERSION}/lib
-
-CONFIGURE_STYLE =	meson
-
-MODCARGO_BUILD =	No
-MODCARGO_INSTALL =	No
-MODCARGO_TEST =		No
-
-MAKE_ENV +=		${MODCARGO_ENV}
-
-pre-configure:
-	@${MODCARGO_configure}
 
 .include "crates.inc"
 
Index: x11/gnome/librsvg/Makefile
===================================================================
RCS file: /cvs/ports/x11/gnome/librsvg/Makefile,v
diff -u -p -r1.256 Makefile
--- x11/gnome/librsvg/Makefile	21 Aug 2026 16:51:51 -0000	1.256
+++ x11/gnome/librsvg/Makefile	28 Aug 2026 15:32:27 -0000
@@ -31,19 +31,14 @@ GNOME_VERSION=		${STABLE_VERSION}
 MODULES +=		lang/clang
 MODCLANG_COMPILER_LINKS=	No
 MODCLANG_RUNDEP=	No
-MODULES +=		devel/cargo \
-			devel/meson
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
+MODULES +=		devel/meson \
+			devel/cargo
 MODGNOME_TOOLS +=	gi-docgen
 BUILD_DEPENDS=		devel/cargo-c
 # rst2man
 BUILD_DEPENDS +=	textproc/py-docutils
 LIB_DEPENDS +=		multimedia/dav1d
 PKG_ARGS=		-Dold=0 -Dstable=1
-MAKE_ENV +=		${MODCARGO_ENV}
-MAKE_FLAGS +=		V=1
 WANTLIB += ${MODCARGO_WANTLIB} cairo gdk_pixbuf-2.0 gio-2.0 glib-2.0
 WANTLIB += gobject-2.0 m pango-1.0 pangocairo-1.0 xml2
 WANTLIB += dav1d fontconfig harfbuzz
@@ -98,7 +93,6 @@ LIB_DEPENDS +=		devel/pango \
 .include "crates.inc"
 pre-configure:
 	ln -sf ${LOCALBASE}/bin/llvm-nm-${MODCLANG_VERSION} ${WRKDIR}/bin/llvm-nm
-	@${MODCARGO_configure}
 .else
 post-install:
 	rm ${PREFIX}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.{a,la}
Index: x11/gnome/gst-thumbnailers/Makefile
===================================================================
RCS file: /cvs/ports/x11/gnome/gst-thumbnailers/Makefile,v
diff -u -p -r1.1.1.1 Makefile
--- x11/gnome/gst-thumbnailers/Makefile	2 Aug 2026 10:35:18 -0000	1.1.1.1
+++ x11/gnome/gst-thumbnailers/Makefile	28 Aug 2026 15:32:27 -0000
@@ -11,24 +11,14 @@ PERMIT_PACKAGE=		Yes
 WANTLIB += ${MODCARGO_WANTLIB} gio-2.0 glib-2.0 glycin-2 gobject-2.0
 WANTLIB += gstapp-1.0 gstbase-1.0 gstreamer-1.0 gstvideo-1.0 m
 
-MODULES=		devel/cargo \
-			devel/meson \
+MODULES=		devel/meson \
+			devel/cargo \
 			x11/gnome
 
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
-
-MAKE_ENV +=		${MODCARGO_ENV}
-MAKE_FLAGS +=		V=1
-
 LIB_DEPENDS=		multimedia/gstreamer1/plugins-base \
 			x11/gnome/glycin
 
 DEBUG_PACKAGES=		${BUILD_PACKAGES}
-
-pre-configure:
-	@${MODCARGO_configure}
 
 .include "crates.inc"
 
Index: x11/gnome/papers/Makefile
===================================================================
RCS file: /cvs/ports/x11/gnome/papers/Makefile,v
diff -u -p -r1.9 Makefile
--- x11/gnome/papers/Makefile	28 Aug 2026 09:41:58 -0000	1.9
+++ x11/gnome/papers/Makefile	28 Aug 2026 15:32:27 -0000
@@ -31,21 +31,14 @@ MULTI_PACKAGES=		-main -nautilus
 COMPILER=		base-clang ports-gcc base-gcc
 COMPILER_LANGS=		c
 
-MODULES=		devel/cargo \
+MODULES=		devel/meson \
 			devel/dconf \
-			devel/meson \
+			devel/cargo \
 			x11/gnome
 
 MODGNOME_TOOLS=		desktop-file-utils gobject-introspection gi-docgen \
 			gtk-update-icon-cache yelp
 
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
-
-MAKE_ENV +=		${MODCARGO_ENV}
-MAKE_FLAGS +=		V=1
-
 BUILD_DEPENDS=		devel/appstream \
 			x11/blueprint-compiler
 
@@ -65,9 +58,6 @@ RUN_DEPENDS-nautilus=	# empty
 CONFIGURE_ARGS=		-Dsysprof=disabled
 
 DEBUG_PACKAGES=		${BUILD_PACKAGES}
-
-pre-configure:
-	@${MODCARGO_configure}
 
 .include "crates.inc"
 
Index: x11/gnome/snapshot/Makefile
===================================================================
RCS file: /cvs/ports/x11/gnome/snapshot/Makefile,v
diff -u -p -r1.2 Makefile
--- x11/gnome/snapshot/Makefile	24 Aug 2026 14:10:54 -0000	1.2
+++ x11/gnome/snapshot/Makefile	28 Aug 2026 15:32:27 -0000
@@ -15,17 +15,11 @@ WANTLIB += glycin-gtk4-2 gobject-2.0 gra
 WANTLIB += gstpbutils-1.0 gstreamer-1.0 gstvideo-1.0 gtk-4 intl
 WANTLIB += pango-1.0
 
-MODULES=		devel/cargo \
+MODULES=		devel/meson \
 			devel/dconf \
-			devel/meson \
+			devel/cargo \
 			x11/gnome
 
-# don't overwrite meson(1) targets;
-# see pre-{configure,build,install} and patch-src_meson_build
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
-
 MODGNOME_TOOLS=		desktop-file-utils gtk-update-icon-cache
 
 LIB_DEPENDS=		multimedia/gstreamer1/plugins-base \
@@ -43,15 +37,6 @@ BUILD_DEPENDS +=	multimedia/gstreamer1/p
 RUN_DEPENDS +=		multimedia/gstreamer1/plugins-bad
 
 DEBUG_PACKAGES=		${BUILD_PACKAGES}
-
-pre-configure:
-	@${MODCARGO_configure}
-
-pre-build:
-	@${MODCARGO_BUILD_TARGET}
-
-pre-install:
-	@${MODCARGO_INSTALL_TARGET}
 
 .include "crates.inc"
 
Index: x11/gnome/snapshot/patches/patch-src_meson_build
===================================================================
RCS file: x11/gnome/snapshot/patches/patch-src_meson_build
diff -N x11/gnome/snapshot/patches/patch-src_meson_build
--- x11/gnome/snapshot/patches/patch-src_meson_build	24 Aug 2026 13:47:24 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,31 +0,0 @@
-Use our devel/cargo MODULE to build instead of a custom target that needs
-network access to fetch crates.
-
-Index: src/meson.build
---- src/meson.build.orig
-+++ src/meson.build
-@@ -23,24 +23,3 @@ run_command(
-   meson.project_source_root() / 'src' / 'config.rs',
-   check: true,
- )
--
--cargo_build = custom_target(
--  'cargo-build',
--  build_by_default: true,
--  build_always_stale: true,
--  output: meson.project_name(),
--  console: true,
--  install: true,
--  install_dir: bindir,
--  depends: resources,
--  env: cargo_env,
--  command: [
--    cargo,
--    'build',
--    cargo_build_options,
--    '&&',
--    'cp',
--    cargo_target / rust_target / meson.project_name(),
--    '@OUTPUT@',
--  ],
--)
Index: multimedia/gstreamer1/plugins-rs/Makefile
===================================================================
RCS file: /cvs/ports/multimedia/gstreamer1/plugins-rs/Makefile,v
diff -u -p -r1.14 Makefile
--- multimedia/gstreamer1/plugins-rs/Makefile	1 Jul 2026 10:04:00 -0000	1.14
+++ multimedia/gstreamer1/plugins-rs/Makefile	28 Aug 2026 15:32:27 -0000
@@ -13,13 +13,10 @@ WANTLIB += ${MODCARGO_WANTLIB} cairo dav
 WANTLIB += graphene-1.0 gstbase-1.0 gstgl-1.0 gstreamer-1.0 gstrtp-1.0
 WANTLIB += gstvideo-1.0 gtk-4 m pango-1.0 pangocairo-1.0 webpdemux
 
-MODULES=		devel/cargo \
-			devel/meson
+MODULES=		devel/meson \
+			devel/cargo
 
 MODCARGO_DIST_SUBDIR=	../cargo
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
 
 # needs libclang.so
 MODULES +=		lang/clang
@@ -59,9 +56,6 @@ DISABLED +=	cdg ffv1 gif hsv png rav1e d
 CONFIGURE_ARGS +=   -D${d}=disabled
 .endfor
 ###
-
-pre-configure:
-	${MODCARGO_configure}
 
 .include "crates.inc"
 
Index: net/dnsdist/Makefile
===================================================================
RCS file: /cvs/ports/net/dnsdist/Makefile,v
diff -u -p -r1.70 Makefile
--- net/dnsdist/Makefile	6 Aug 2026 10:59:20 -0000	1.70
+++ net/dnsdist/Makefile	28 Aug 2026 15:32:27 -0000
@@ -21,19 +21,15 @@ SYSCONFDIR=		${BASESYSCONFDIR}/dnsdist
 
 COMPILER =		base-clang ports-gcc
 
+MODULES=		devel/meson
+
 .include <bsd.port.arch.mk>
 
 .if ${PROPERTIES:Mrust}
 MODULES+=		devel/cargo
 MODCARGO_CARGOTOML=	${WRKSRC}/dnsdist-rust-lib/rust/Cargo.toml
 MODCARGO_TARGET_DIR=	${WRKSRC}/dnsdist-rust-lib/rust/target
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
 CONFIGURE_ARGS=		-Dyaml=enabled
-
-pre-configure:
-			@${MODCARGO_configure}
 .else
 CONFIGURE_ARGS=		-Dyaml=disabled
 # Needed for SUPDISTFILES
@@ -55,8 +51,6 @@ LIB_DEPENDS+=		${MODLUA_LIB_DEPENDS}
 WANTLIB+=		${MODLUA_WANTLIB}
 .endif
 
-MODULES+=		devel/meson
-
 CONFIGURE_STYLE=	meson
 CONFIGURE_ARGS+=	-Dcdb=enabled \
 			-Ddns-over-https=enabled \
@@ -76,8 +70,6 @@ CONFIGURE_ARGS+=	-Dcdb=enabled \
 			-Dsystemd-service=disabled \
 			-Dtls-gnutls=disabled \
 			-Dxsk=disabled \
-
-MAKE_ENV+=		${MODCARGO_ENV}
 
 BUILD_DEPENDS=		devel/boost \
 			textproc/py-yaml
Index: net/flare-messenger/Makefile
===================================================================
RCS file: /cvs/ports/net/flare-messenger/Makefile,v
diff -u -p -r1.4 Makefile
--- net/flare-messenger/Makefile	7 Apr 2026 23:54:53 -0000	1.4
+++ net/flare-messenger/Makefile	28 Aug 2026 15:32:27 -0000
@@ -28,18 +28,12 @@ WANTLIB += ${MODCARGO_WANTLIB} adwaita-1
 WANTLIB += gio-2.0 glib-2.0 gobject-2.0 gtk-4 gtksourceview-5
 WANTLIB += intl m pango-1.0 spelling-1
 
-MODULES=	devel/cargo \
+MODULES=	devel/meson \
 		devel/dconf \
-		devel/meson
+		devel/cargo
 
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
 MODCARGO_CRATES_KEEP=	libsqlite3-sys
 
-MAKE_ENV=	${MODCARGO_ENV}
-MAKE_FLAGS=	V=1
-
 BUILD_DEPENDS=	devel/gettext,-tools \
 		devel/protobuf \
 		x11/blueprint-compiler \
@@ -54,9 +48,6 @@ LIB_DEPENDS=	textproc/libspelling \
 
 post-extract:
 	mv ${WRKDIR}/flare-* ${WRKSRC}
-
-pre-configure:
-	@${MODCARGO_configure}
 
 .include "crates.inc"
 
Index: net/powerdns_recursor/Makefile
===================================================================
RCS file: /cvs/ports/net/powerdns_recursor/Makefile,v
diff -u -p -r1.77 Makefile
--- net/powerdns_recursor/Makefile	6 Aug 2026 10:58:27 -0000	1.77
+++ net/powerdns_recursor/Makefile	28 Aug 2026 15:32:27 -0000
@@ -25,6 +25,8 @@ MAINTAINER=		Otto Moerbeek <otto@drijf.n
 
 COMPILER =		base-clang ports-gcc
 
+MODULES=		devel/meson
+
 NO_TEST=		Yes
 
 LIB_DEPENDS=		devel/boost \
@@ -36,9 +38,6 @@ LIB_DEPENDS=		devel/boost \
 MODULES+=		devel/cargo
 MODCARGO_CARGOTOML=	${WRKSRC}/rec-rust-lib/rust/Cargo.toml
 MODCARGO_TARGET_DIR=	${WRKSRC}/rec-rust-lib/rust/target 
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
 
 .include <bsd.port.arch.mk>
 
@@ -57,11 +56,6 @@ WANTLIB+=		${MODLUA_WANTLIB}
 SYSCONFDIR=		${BASESYSCONFDIR}/pdns
 SUBST_VARS+=		BASESYSCONFDIR
 
-MODULES+=		devel/meson
-
-pre-configure:
-			@${MODCARGO_configure}
-
 CONFIGURE_STYLE=	meson
 
 CONFIGURE_ARGS+=	-Dhardening=disabled \
@@ -72,8 +66,6 @@ CONFIGURE_ARGS+=	-Dhardening=disabled \
 			-Dsystemd-service=disabled \
 			-Dlibcap=disabled \
 			-Dtls-gnutls=disabled
-
-MAKE_ENV+=		${MODCARGO_ENV}
 
 EXAMPLE_DIR=		${PREFIX}/share/examples/pdns/
 
Index: x11/gnome/glycin/Makefile
===================================================================
RCS file: /cvs/ports/x11/gnome/glycin/Makefile,v
diff -u -p -r1.2 Makefile
--- x11/gnome/glycin/Makefile	22 Aug 2026 07:19:04 -0000	1.2
+++ x11/gnome/glycin/Makefile	28 Aug 2026 15:32:27 -0000
@@ -16,25 +16,17 @@ PERMIT_PACKAGE=		Yes
 WANTLIB += ${MODCARGO_WANTLIB} gio-2.0 glib-2.0 gobject-2.0 gtk-4
 WANTLIB += m
 
-MODULES=		devel/cargo \
-			devel/meson \
+MODULES=		devel/meson \
+			devel/cargo \
 			x11/gnome
 
-MODCARGO_BUILD=		No
-MODCARGO_INSTALL=	No
-MODCARGO_TEST=		No
-
 MODGNOME_TOOLS=		gobject-introspection vala
 
-MAKE_ENV +=		${MODCARGO_ENV}
 MAKE_FLAGS +=		V=1
 
 LIB_DEPENDS=		x11/gtk+4
 
 DEBUG_PACKAGES=		${BUILD_PACKAGES}
-
-pre-configure:
-	@${MODCARGO_configure}
 
 .include "crates.inc"
 


-- 
Antoine