From: Sebastien Marie Subject: Re: devel/cargo/cargo.port.mk: use pkg-config for libsqlite3-sys To: Bjorn Ketelaars , ports@openbsd.org Date: Mon, 04 May 2026 20:55:11 +0200 Bjorn Ketelaars writes: > For whenever the ports tree is unlocked again: > > The diff below refines how we handle the libsqlite3-sys crate in > cargo.port.mk. > > Currently, we remove the entire sqlite3/ directory within the crate. > However, this directory contains glue code/binding that the crate's > build.rs expects to find, even when linking against a system library. > Deleting the whole tree leads to unnecessary build complications. > > Changes: > - Set LIBSQLITE3_SYS_USE_PKG_CONFIG=1 in MODCARGO_ENV to force the crate > to use the system's sqlite3 via pkg-config. > - Change the cleanup logic to only remove .c and .h files. This ensures > the bundled C source cannot be used while keeping the directory > structure and any non-C files intact for the Rust bindings. > > This brings libsqlite3-sys in line with how we handle similar crates > like libz-sys or zstd-sys. > > Tested on amd64 with several ports relying on libsqlite3-sys. > > Comments / OK (when ports tree is unlocked)? Thanks, it seems right. ok semarie@ (for post-unlock) -- Sebastien Marie > diff --git cargo.port.mk cargo.port.mk > index bea935b258d..0d63b67e6cd 100644 > --- cargo.port.mk > +++ cargo.port.mk > @@ -135,9 +135,10 @@ MODCARGO_post-extract += \ > rm -f -- ${MODCARGO_VENDOR_DIR}/${_cratename}-${_cratever}/libsodium-*.tar.gz ; > > . elif "${_cratename}" == "libsqlite3-sys" > +MODCARGO_ENV += LIBSQLITE3_SYS_USE_PKG_CONFIG=1 > MODCARGO_post-extract += \ > ${ECHO_MSG} "[modcargo] Removing libsrc for ${_cratename}-${_cratever}" ; \ > - rm -rf -- ${MODCARGO_VENDOR_DIR}/${_cratename}-${_cratever}/sqlite3 ; > + rm -f -- ${MODCARGO_VENDOR_DIR}/${_cratename}-${_cratever}/sqlite3/*.{c,h} ; > > . elif "${_cratename}" == "libssh2-sys" > MODCARGO_ENV += LIBSSH2_SYS_USE_PKG_CONFIG=1