Saturday, August 29, 2026

Re: better interaction between meson and cargo modules

On Fri, Aug 28, 2026 at 05:33:08PM +0200, Antoine Jacoutot wrote: > 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? And a diff to the man page. Index: share/man/man5/port-modules.5 =================================================================== RCS file: /cvs/src/share/man/man5/port-modules.5,v diff -u -p -r1.288 port-modules.5 --- share/man/man5/port-modules.5 25 Aug 2026 14:36:31 -0000 1.288 +++ share/man/man5/port-modules.5 29 Aug 2026 12:25:57 -0000 @@ -759,6 +759,23 @@ To prevent this, unless devel/cmake/core .Xr cmake 1 will be disabled by creating a link to false in ${WRKDIR}/bin/. .Pp +Specific integration for building with +.Xr cargo 1 +is automatically enabled if +.Pa devel/cargo +is included in MODULES. +.Va MODCARGO_BUILD , +.Va MODCARGO_INSTALL , +and +.Va MODCARGO_TEST +are set to +.Cm \&No , +${MODCARGO_ENV} is added to +.Va MAKE_ENV +and +${MODCARGO_configure} is added to +.Va MODMESON_pre-configure . +.Pp This module supports the following knob: .Bl -tag -width Ds .It Ev MODMESON_WANTCOLOR > 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 > -- Antoine

No comments:

Post a Comment