From: Antoine Jacoutot Subject: better interaction between meson and cargo modules To: ports@openbsd.org Date: Fri, 28 Aug 2026 17:33:08 +0200 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 .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 @@ -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