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 <[email protected]
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