Hi, With the hint from espie@, it is possible to have a proper inclusion of lang/rust module from devel/cargo module. So it is possible to have a more simple usage of devel/cargo.
I would introduce a new lang/rust module (with just SYSTEM_VERSION-rust, BUILD_DEPENDS+=lang/rust, and MODRUST_WANTLIB definition) And keep the devel/cargo module to: - use lang/rust MODULE - reexport MODCARGO_WANTLIB=${MODRUST_WANTLIB} So there is basically no changes in usage of devel/cargo module, and all rust ports using lang/rust module will gain SYSTEM_VERSION-rust. Regarding the diffs. arch-defines.mk could be like the following: Index: infrastructure/mk/arch-defines.mk =================================================================== RCS file: /cvs/ports/infrastructure/mk/arch-defines.mk,v retrieving revision 1.100 diff -u -p -r1.100 arch-defines.mk --- infrastructure/mk/arch-defines.mk 20 Nov 2023 19:20:32 -0000 1.100 +++ infrastructure/mk/arch-defines.mk 1 Jan 2024 06:19:53 -0000 @@ -105,6 +105,10 @@ _SYSTEM_VERSION-clang = 2 _SYSTEM_VERSION-go = ${_MODGO_SYSTEM_VERSION} .endif +# defined in rust.port.mk; added to version for all rust arches so that +# rust-compiled packages can be updated easily for a new rust compiler/stdlib +_SYSTEM_VERSION-rust ?= 0 + # @version = ${_SYSTEM_VERSION} + ${_SYSTEM_VERSION-${MACHINE_ARCH}} _PKG_ARGS_VERSION += -V ${_SYSTEM_VERSION} -V ${_SYSTEM_VERSION-${MACHINE_ARCH}} .if ${ARCH} != ${MACHINE_ARCH} It means that, by default, it will add a `-V 0' to _PKG_ARGS_VERSION, which is a nop. In lang/rust module, the variable would be defined to something else (1, 2, 3...). So a port using the lang/rust module will have `-V N' instead of the default `-V 0'. The full rust.port.mk diff is: Index: lang/rust/rust.port.mk =================================================================== RCS file: lang/rust/rust.port.mk diff -N lang/rust/rust.port.mk --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/rust/rust.port.mk 1 Jan 2024 06:19:30 -0000 @@ -0,0 +1,29 @@ +# increment after rust compiler update to trigger updates of +# all compiled rust packages (see arch-defines.mk) +_SYSTEM_VERSION-rust = 1 + +CATEGORIES += lang/rust + +# WANTLIB for Rust compiled code +# it should be kept in sync with lang/rust code +# - c/pthread : all syscalls +# - c++abi / libgcc.a : unwind +MODRUST_WANTLIB += c pthread + +.if "${MACHINE_ARCH}" != "sparc64" +MODRUST_WANTLIB += c++abi +.else +# libgcc.a is static +MODRUST_WANTLIB += +.endif + +CHECK_LIB_DEPENDS_ARGS += -S MODRUST_WANTLIB="${MODRUST_WANTLIB}" + +MODRUST_BUILDDEP ?= Yes +.if ${MODRUST_BUILDDEP:L} == "yes" +BUILD_DEPENDS += lang/rust +.endif + +# Location of rustc/rustdoc binaries +MODRUST_RUSTC_BIN = ${LOCALBASE}/bin/rustc +MODRUST_RUSTDOC_BIN = ${LOCALBASE}/bin/rustdoc And regarding devel/cargo module, it could just use lang/rust module, and re-export the MODRUST_WANTLIB definition under MODCARGO_WANTLIB name to keep to compat. (The diff includes also few cleanup). Index: devel/cargo/cargo.port.mk =================================================================== RCS file: /cvs/ports/devel/cargo/cargo.port.mk,v retrieving revision 1.41 diff -u -p -r1.41 cargo.port.mk --- devel/cargo/cargo.port.mk 6 Nov 2023 20:44:36 -0000 1.41 +++ devel/cargo/cargo.port.mk 1 Jan 2024 06:20:26 -0000 @@ -1,4 +1,4 @@ -CATEGORIES += lang/rust +MODULES += lang/rust # List of static dependencies. The format is cratename-version. # MODCARGO_CRATES will be downloaded from SITES_CRATESIO. @@ -24,20 +24,8 @@ MODCARGO_VENDOR_DIR ?= ${WRKSRC}/modcarg MODCARGO_CARGOTOML ?= ${WRKSRC}/Cargo.toml # WANTLIB for Rust compiled code -# it should be kept in sync with lang/rust code -# - c/pthread : all syscalls -# - c++abi / libgcc.a : unwind -MODCARGO_WANTLIB = c pthread - -.if "${MARCHINE_ARCH}" != "sparc64" -MODCARGO_WANTLIB += c++abi -.else -# libgcc.a is static -MODCARGO_WANTLIB += -.endif - +MODCARGO_WANTLIB = ${MODRUST_WANTLIB} CHECK_LIB_DEPENDS_ARGS += -S MODCARGO_WANTLIB="${MODCARGO_WANTLIB}" -CHECK_LIB_DEPENDS_ARGS += -F c++abi # Define SITES_CRATESIO for crates.io SITES.cargo = https://crates.io/api/v1/crates/ @@ -274,16 +262,9 @@ MODCARGO_configure += ; .endif # Build dependencies. -MODCARGO_BUILD_DEPENDS = lang/rust - # devel/cargo-generate-vendor is mandatory for hooks. BUILD_DEPENDS += devel/cargo-generate-vendor -MODCARGO_BUILDDEP ?= Yes -.if ${MODCARGO_BUILDDEP:L} == "yes" -BUILD_DEPENDS += ${MODCARGO_BUILD_DEPENDS} -.endif - # Location of cargo binary (default to devel/cargo binary) MODCARGO_CARGO_BIN ?= ${LOCALBASE}/bin/cargo @@ -305,8 +286,8 @@ MODCARGO_ENV += \ CARGO_BUILD_JOBS=${MAKE_JOBS} \ CARGO_TARGET_DIR=${MODCARGO_TARGET_DIR} \ RUST_BACKTRACE=full \ - RUSTC=${LOCALBASE}/bin/rustc \ - RUSTDOC=${LOCALBASE}/bin/rustdoc \ + RUSTC=${MODRUST_RUSTC_BIN} \ + RUSTDOC=${MODRUST_RUSTDOC_BIN} \ RUSTFLAGS="${MODCARGO_RUSTFLAGS}" # Helper to shorten cargo calls. The downside of the approch is the transition needs to be more in one-time, as there is no more "old way" and "new way": both can't coexist. As soon devel/cargo is modified to use lang/rust module, things are bumped so there are expected to be right which, after review, isn't the case at all. The current status of rust ports is that on 78 ports, 33 ports has wrong WANTLIB (not using MODCARGO_WANTLIB and hardcoding c++abi). In a first time, I will correct that (by abusing a typo in the current devel/cargo module which made MODCARGO_WANTLIB is "c pthread c++abi" in all cases even on sparc64). And once the tree would be more clean, add the lang/rust module and modify devel/cargo to use it. I add below a full diff I have for now. I will see with some MAINTAINER before changing ports. Any comments ? -- Sebastien Marie ? ports.diff Index: databases/influxdb/Makefile =================================================================== RCS file: /cvs/ports/databases/influxdb/Makefile,v retrieving revision 1.29 diff -u -p -r1.29 Makefile --- databases/influxdb/Makefile 3 Dec 2023 16:57:35 -0000 1.29 +++ databases/influxdb/Makefile 1 Jan 2024 06:12:01 -0000 @@ -17,22 +17,25 @@ PERMIT_PACKAGE = Yes MODULES = lang/go \ devel/cargo -BUILD_DEPENDS = ${MODCARGO_BUILD_DEPENDS} \ - textproc/xmlto \ +BUILD_DEPENDS = textproc/xmlto \ textproc/asciidoc #some dists have -w FIX_CLEANUP_PERMISSIONS = Yes -WANTLIB += c c++abi pthread +WANTLIB += ${MODCARGO_WANTLIB} COMPILER = base-clang ports-gcc MODCARGO_BUILD = No MODCARGO_INSTALL = No MODCARGO_CARGOTOML = ${WRKDIR}/go/pkg/mod/github.com/influxdata/flux@v0.194.3/libflux/Cargo.toml MODCARGO_TARGET_DIR = ${WRKDIR}/go/pkg/mod/github.com/influxdata/flux@v0.194.3/libflux/target + +.if ${MACHINE_ARCH} != "sparc64" # needed to make sure unwind* symbols are found MODCARGO_RUSTFLAGS +=-C link-arg=-lc++abi CGO_LDFLAGS=-lc++abi +.endif + MAKE_ENV += ${MODCARGO_ENV} CGO_LDFLAGS=${CGO_LDFLAGS} MAKE_ENV += PKG_CONFIG=${WRKSRC}/scripts/pkg-config.sh .include "crates.inc" Index: devel/cargo/cargo.port.mk =================================================================== RCS file: /cvs/ports/devel/cargo/cargo.port.mk,v retrieving revision 1.41 diff -u -p -r1.41 cargo.port.mk --- devel/cargo/cargo.port.mk 6 Nov 2023 20:44:36 -0000 1.41 +++ devel/cargo/cargo.port.mk 1 Jan 2024 06:12:01 -0000 @@ -1,4 +1,4 @@ -CATEGORIES += lang/rust +MODULES += lang/rust # List of static dependencies. The format is cratename-version. # MODCARGO_CRATES will be downloaded from SITES_CRATESIO. @@ -24,20 +24,8 @@ MODCARGO_VENDOR_DIR ?= ${WRKSRC}/modcarg MODCARGO_CARGOTOML ?= ${WRKSRC}/Cargo.toml # WANTLIB for Rust compiled code -# it should be kept in sync with lang/rust code -# - c/pthread : all syscalls -# - c++abi / libgcc.a : unwind -MODCARGO_WANTLIB = c pthread - -.if "${MARCHINE_ARCH}" != "sparc64" -MODCARGO_WANTLIB += c++abi -.else -# libgcc.a is static -MODCARGO_WANTLIB += -.endif - +MODCARGO_WANTLIB = ${MODRUST_WANTLIB} CHECK_LIB_DEPENDS_ARGS += -S MODCARGO_WANTLIB="${MODCARGO_WANTLIB}" -CHECK_LIB_DEPENDS_ARGS += -F c++abi # Define SITES_CRATESIO for crates.io SITES.cargo = https://crates.io/api/v1/crates/ @@ -274,16 +262,9 @@ MODCARGO_configure += ; .endif # Build dependencies. -MODCARGO_BUILD_DEPENDS = lang/rust - # devel/cargo-generate-vendor is mandatory for hooks. BUILD_DEPENDS += devel/cargo-generate-vendor -MODCARGO_BUILDDEP ?= Yes -.if ${MODCARGO_BUILDDEP:L} == "yes" -BUILD_DEPENDS += ${MODCARGO_BUILD_DEPENDS} -.endif - # Location of cargo binary (default to devel/cargo binary) MODCARGO_CARGO_BIN ?= ${LOCALBASE}/bin/cargo @@ -305,8 +286,8 @@ MODCARGO_ENV += \ CARGO_BUILD_JOBS=${MAKE_JOBS} \ CARGO_TARGET_DIR=${MODCARGO_TARGET_DIR} \ RUST_BACKTRACE=full \ - RUSTC=${LOCALBASE}/bin/rustc \ - RUSTDOC=${LOCALBASE}/bin/rustdoc \ + RUSTC=${MODRUST_RUSTC_BIN} \ + RUSTDOC=${MODRUST_RUSTDOC_BIN} \ RUSTFLAGS="${MODCARGO_RUSTFLAGS}" # Helper to shorten cargo calls. Index: devel/cargo-audit/Makefile =================================================================== RCS file: /cvs/ports/devel/cargo-audit/Makefile,v retrieving revision 1.8 diff -u -p -r1.8 Makefile --- devel/cargo-audit/Makefile 21 Sep 2023 09:49:49 -0000 1.8 +++ devel/cargo-audit/Makefile 1 Jan 2024 06:12:01 -0000 @@ -17,7 +17,7 @@ HOMEPAGE = https://github.com/RustSec/r # Apache 2/MIT PERMIT_PACKAGE = Yes -WANTLIB += c c++abi crypto git2 m pthread ssh2 ssl +WANTLIB += ${MODCARGO_WANTLIB} crypto git2 m ssh2 ssl LIB_DEPENDS = devel/libgit2/libgit2 \ security/libssh2 Index: devel/cbindgen/Makefile =================================================================== RCS file: /cvs/ports/devel/cbindgen/Makefile,v retrieving revision 1.46 diff -u -p -r1.46 Makefile --- devel/cbindgen/Makefile 14 Sep 2023 11:42:28 -0000 1.46 +++ devel/cbindgen/Makefile 1 Jan 2024 06:12:01 -0000 @@ -15,7 +15,7 @@ MODULES = devel/cargo CONFIGURE_STYLE = cargo -WANTLIB += c c++abi pthread +WANTLIB += ${MODCARGO_WANTLIB} TEST_ENV = CC=${CC} CXX=${CXX} Index: devel/elfcat/Makefile =================================================================== RCS file: /cvs/ports/devel/elfcat/Makefile,v retrieving revision 1.6 diff -u -p -r1.6 Makefile --- devel/elfcat/Makefile 1 Mar 2023 12:06:26 -0000 1.6 +++ devel/elfcat/Makefile 1 Jan 2024 06:12:01 -0000 @@ -10,9 +10,9 @@ CATEGORIES = devel # zlib PERMIT_PACKAGE = Yes -WANTLIB += c c++abi m pthread +WANTLIB += ${MODCARGO_WANTLIB} m -MODULES = devel/cargo +MODULES = devel/cargo CONFIGURE_STYLE = cargo Index: devel/sccache/Makefile =================================================================== RCS file: /cvs/ports/devel/sccache/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- devel/sccache/Makefile 17 Dec 2023 06:06:10 -0000 1.4 +++ devel/sccache/Makefile 1 Jan 2024 06:12:01 -0000 @@ -19,8 +19,7 @@ PERMIT_PACKAGE = Yes WANTLIB += crypto m ssl zstd ${MODCARGO_WANTLIB} MODULES = devel/cargo -BUILD_DEPENDS = lang/rust \ - security/rust-ring +BUILD_DEPENDS = security/rust-ring SEPARATE_BUILD = Yes Index: devel/snare/Makefile =================================================================== RCS file: /cvs/ports/devel/snare/Makefile,v retrieving revision 1.15 diff -u -p -r1.15 Makefile --- devel/snare/Makefile 21 Sep 2023 09:50:06 -0000 1.15 +++ devel/snare/Makefile 1 Jan 2024 06:12:01 -0000 @@ -14,7 +14,7 @@ MAINTAINER = Laurence Tratt < # Apache-2.0/MIT PERMIT_PACKAGE = Yes -WANTLIB += c c++abi m pthread +WANTLIB += ${MODCARGO_WANTLIB} m DISTFILES += ${DISTNAME}${EXTRACT_SUFX} MODULES = devel/cargo Index: devel/spidermonkey115/Makefile =================================================================== RCS file: /cvs/ports/devel/spidermonkey115/Makefile,v retrieving revision 1.3 diff -u -p -r1.3 Makefile --- devel/spidermonkey115/Makefile 20 Dec 2023 13:58:42 -0000 1.3 +++ devel/spidermonkey115/Makefile 1 Jan 2024 06:12:01 -0000 @@ -30,9 +30,10 @@ EXTRACT_SUFX = .tar.xz PERMIT_PACKAGE= Yes WANTLIB += curses ffi icudata icui18n icuuc m nspr4 plc4 plds4 z -WANTLIB += ${COMPILER_LIBCXX} +WANTLIB += ${COMPILER_LIBCXX} ${MODRUST_WANTLIB} -MODULES = lang/python +MODULES = lang/python \ + lang/rust MODPY_RUNDEP = No @@ -47,8 +48,7 @@ LIB_DEPENDS = devel/libffi \ DEBUG_PACKAGES = ${BUILD_PACKAGES} -BUILD_DEPENDS = devel/cbindgen \ - lang/rust +BUILD_DEPENDS = devel/cbindgen SEPARATE_BUILD = Yes WRKDIST = ${WRKDIR}/firefox-${V} Index: games/0ad/base/Makefile =================================================================== RCS file: /cvs/ports/games/0ad/base/Makefile,v retrieving revision 1.47 diff -u -p -r1.47 Makefile --- games/0ad/base/Makefile 16 Nov 2023 21:54:16 -0000 1.47 +++ games/0ad/base/Makefile 1 Jan 2024 06:12:01 -0000 @@ -10,13 +10,12 @@ USE_NOBTCFI = Yes SO_VERSION = 0.0 SHARED_LIBS += mozjs78-ps-release ${SO_VERSION} -WANTLIB += ${COMPILER_LIBCXX} SDL2 X11 boost_filesystem -WANTLIB += boost_system c crypto curl enet execinfo fmt freetype gloox iconv +WANTLIB += ${MODRUST_WANTLIB} ${COMPILER_LIBCXX} SDL2 X11 boost_filesystem +WANTLIB += boost_system crypto curl enet execinfo fmt freetype gloox iconv WANTLIB += icudata icui18n icuuc idn m miniupnpc ogg openal WANTLIB += png sodium ssl vorbis vorbisfile xml2 z BUILD_DEPENDS = archivers/zip \ - lang/rust,-main \ shells/bash LIB_DEPENDS = audio/libvorbis \ audio/openal \ @@ -34,7 +33,8 @@ LIB_DEPENDS = audio/libvorbis \ textproc/libxml RUN_DEPENDS = devel/desktop-file-utils \ games/0ad/data=${V} -MODULES = lang/python +MODULES = lang/python \ + lang/rust # gnu++17 COMPILER = base-clang ports-gcc Index: infrastructure/mk/arch-defines.mk =================================================================== RCS file: /cvs/ports/infrastructure/mk/arch-defines.mk,v retrieving revision 1.100 diff -u -p -r1.100 arch-defines.mk --- infrastructure/mk/arch-defines.mk 20 Nov 2023 19:20:32 -0000 1.100 +++ infrastructure/mk/arch-defines.mk 1 Jan 2024 06:12:02 -0000 @@ -105,6 +105,10 @@ _SYSTEM_VERSION-clang = 2 _SYSTEM_VERSION-go = ${_MODGO_SYSTEM_VERSION} .endif +# defined in rust.port.mk; added to version for all rust arches so that +# rust-compiled packages can be updated easily for a new rust compiler/stdlib +_SYSTEM_VERSION-rust ?= 0 + # @version = ${_SYSTEM_VERSION} + ${_SYSTEM_VERSION-${MACHINE_ARCH}} _PKG_ARGS_VERSION += -V ${_SYSTEM_VERSION} -V ${_SYSTEM_VERSION-${MACHINE_ARCH}} .if ${ARCH} != ${MACHINE_ARCH} Index: lang/ruby/3.2/Makefile =================================================================== RCS file: /cvs/ports/lang/ruby/3.2/Makefile,v retrieving revision 1.7 diff -u -p -r1.7 Makefile --- lang/ruby/3.2/Makefile 27 Dec 2023 20:06:42 -0000 1.7 +++ lang/ruby/3.2/Makefile 1 Jan 2024 06:12:02 -0000 @@ -15,7 +15,7 @@ FLAVOR?= .if ${MACHINE_ARCH:Mamd64} || ${MACHINE_ARCH:Maarch64} # Support YJIT JIT compiler on arches Ruby supports -BUILD_DEPENDS += lang/rust +MODULES += lang/rust WANTLIB-main += c++abi MAKE_ENV += LIBRUBY_DLDFLAGS="-lc++abi" .endif Index: lang/ruby/3.3/Makefile =================================================================== RCS file: /cvs/ports/lang/ruby/3.3/Makefile,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 Makefile --- lang/ruby/3.3/Makefile 27 Dec 2023 20:04:59 -0000 1.1.1.1 +++ lang/ruby/3.3/Makefile 1 Jan 2024 06:12:02 -0000 @@ -16,7 +16,7 @@ FLAVOR?= .if ${MACHINE_ARCH:Mamd64} || ${MACHINE_ARCH:Maarch64} # Support YJIT JIT compiler on arches Ruby supports -BUILD_DEPENDS += lang/rust +MODULES += lang/rust WANTLIB-main += c++abi MAKE_ENV += LIBRUBY_DLDFLAGS="-lc++abi" .endif Index: lang/rust/rust.port.mk =================================================================== RCS file: lang/rust/rust.port.mk diff -N lang/rust/rust.port.mk --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/rust/rust.port.mk 1 Jan 2024 06:12:02 -0000 @@ -0,0 +1,29 @@ +# increment after rust compiler update to trigger updates of +# all compiled rust packages (see arch-defines.mk) +_SYSTEM_VERSION-rust = 1 + +CATEGORIES += lang/rust + +# WANTLIB for Rust compiled code +# it should be kept in sync with lang/rust code +# - c/pthread : all syscalls +# - c++abi / libgcc.a : unwind +MODRUST_WANTLIB += c pthread + +.if "${MACHINE_ARCH}" != "sparc64" +MODRUST_WANTLIB += c++abi +.else +# libgcc.a is static +MODRUST_WANTLIB += +.endif + +CHECK_LIB_DEPENDS_ARGS += -S MODRUST_WANTLIB="${MODRUST_WANTLIB}" + +MODRUST_BUILDDEP ?= Yes +.if ${MODRUST_BUILDDEP:L} == "yes" +BUILD_DEPENDS += lang/rust +.endif + +# Location of rustc/rustdoc binaries +MODRUST_RUSTC_BIN = ${LOCALBASE}/bin/rustc +MODRUST_RUSTDOC_BIN = ${LOCALBASE}/bin/rustdoc Index: mail/meli/Makefile =================================================================== RCS file: /cvs/ports/mail/meli/Makefile,v retrieving revision 1.13 diff -u -p -r1.13 Makefile --- mail/meli/Makefile 3 Nov 2023 11:30:32 -0000 1.13 +++ mail/meli/Makefile 1 Jan 2024 06:12:02 -0000 @@ -30,7 +30,7 @@ LIB_DEPENDS = devel/pcre2 \ net/curl \ databases/sqlite3 -WANTLIB += c c++abi crypto curl m pcre2-8 pthread sqlite3 ssl +WANTLIB += ${MODCARGO_WANTLIB} crypto curl m pcre2-8 sqlite3 ssl PORTHOME = ${WRKDIR} post-install: Index: mail/stalwart/cli/Makefile =================================================================== RCS file: /cvs/ports/mail/stalwart/cli/Makefile,v retrieving revision 1.7 diff -u -p -r1.7 Makefile --- mail/stalwart/cli/Makefile 4 Sep 2023 14:01:49 -0000 1.7 +++ mail/stalwart/cli/Makefile 1 Jan 2024 06:12:02 -0000 @@ -6,6 +6,6 @@ REVISION = 1 .include "crates.inc" -WANTLIB += c c++abi m pthread +WANTLIB += ${MODCARGO_WANTLIB} m .include <bsd.port.mk> Index: mail/stalwart/imap/Makefile =================================================================== RCS file: /cvs/ports/mail/stalwart/imap/Makefile,v retrieving revision 1.7 diff -u -p -r1.7 Makefile --- mail/stalwart/imap/Makefile 4 Sep 2023 14:01:51 -0000 1.7 +++ mail/stalwart/imap/Makefile 1 Jan 2024 06:12:02 -0000 @@ -13,7 +13,7 @@ MODCARGO_CRATES += jmap-client 0.2.0 # A MODCARGO_CRATES += mail-parser 0.7.0 # Apache-2.0 OR MIT MODCARGO_CRATES += reqwest 0.11.11 # MIT/Apache-2.0 -WANTLIB += c c++abi pthread +WANTLIB += ${MODCARGO_WANTLIB} post-install: ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/stalwart/imap Index: mail/stalwart/jmap/Makefile =================================================================== RCS file: /cvs/ports/mail/stalwart/jmap/Makefile,v retrieving revision 1.10 diff -u -p -r1.10 Makefile --- mail/stalwart/jmap/Makefile 6 Dec 2023 09:48:55 -0000 1.10 +++ mail/stalwart/jmap/Makefile 1 Jan 2024 06:12:02 -0000 @@ -29,7 +29,7 @@ MAKE_ENV += DEP_BZIP2_INCLUDE=${LOCALBAS LIB_DEPENDS += archivers/zstd \ archivers/bzip2 -WANTLIB += ${COMPILER_LIBCXX} bz2 c m zstd +WANTLIB += ${MODCARGO_WANTLIB} ${COMPILER_LIBCXX} bz2 m zstd post-install: mv ${PREFIX}/bin/export ${PREFIX}/bin/stalwart-export Index: mail/stalwart/smtp/Makefile =================================================================== RCS file: /cvs/ports/mail/stalwart/smtp/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- mail/stalwart/smtp/Makefile 4 Sep 2023 14:01:54 -0000 1.4 +++ mail/stalwart/smtp/Makefile 1 Jan 2024 06:12:02 -0000 @@ -22,7 +22,7 @@ MODCARGO_CRATES_KEEP += libsqlite3-sys BUILD_DEPENDS = devel/protobuf LIB_DEPENDS = archivers/zstd \ archivers/bzip2 -WANTLIB += bz2 c c++abi m pthread zstd +WANTLIB += ${MOCARGO_WANTLIB} bz2 m zstd post-install: ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/stalwart/smtp Index: net/bore/Makefile =================================================================== RCS file: /cvs/ports/net/bore/Makefile,v retrieving revision 1.8 diff -u -p -r1.8 Makefile --- net/bore/Makefile 27 Sep 2023 14:18:01 -0000 1.8 +++ net/bore/Makefile 1 Jan 2024 06:12:02 -0000 @@ -10,7 +10,7 @@ MAINTAINER = Delan Azabani <delan@azaba PERMIT_PACKAGE = Yes # uses pledge(2) -WANTLIB += c c++abi pthread +WANTLIB += ${MODCARGO_WANTLIB} SITES = https://bitbucket.org/delan/nonymous/get/ Index: net/dog/Makefile =================================================================== RCS file: /cvs/ports/net/dog/Makefile,v retrieving revision 1.10 diff -u -p -r1.10 Makefile --- net/dog/Makefile 27 Sep 2023 14:18:05 -0000 1.10 +++ net/dog/Makefile 1 Jan 2024 06:12:02 -0000 @@ -10,7 +10,7 @@ CATEGORIES = net # EUPL PERMIT_PACKAGE = Yes -WANTLIB += c c++abi crypto pthread ssl +WANTLIB += ${MODCARGO_WANTLIB} crypto ssl MODULES = devel/cargo Index: net/routinator/Makefile =================================================================== RCS file: /cvs/ports/net/routinator/Makefile,v retrieving revision 1.43 diff -u -p -r1.43 Makefile --- net/routinator/Makefile 22 Sep 2023 10:21:48 -0000 1.43 +++ net/routinator/Makefile 1 Jan 2024 06:12:02 -0000 @@ -27,7 +27,7 @@ CATEGORIES = net PERMIT_PACKAGE = Yes PERMIT_DISTFILES = includes bundled ARIN TAL which requires agreement with https://www.arin.net/resources/manage/rpki/rpa.pdf -WANTLIB += c c++abi m pthread +WANTLIB += ${MODCARGO_WANTLIB} m MODULES = devel/cargo Index: net/synapse/Makefile =================================================================== RCS file: /cvs/ports/net/synapse/Makefile,v retrieving revision 1.68 diff -u -p -r1.68 Makefile --- net/synapse/Makefile 13 Dec 2023 08:06:50 -0000 1.68 +++ net/synapse/Makefile 1 Jan 2024 06:12:02 -0000 @@ -17,7 +17,7 @@ PERMIT_PACKAGE = Yes MODULES = devel/cargo \ lang/python -WANTLIB += ${COMPILER_LIBCXX} +WANTLIB += ${MODCARGO_WANTLIB} MODPY_PYBUILD = poetry-core Index: security/clamav/Makefile =================================================================== RCS file: /cvs/ports/security/clamav/Makefile,v retrieving revision 1.166 diff -u -p -r1.166 Makefile --- security/clamav/Makefile 26 Oct 2023 06:40:00 -0000 1.166 +++ security/clamav/Makefile 1 Jan 2024 06:12:02 -0000 @@ -21,7 +21,6 @@ WANTLIB += mspack pcre2-8 ssl util xml2 COMPILER= base-clang ports-gcc -BUILD_DEPENDS= lang/rust LIB_DEPENDS= archivers/bzip2 \ archivers/libmspack \ devel/json-c \ @@ -33,7 +32,8 @@ TEST_DEPENDS= security/clamav SITES= https://www.clamav.net/downloads/production/ -MODULES= devel/cmake +MODULES= devel/cmake \ + lang/rust CONFIGURE_ARGS= -DCLAMAV_USER=_clamav \ -DCLAMAV_GROUP=_clamav \ -DENABLE_EXTERNAL_MSPACK=ON \ Index: security/py-cryptography/Makefile =================================================================== RCS file: /cvs/ports/security/py-cryptography/Makefile,v retrieving revision 1.78 diff -u -p -r1.78 Makefile --- security/py-cryptography/Makefile 30 Nov 2023 13:43:59 -0000 1.78 +++ security/py-cryptography/Makefile 1 Jan 2024 06:12:03 -0000 @@ -14,7 +14,7 @@ HOMEPAGE= https://cryptography.io/ # dual: BSD or Apache 2 PERMIT_PACKAGE= Yes -WANTLIB= ${MODPY_WANTLIB} c crypto c++abi pthread ssl +WANTLIB= ${MODPY_WANTLIB} ${MODCARGO_WANTLIB} crypto ssl FLAVORS= python3 FLAVOR= python3 Index: security/rbw/Makefile =================================================================== RCS file: /cvs/ports/security/rbw/Makefile,v retrieving revision 1.20 diff -u -p -r1.20 Makefile --- security/rbw/Makefile 23 Dec 2023 18:18:33 -0000 1.20 +++ security/rbw/Makefile 1 Jan 2024 06:12:03 -0000 @@ -15,7 +15,7 @@ SITES = https://git.tozt.net/rbw/snapsh # MIT X11 PERMIT_PACKAGE = Yes -WANTLIB += c c++abi crypto m pthread ssl +WANTLIB += ${MODCARGO_WANTLIB} crypto m ssl DISTFILES += ${DISTNAME}${EXTRACT_SUFX} Index: security/sn0int/Makefile =================================================================== RCS file: /cvs/ports/security/sn0int/Makefile,v retrieving revision 1.22 diff -u -p -r1.22 Makefile --- security/sn0int/Makefile 4 Sep 2023 13:02:47 -0000 1.22 +++ security/sn0int/Makefile 1 Jan 2024 06:12:03 -0000 @@ -17,7 +17,7 @@ PERMIT_PACKAGE = Yes # uses pledge() LIB_DEPENDS = databases/sqlite3 security/libsodium ${MODLUA_LIB_DEPENDS} -WANTLIB += c c++abi m pthread sqlite3 sodium ${MODLUA_WANTLIB} +WANTLIB += m sqlite3 sodium ${MODLUA_WANTLIB} ${MODCARGO_WANTLIB} MODLUA_VERSION = 5.2 MODLUA_SA = Yes Index: security/suricata/Makefile =================================================================== RCS file: /cvs/ports/security/suricata/Makefile,v retrieving revision 1.63 diff -u -p -r1.63 Makefile --- security/suricata/Makefile 17 Dec 2023 15:29:06 -0000 1.63 +++ security/suricata/Makefile 1 Jan 2024 06:12:03 -0000 @@ -21,15 +21,15 @@ PERMIT_PACKAGE= Yes SITES = https://www.openinfosecfoundation.org/download/ # uses pledge() -WANTLIB += ${COMPILER_LIBCXX} c elf iconv jansson lz4 m magic maxminddb +WANTLIB += ${MODRUST_WANTLIB} ${COMPILER_LIBCXX} elf iconv jansson lz4 m magic maxminddb WANTLIB += net pcap pcre2-8 yaml-0 z -MODULES = lang/python +MODULES = lang/python \ + lang/rust BUILD_DEPENDS = devel/py-setuptools${MODPY_FLAVOR} \ textproc/py-sphinx${MODPY_FLAVOR} \ - textproc/py-yaml${MODPY_FLAVOR} \ - lang/rust + textproc/py-yaml${MODPY_FLAVOR} RUN_DEPENDS = textproc/py-yaml${MODPY_FLAVOR} Index: sysutils/bat/Makefile =================================================================== RCS file: /cvs/ports/sysutils/bat/Makefile,v retrieving revision 1.20 diff -u -p -r1.20 Makefile --- sysutils/bat/Makefile 13 Nov 2023 07:33:55 -0000 1.20 +++ sysutils/bat/Makefile 1 Jan 2024 06:12:03 -0000 @@ -13,7 +13,7 @@ MODULES = devel/cargo # for riscv64 and powerpc64, please keep: cc >= 1.0.73 and libc >= 0.2.113 MODCARGO_CRATES_UPDATE = cc -WANTLIB += c c++abi git2 m onig pthread +WANTLIB += ${MODCARGO_WANTLIB} git2 m onig CONFIGURE_STYLE = cargo SEPARATE_BUILD = Yes Index: sysutils/broot/Makefile =================================================================== RCS file: /cvs/ports/sysutils/broot/Makefile,v retrieving revision 1.17 diff -u -p -r1.17 Makefile --- sysutils/broot/Makefile 9 Dec 2023 16:16:33 -0000 1.17 +++ sysutils/broot/Makefile 1 Jan 2024 06:12:03 -0000 @@ -11,7 +11,7 @@ HOMEPAGE = https://dystroy.org/broot/ # MIT PERMIT_PACKAGE = Yes -WANTLIB += c c++abi m onig pthread z +WANTLIB += ${MODCARGO_WANTLIB} m onig z MODULES = devel/cargo MODCARGO_CRATES_KEEP += libgit2-sys Index: sysutils/fclones/Makefile =================================================================== RCS file: /cvs/ports/sysutils/fclones/Makefile,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 Makefile --- sysutils/fclones/Makefile 13 Nov 2023 18:54:44 -0000 1.1.1.1 +++ sysutils/fclones/Makefile 1 Jan 2024 06:12:03 -0000 @@ -9,7 +9,7 @@ MAINTAINER = Frederic Cambus <fcambus@o # MIT PERMIT_PACKAGE = Yes -WANTLIB += ${MODCARGO_WANTLIB} m pthread +WANTLIB += ${MODCARGO_WANTLIB} m MODULES = devel/cargo Index: textproc/amber/Makefile =================================================================== RCS file: /cvs/ports/textproc/amber/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- textproc/amber/Makefile 30 Jan 2023 13:28:40 -0000 1.5 +++ textproc/amber/Makefile 1 Jan 2024 06:12:03 -0000 @@ -11,7 +11,7 @@ MAINTAINER = Edd Barrett <edd@openbsd.o # MIT PERMIT_PACKAGE = Yes -WANTLIB += c c++abi pthread +WANTLIB += ${MODCARGO_WANTLIB} MODULES = devel/cargo CONFIGURE_STYLE = cargo Index: textproc/jless/Makefile =================================================================== RCS file: /cvs/ports/textproc/jless/Makefile,v retrieving revision 1.9 diff -u -p -r1.9 Makefile --- textproc/jless/Makefile 18 Sep 2023 23:13:30 -0000 1.9 +++ textproc/jless/Makefile 1 Jan 2024 06:12:03 -0000 @@ -10,7 +10,7 @@ CATEGORIES = textproc # BSD PERMIT_PACKAGE = Yes -WANTLIB += c c++abi pthread xcb +WANTLIB += ${MODCARGO_WANTLIB} xcb HOMEPAGE = https://jless.io/ Index: textproc/mdbook/Makefile =================================================================== RCS file: /cvs/ports/textproc/mdbook/Makefile,v retrieving revision 1.13 diff -u -p -r1.13 Makefile --- textproc/mdbook/Makefile 30 Jan 2023 13:28:40 -0000 1.13 +++ textproc/mdbook/Makefile 1 Jan 2024 06:12:03 -0000 @@ -12,7 +12,7 @@ MAINTAINER = Edd Barrett <edd@openbsd.o # MPL-2.0 + dependencies below. PERMIT_PACKAGE = Yes -WANTLIB += c c++abi m pthread +WANTLIB += ${MODCARGO_WANTLIB} m MODULES = devel/cargo Index: www/castor/Makefile =================================================================== RCS file: /cvs/ports/www/castor/Makefile,v retrieving revision 1.14 diff -u -p -r1.14 Makefile --- www/castor/Makefile 27 Sep 2023 19:13:01 -0000 1.14 +++ www/castor/Makefile 1 Jan 2024 06:12:03 -0000 @@ -13,7 +13,7 @@ HOMEPAGE= https://git.sr.ht/~julienxx/c # MIT PERMIT_PACKAGE= Yes -WANTLIB += c c++abi crypto gdk-3 glib-2.0 gobject-2.0 gtk-3 pthread +WANTLIB += ${MODCARGO_WANTLIB} crypto gdk-3 glib-2.0 gobject-2.0 gtk-3 WANTLIB += ssl SITES= https://git.sr.ht/~julienxx/ Index: www/geckodriver/Makefile =================================================================== RCS file: /cvs/ports/www/geckodriver/Makefile,v retrieving revision 1.13 diff -u -p -r1.13 Makefile --- www/geckodriver/Makefile 30 Jan 2023 13:28:40 -0000 1.13 +++ www/geckodriver/Makefile 1 Jan 2024 06:12:03 -0000 @@ -18,6 +18,6 @@ SEPARATE_BUILD = Yes .include "modules.inc" LIB_DEPENDS += archivers/bzip2 -WANTLIB += c c++abi m pthread bz2 +WANTLIB += ${MODCARGO_WANTLIB} m bz2 .include <bsd.port.mk> Index: www/mozilla/mozilla.port.mk =================================================================== RCS file: /cvs/ports/www/mozilla/mozilla.port.mk,v retrieving revision 1.171 diff -u -p -r1.171 mozilla.port.mk --- www/mozilla/mozilla.port.mk 19 Dec 2023 14:23:43 -0000 1.171 +++ www/mozilla/mozilla.port.mk 1 Jan 2024 06:12:03 -0000 @@ -112,7 +112,7 @@ MODMOZ_BUILD_DEPENDS += devel/nasm .endif # 53 needs rust -MODMOZ_BUILD_DEPENDS += lang/rust +MODULES += lang/rust #1670807 MODMOZ_BUILD_DEPENDS += devel/m4 @@ -120,7 +120,7 @@ MODMOZ_WANTLIB += X11 X11-xcb Xcomposite atk-1.0 c cairo fontconfig freetype gdk_pixbuf-2.0 \ gio-2.0 glib-2.0 gobject-2.0 harfbuzz intl m \ pango-1.0 pangocairo-1.0 sndio z xcb xcb-shm -MODMOZ_WANTLIB += ${COMPILER_LIBCXX} +MODMOZ_WANTLIB += ${COMPILER_LIBCXX} ${MODRUST_WANTLIB} WANTLIB += ${MODMOZ_WANTLIB} BUILD_DEPENDS +=${MODMOZ_BUILD_DEPENDS} Index: www/newsboat/Makefile =================================================================== RCS file: /cvs/ports/www/newsboat/Makefile,v retrieving revision 1.41 diff -u -p -r1.41 Makefile --- www/newsboat/Makefile 27 Sep 2023 19:13:04 -0000 1.41 +++ www/newsboat/Makefile 1 Jan 2024 06:12:03 -0000 @@ -12,7 +12,7 @@ MAINTAINER = Frederic Cambus <fcambus@op # MIT PERMIT_PACKAGE = Yes -WANTLIB += ${COMPILER_LIBCXX} c crypto curl curses iconv intl +WANTLIB += ${COMPILER_LIBCXX} ${MODCARGO_WANTLIB} crypto curl curses iconv intl WANTLIB += json-c m sqlite3 ssl stfl xml2 SITES = https://www.newsboat.org/releases/$V/ Index: www/nextcloud_notify_push/Makefile =================================================================== RCS file: /cvs/ports/www/nextcloud_notify_push/Makefile,v retrieving revision 1.27 diff -u -p -r1.27 Makefile --- www/nextcloud_notify_push/Makefile 16 Dec 2023 10:14:35 -0000 1.27 +++ www/nextcloud_notify_push/Makefile 1 Jan 2024 06:12:03 -0000 @@ -27,7 +27,7 @@ MODULES = devel/cargo .include "crates.inc" MODCARGO_CRATES_KEEP += libsqlite3-sys -WANTLIB += c c++abi m pthread +WANTLIB += ${MODCARGO_WANTLIB} m CONFIGURE_STYLE = cargo SEPARATE_BUILD = Yes Index: www/py-adblock/Makefile =================================================================== RCS file: /cvs/ports/www/py-adblock/Makefile,v retrieving revision 1.26 diff -u -p -r1.26 Makefile --- www/py-adblock/Makefile 22 Dec 2023 14:19:27 -0000 1.26 +++ www/py-adblock/Makefile 1 Jan 2024 06:12:03 -0000 @@ -18,7 +18,7 @@ CATEGORIES = www # MIT PERMIT_PACKAGE =Yes -WANTLIB += c c++abi pthread +WANTLIB += ${MODCARGO_WANTLIB} MODULES = devel/cargo \ lang/python Index: x11/alacritty/Makefile =================================================================== RCS file: /cvs/ports/x11/alacritty/Makefile,v retrieving revision 1.16 diff -u -p -r1.16 Makefile --- x11/alacritty/Makefile 3 Nov 2023 12:55:05 -0000 1.16 +++ x11/alacritty/Makefile 1 Jan 2024 06:12:03 -0000 @@ -12,7 +12,7 @@ HOMEPAGE = https://alacritty.org/ # Apache 2.0 PERMIT_PACKAGE = Yes -WANTLIB += c c++abi fontconfig freetype m pthread util +WANTLIB += ${MODCARGO_WANTLIB} fontconfig freetype m util # xcb is dlopen()'d WANTLIB += xcb Index: x11/gnome/librsvg/Makefile =================================================================== RCS file: /cvs/ports/x11/gnome/librsvg/Makefile,v retrieving revision 1.216 diff -u -p -r1.216 Makefile --- x11/gnome/librsvg/Makefile 16 Dec 2023 12:38:06 -0000 1.216 +++ x11/gnome/librsvg/Makefile 1 Jan 2024 06:12:03 -0000 @@ -27,12 +27,11 @@ MODCARGO_BUILD= No MODCARGO_INSTALL= No MODCARGO_TEST= No MODPY_RUNDEP= No -BUILD_DEPENDS= lang/rust \ - textproc/py-docutils${MODPY_FLAVOR} +BUILD_DEPENDS= textproc/py-docutils${MODPY_FLAVOR} PKG_ARGS= -Dold=0 -Dstable=1 MAKE_ENV += ${MODCARGO_ENV} MAKE_FLAGS += V=1 -WANTLIB += ${COMPILER_LIBCXX} Xau Xdmcp cairo-gobject jpeg +WANTLIB += ${MODCARGO_WANTLIB} ${COMPILER_LIBCXX} Xau Xdmcp cairo-gobject jpeg .else ### old REVISION= 5 Index: x11/gnome/tour/Makefile =================================================================== RCS file: /cvs/ports/x11/gnome/tour/Makefile,v retrieving revision 1.14 diff -u -p -r1.14 Makefile --- x11/gnome/tour/Makefile 8 Nov 2023 18:49:09 -0000 1.14 +++ x11/gnome/tour/Makefile 1 Jan 2024 06:12:03 -0000 @@ -13,15 +13,14 @@ DISTFILES= ${GNOME_PROJECT}-${GNOME_VER # gnome-tour source code results in effective GPLv3+ for the resulting binary PERMIT_PACKAGE= Yes -WANTLIB += adwaita-1 c c++abi gio-2.0 glib-2.0 gobject-2.0 gtk-4 -WANTLIB += intl m pthread +WANTLIB += ${MODRUST_WANTLIB} adwaita-1 gio-2.0 glib-2.0 gobject-2.0 gtk-4 +WANTLIB += intl m MODULES= devel/meson \ + lang/rust \ x11/gnome MODGNOME_TOOLS= desktop-file-utils gtk-update-icon-cache - -BUILD_DEPENDS= lang/rust LIB_DEPENDS= x11/gnome/libadwaita Index: x11/xcolor/Makefile =================================================================== RCS file: /cvs/ports/x11/xcolor/Makefile,v retrieving revision 1.13 diff -u -p -r1.13 Makefile --- x11/xcolor/Makefile 30 Jan 2023 13:28:40 -0000 1.13 +++ x11/xcolor/Makefile 1 Jan 2024 06:12:03 -0000 @@ -16,7 +16,7 @@ MAINTAINER = Laurence Tratt <laurie@trat # MIT PERMIT_PACKAGE = Yes -WANTLIB += c c++abi m pthread xcb xcb-shape X11 X11-xcb Xcursor +WANTLIB += ${MODCARGO_WANTLIB} m xcb xcb-shape X11 X11-xcb Xcursor MODULES = devel/cargo \ lang/python Index: share/man/man5/cargo-module.5 =================================================================== RCS file: /cvs/src/share/man/man5/cargo-module.5,v retrieving revision 1.7 diff -u -p -r1.7 cargo-module.5 --- share/man/man5/cargo-module.5 18 Aug 2023 08:22:29 -0000 1.7 +++ share/man/man5/cargo-module.5 1 Jan 2024 06:12:13 -0000 @@ -40,6 +40,7 @@ tree. .Pp Automates download and compilation of dependencies of a Rust project using .Xr cargo 1 . +.Pp During .Cm fetch , static dependencies ("crates") listed in @@ -48,6 +49,7 @@ are downloaded using .Ev MODCARGO_DIST_SUBDIR as .Ev DIST_SUBDIR . +.Pp During .Cm post-extract , crates defined in @@ -55,10 +57,12 @@ crates defined in are moved to the .Ev MODCARGO_VENDOR_DIR directory. +.Pp During .Cm post-patch , crate-metadata are generated using .Pa devel/cargo-generate-vendor . +.Pp With .Ev CONFIGURE_STYLE set to @@ -69,20 +73,19 @@ instead of the standard crates-io networ Finally, any crates listed in .Ev MODCARGO_CRATES_UPDATE are updated. +.Pp .Ev MODCARGO_RUSTFLAGS can be used to pass custom flags to all .Xr rustc 1 invocations. .Pp -.Pa lang/rust , -.Pa devel/cargo +.Pa lang/rust +is added to +.Ev MODULES , and .Pa devel/cargo-generate-vendor -are added to +is added to .Ev BUILD_DEPENDS . -By default -.Ev MASTER_SITES9 -is used to download the crates. .Pp This module defines: .Bl -tag -width MODCARGO_INSTALL_TARGET_PATH @@ -110,11 +113,9 @@ Defaults to Architecture-specific .Ev WANTLIB entries required by all Rust code. -Should be used instead of explicit entries for -.Dq c , -.Dq pthread , -and -.Dq c++abi . +It is a copy of +.Ev MODRUST_WANTLIB +provided for simplicity. .El .Pp This module adds three Index: share/man/man5/port-modules.5 =================================================================== RCS file: /cvs/src/share/man/man5/port-modules.5,v retrieving revision 1.266 diff -u -p -r1.266 port-modules.5 --- share/man/man5/port-modules.5 14 Sep 2023 03:53:26 -0000 1.266 +++ share/man/man5/port-modules.5 1 Jan 2024 06:12:13 -0000 @@ -978,6 +978,20 @@ See .It lang/ruby See .Xr ruby-module 5 . +.It lang/rust +Ports using Rust must use this module so a rebuild can be triggered via +.Ev SYSTEM_VERSION-rust +on updates of the lang/rust port or changes to the Rust standard library. +Sets +.Ev MODRUST_WANTLIB +as appropriate for the architecture so it can be added to +.Ev WANTLIB . +It adds lang/rust to the +.Ev BUILD_DEPENDS +unless +.Ev MODRUST_BUILDDEP +is set to anything but +.Dq yes . .It lang/tcl Sets .Ev MODTCL_VERSION ,