diff options
author | Tobias Kortkamp <tobik@FreeBSD.org> | 2021-04-17 13:27:24 +0800 |
---|---|---|
committer | Tobias Kortkamp <tobik@FreeBSD.org> | 2021-04-28 12:44:24 +0800 |
commit | 3758b337a1b07b4a767d74e21e6b0b67db5e763c (patch) | |
tree | 1d370864648ada1c84a60fe633d473e18c51d2f9 /Mk/Uses | |
parent | 7b784406af8a4cab1e2fa2bac94ef29c90c5b081 (diff) | |
download | freebsd-ports-gnome-3758b337a1b07b4a767d74e21e6b0b67db5e763c.tar.gz freebsd-ports-gnome-3758b337a1b07b4a767d74e21e6b0b67db5e763c.tar.zst freebsd-ports-gnome-3758b337a1b07b4a767d74e21e6b0b67db5e763c.zip |
Mk/Uses/cargo.mk: Use canonical crate file extension going forward
Crates should have the file extension .crate not .tar.gz. Cargo
saves them with that extension and it is also what their original
name was according to file(1):
$ file rust/crates/*
rust/crates/better-panic-0.2.0.tar.gz:gzip compressed data, was "better-panic-0.2.0.crate"
rust/crates/binary-space-partition-0.1.2.tar.gz:gzip compressed data, was "binary-space-partition-0.1.2.crate"
...
The only reason we used .tar.gz is that it was that way in OpenBSD's
devel/cargo/cargo.port.mk module. At the moment they are all .tar.gz
but they might have a different format in the future.
Doing a delayed rollout of this over a change-everything-once
approach to
- not immeditately invalidate all uncommitted port changes or
external ports
- not make sweeping changes twice in main and 2021Q2
at the cost of having a transition period where mirrors might have
to carry both the .tar.gz and .crate tarballs (all crates combined
are ~600 MiB).
Reviewed by: jbeich
MFH: 2021Q2 (to ease future cherry picks)
Differential Revision: https://reviews.freebsd.org/D29760
Diffstat (limited to 'Mk/Uses')
-rw-r--r-- | Mk/Uses/cargo.mk | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/Mk/Uses/cargo.mk b/Mk/Uses/cargo.mk index e174dfa06d73..ebea7aae39f3 100644 --- a/Mk/Uses/cargo.mk +++ b/Mk/Uses/cargo.mk @@ -34,10 +34,20 @@ CARGO_CARGOLOCK?= ${WRKSRC}/Cargo.lock CARGO_DIST_SUBDIR?= rust/crates # Generate list of DISTFILES. +# Prefer canonical file extension .crate going forward +.if make(makesum) +CARGO_CRATE_EXT= .crate +.else +# If there is a rust/crates/*.tar.gz in distinfo keep using the old +# extension. We need to delay eval until the last moment for +# DISTINFO_FILE. We cache the command output to avoid multiple +# slow grep runs for every CARGO_CRATE_EXT access. +CARGO_CRATE_EXT= ${defined(_CARGO_CRATE_EXT_CACHE):?${_CARGO_CRATE_EXT_CACHE}:${:!if ${GREP} -q '\(${CARGO_DIST_SUBDIR}/.*\.tar\.gz\)' "${DISTINFO_FILE}" 2>/dev/null; then ${ECHO_CMD} .tar.gz; else ${ECHO_CMD} .crate; fi!:_=_CARGO_CRATE_EXT_CACHE}} +.endif .for _crate in ${CARGO_CRATES} # Resolving CRATESIO alias is very inefficient with many MASTER_SITES, consume MASTER_SITE_CRATESIO directly MASTER_SITES+= ${MASTER_SITE_CRATESIO:S,%SUBDIR%,${_crate:C/^([-_a-zA-Z0-9]+)-[0-9].*/\1/}/${_crate:C/^[-_a-zA-Z0-9]+-([0-9].*)/\1/},:S,$,:cargo_${_crate:C/[^a-zA-Z0-9_]//g},} -DISTFILES+= ${CARGO_DIST_SUBDIR}/${_crate}.tar.gz:cargo_${_crate:C/[^a-zA-Z0-9_]//g} +DISTFILES+= ${CARGO_DIST_SUBDIR}/${_crate}${CARGO_CRATE_EXT}:cargo_${_crate:C/[^a-zA-Z0-9_]//g} .endfor # Build dependencies. @@ -211,7 +221,7 @@ cargo-extract: .for _crate in ${CARGO_CRATES} @${MV} ${WRKDIR}/${_crate} ${CARGO_VENDOR_DIR}/${_crate} @${PRINTF} '{"package":"%s","files":{}}' \ - $$(${SHA256} -q ${DISTDIR}/${CARGO_DIST_SUBDIR}/${_crate}.tar.gz) \ + $$(${SHA256} -q ${DISTDIR}/${CARGO_DIST_SUBDIR}/${_crate}${CARGO_CRATE_EXT}) \ > ${CARGO_VENDOR_DIR}/${_crate}/.cargo-checksum.json @if [ -r ${CARGO_VENDOR_DIR}/${_crate}/Cargo.toml.orig ]; then \ ${MV} ${CARGO_VENDOR_DIR}/${_crate}/Cargo.toml.orig \ |