diff --git a/devel/uv/Makefile b/devel/uv/Makefile index 9d00841e4646..1647f3bc6d14 100644 --- a/devel/uv/Makefile +++ b/devel/uv/Makefile @@ -1,51 +1,52 @@ PORTNAME= uv DISTVERSION= 0.9.6 +PORTREVISION= 1 CATEGORIES= devel MAINTAINER= yuri@FreeBSD.org COMMENT= Extremely fast Python package installer and resolver, written in Rust WWW= https://astral.sh/ \ https://docs.astral.sh/uv/ \ https://github.com/astral-sh/uv LICENSE= APACHE20 MIT LICENSE_COMB= dual LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE-APACHE LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT BROKEN_armv7= compilation fails: rustc-LLVM ERROR: out of memory BROKEN_i386= compilation of the libopenssl_sys-abc7d27a34743709 crate fails: ld: error: undefined symbol: __atomic_is_lock_free, etc LIB_DEPENDS= libgit2.so:devel/libgit2 \ libssh2.so:security/libssh2 \ libzstd.so:archivers/zstd USES= cargo gmake localbase perl5 pkgconfig USE_PERL5= build USE_GITHUB= yes GH_ACCOUNT= astral-sh OPENSSLINC= /usr/include OPENSSLLIB= /usr/lib RUSTFLAGS+= -C link-args=-Wl,-rpath=${LOCALBASE}/lib PROGS= uv \ uvx \ uv-build \ uv-globfilter PLIST_FILES= ${PROGS:S/^/bin\//} PORTSCOUT= limit:.*\..*$$ # prevent tags like perma-39 do-install: # workaround for error: found a virtual manifest at `xx` instead of a package manifest .for p in ${PROGS} ${INSTALL_PROGRAM} \ ${WRKDIR}/target/release/${p} \ ${STAGEDIR}${PREFIX}/bin .endfor .include diff --git a/devel/uv/files/patch-cargo-crates_openssl-probe-0.1.6_src_lib.rs b/devel/uv/files/patch-cargo-crates_openssl-probe-0.1.6_src_lib.rs new file mode 100644 index 000000000000..e51f27bc248a --- /dev/null +++ b/devel/uv/files/patch-cargo-crates_openssl-probe-0.1.6_src_lib.rs @@ -0,0 +1,50 @@ +--- cargo-crates/openssl-probe-0.1.6/src/lib.rs ++++ cargo-crates/openssl-probe-0.1.6/src/lib.rs +@@ -26,6 +26,7 @@ pub fn find_certs_dirs() -> Vec { + /// found. + /// + /// This will only search known system locations. ++#[cfg(not(target_os = "freebsd"))] + pub fn candidate_cert_dirs() -> impl Iterator { + // see http://gagravarr.org/writing/openssl-certs/others.shtml + [ +@@ -52,6 +53,19 @@ pub fn candidate_cert_dirs() -> impl Iterator { + .map(Path::new) + .filter(|p| p.exists()) + } ++#[cfg(target_os = "freebsd")] ++pub fn candidate_cert_dirs() -> impl Iterator { ++ // see manpage of certctl(8): https://man.freebsd.org/cgi/man.cgi?query=certctl&sektion=8 ++ // see security/openssl* ports ++ [ ++ "/etc/ssl", ++ "/usr/local/etc/ssl", ++ "/usr/local/openssl", ++ ] ++ .iter() ++ .map(Path::new) ++ .filter(|p| p.exists()) ++} + + /// Deprecated as this isn't sound, use [`init_openssl_env_vars`] instead. + #[doc(hidden)] +@@ -169,6 +183,7 @@ pub fn probe() -> ProbeResult { + for certs_dir in candidate_cert_dirs() { + // cert.pem looks to be an openssl 1.0.1 thing, while + // certs/ca-certificates.crt appears to be a 0.9.8 thing ++ #[cfg(not(target_os = "freebsd"))] + let cert_filenames = [ + "cert.pem", + "certs.pem", +@@ -181,6 +196,11 @@ pub fn probe() -> ProbeResult { + "CARootCertificates.pem", + "tls-ca-bundle.pem", + ]; ++ #[cfg(target_os = "freebsd")] ++ let cert_filenames = [ ++ "cert.pem", ++ "ca-root-nss.crt", ++ ]; + if result.cert_file.is_none() { + result.cert_file = cert_filenames + .iter()