diff options
author | tnn <tnn@pkgsrc.org> | 2017-11-08 13:40:10 +0000 |
---|---|---|
committer | tnn <tnn@pkgsrc.org> | 2017-11-08 13:40:10 +0000 |
commit | 00c8089293d56de40047453ce5fdac57e59238cc (patch) | |
tree | 177c05b8717dfa383affb6b277efb2d3a5d56a0d /lang | |
parent | 5cb0954841b9553faffcbb0efb2f8bb60dbcdc49 (diff) | |
download | pkgsrc-00c8089293d56de40047453ce5fdac57e59238cc.tar.gz |
rust: cargo.mk: crates.io helper Makefile snippet
Common logic that can be used by packages that depend on cargo crates
from crates.io. This lets existing pkgsrc infrastructure fetch and verify
cargo crates instead of using the rust package manager in the build phase.
Inspired by cargo.mk from FreeBSD ports.
Diffstat (limited to 'lang')
-rw-r--r-- | lang/rust/cargo.mk | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lang/rust/cargo.mk b/lang/rust/cargo.mk new file mode 100644 index 00000000000..5cc7d4f7084 --- /dev/null +++ b/lang/rust/cargo.mk @@ -0,0 +1,38 @@ +# $NetBSD: cargo.mk,v 1.1 2017/11/08 13:40:10 tnn Exp $ +# +# Common logic that can be used by packages that depend on cargo crates +# from crates.io. This lets existing pkgsrc infrastructure fetch and verify +# cargo crates instead of using the rust package manager in the build phase. +# Inspired by cargo.mk from FreeBSD ports. +# +# Usage example: +# +# CARGO_CRATE_DEPENDS+= sha1-0.20 +# .include "../../lang/rust/cargo.mk" +# do-build: +# cargo build --locked --frozen +# +# See also www/geckodriver for a full example. + +USE_TOOLS+= bsdtar digest +CARGO_VENDOR_DIR= ${WRKDIR}/vendor + +DISTFILES?= ${DEFAULT_DISTFILES} +.for _crate in ${CARGO_CRATE_DEPENDS} +DISTFILES+= ${_crate}.crate +SITES.${_crate}.crate+= -${MASTER_SITE_CRATESIO}${_crate:C/-[0-9.]+$//}/${_crate:C/^.*-([0-9.]+)$/\1/}/download +.endfor + +post-extract: cargo-vendor-crates +.PHONY: cargo-vendor-crates +cargo-vendor-crates: + @${STEP_MSG} "Extracting local cargo crates" + ${RUN}${MKDIR} ${WRKSRC}/.cargo + ${RUN}${PRINTF} "[source.crates-io]\nreplace-with = \"vendored-sources\"\n[source.vendored-sources]\ndirectory = \"${CARGO_VENDOR_DIR}\"\n" >> ${WRKSRC}/.cargo/config + ${RUN}${MKDIR} ${CARGO_VENDOR_DIR} +.for _crate in ${CARGO_CRATE_DEPENDS} + ${RUN}${TOOLS_PATH.bsdtar} -C ${CARGO_VENDOR_DIR} -xzf ${WRKDIR}/${_crate}.crate + ${RUN}${PRINTF} '{"package":"%s","files":{}}' \ + $$(${DIGEST} sha256 < ${WRKDIR}/${_crate}.crate) \ + > ${CARGO_VENDOR_DIR}/${_crate}/.cargo-checksum.json +.endfor |