Hi, I started to work on a cargo.port.mk module, to help building ports based on cargo/rust ecosystem.
The following diff adds: - devel/cargo/cargo.port.mk: the module - devel/cargo/files/modcargo-make-makesum: a configure helper (generate metadata required by cargo for all crates) It also changes devel/cargo itself to use the module. But due to cargo nature, it isn't a good model for the module use... A port will use MODCARGO_CRATES entries for declaring crates. The module will: - adds DISTFILES and using MASTER_SITES9 for downloading files - at pre-configure stage: - creating a cargo configuration file to override standard registry (which requires network access) to a local directory at ${WRKSRC}/modcargo-crates - moving all extracted crates inside the directory - generating metadata for each crate (using a script helper): basically a json file with sha256 of all files and sha256 of the tgz. - calling cargo binary with right parameters for build, install, test (behaviour overridable). I also added two custom targets (prefixed with modcargo-) to help generating MODCARGO_CRATES entries. Regarding devel/Cargo itself, I am now facing a problem: the make test doesn't work well anymore (lot of tests are failing due to overriding of package registry with a local directory). So I added a non-standard target (test-full) which remove the cargo configuration file installed by pre-configure, and as result it makes cargo to run and use the network for building and testing the testsuite... I dunno if it is acceptable or not. The standard "test" target still use no network, but isn't able to run the whole testsuite. Thanks for your feedback regarding the module. -- Sebastien Marie Index: Makefile =================================================================== RCS file: /cvs/ports/devel/cargo/Makefile,v retrieving revision 1.6 diff -u -p -r1.6 Makefile --- Makefile 13 Nov 2016 08:59:26 -0000 1.6 +++ Makefile 13 Nov 2016 14:51:04 -0000 @@ -4,20 +4,12 @@ COMMENT = package manager for Rust langu # cargo version CARGO_VERSION = 0.14.0 -# rust-install submodule version in cargo/src/rust-installer -# see https://github.com/rust-lang/cargo/tree/${CARGO_VERSION}/src -RUSTINSTALL_INDEX = 4f994850808a572e2cc8d43f968893c8e942e9bf - -# crates.io commit for CARGO_VERSION -# see https://github.com/rust-lang/crates.io-index/commits/master/ca/rg/cargo -CRATESIO_INDEX = 9f8c3a65f70b2a5723e0d9cc0a32d531ea42da67 - # cargo version used for bootstrapping BOOTSTRAP_VERSION = 0.14.0-20161112 -# registry index -# see ${WRKDIR}/cargo-home/registry/index/github.com-${REGISTRY_INDEX} -REGISTRY_INDEX = 1ecc6299db9ec823 +# rust-install submodule version in cargo/src/rust-installer +# see https://github.com/rust-lang/cargo/tree/${CARGO_VERSION}/src +RUSTINSTALL_INDEX = 4f994850808a572e2cc8d43f968893c8e942e9bf DISTNAME = cargo-${CARGO_VERSION} @@ -32,96 +24,100 @@ MAINTAINER = Sebastien Marie <semarie@on # - MIT # - Unlicense/MIT # - MIT/Apache-2.0 +# - MPL-2.0 # PERMIT_PACKAGE_CDROM = Yes WANTLIB = c crypto curl m pthread ssh2 ssl z -DIST_SUBDIR = cargo MASTER_SITES = https://github.com/rust-lang/ DISTFILES += cargo-${CARGO_VERSION}.tar.gz{cargo/archive/${CARGO_VERSION}.tar.gz} DISTFILES += rust-installer-${RUSTINSTALL_INDEX}.tar.gz{rust-installer/archive/${RUSTINSTALL_INDEX}.tar.gz} -DISTFILES += crates.io-index-${CRATESIO_INDEX}.tar.gz{crates.io-index/archive/${CRATESIO_INDEX}.tar.gz} - -# look at ${WRKDIR}/cargo-home/registry/src/github.com-${REGISTRY_INDEX} -# for the list -CRATES += advapi32-sys-0.2.0 # MIT -CRATES += aho-corasick-0.5.3 # Unlicense/MIT -CRATES += bitflags-0.1.1 # MIT/Apache-2.0 -CRATES += bitflags-0.7.0 # MIT/Apache-2.0 -CRATES += bufstream-0.1.2 # MIT/Apache-2.0 (test) -CRATES += cfg-if-0.1.0 # MIT/Apache-2.0 -CRATES += cmake-0.1.17 # MIT/Apache-2.0 -CRATES += crossbeam-0.2.9 # MIT/Apache-2.0 -CRATES += curl-0.3.9 # MIT -CRATES += curl-sys-0.2.4 # MIT -CRATES += docopt-0.6.82 # Unlicense/MIT -CRATES += env_logger-0.3.4 # MIT/Apache-2.0 -CRATES += filetime-0.1.10 # MIT/Apache-2.0 -CRATES += flate2-0.2.14 # MIT/Apache-2.0 -CRATES += fs2-0.2.5 # MIT/Apache-2.0 -CRATES += gcc-0.3.35 # MIT/Apache-2.0 -CRATES += git2-0.4.4 # MIT/Apache-2.0 -CRATES += git2-curl-0.5.0 # MIT/Apache-2.0 -CRATES += glob-0.2.11 # MIT/Apache-2.0 -CRATES += hamcrest-0.1.1 # MIT/Apache-2.0 (test) -CRATES += idna-0.1.0 # MIT/Apache-2.0 -CRATES += kernel32-sys-0.2.2 # MIT -CRATES += lazy_static-0.2.1 # MIT -CRATES += libc-0.2.17 # MIT/Apache-2.0 -CRATES += libgit2-sys-0.4.5 # MIT/Apache-2.0 -CRATES += libssh2-sys-0.1.39 # MIT/Apache-2.0 -CRATES += libz-sys-1.0.6 # MIT/Apache-2.0 -CRATES += log-0.3.6 # MIT/Apache-2.0 -CRATES += matches-0.1.2 # MIT -CRATES += memchr-0.1.11 # Unlicense/MIT -CRATES += miniz-sys-0.1.7 # MIT/Apache-2.0 -CRATES += miow-0.1.3 # MIT/Apache-2.0 -CRATES += net2-0.2.26 # MIT/Apache-2.0 -CRATES += num-0.1.36 # MIT/Apache-2.0 (test) -CRATES += num-bigint-0.1.35 # MIT/Apache-2.0 (test) -CRATES += num-complex-0.1.35 # MIT/Apache-2.0 (test) -CRATES += num-integer-0.1.32 # MIT/Apache-2.0 (test) -CRATES += num-iter-0.1.32 # MIT/Apache-2.0 (test) -CRATES += num-rational-0.1.35 # MIT/Apache-2.0 (test) -CRATES += num-traits-0.1.36 # MIT/Apache-2.0 (test) -CRATES += num_cpus-1.0.0 # MIT -CRATES += openssl-0.7.14 # Apache-2.0 -CRATES += openssl-sys-0.7.14 # MIT -CRATES += openssl-sys-extras-0.7.14 # MIT -CRATES += pkg-config-0.3.8 # MIT/Apache-2.0 -CRATES += psapi-sys-0.1.0 # MIT -CRATES += rand-0.3.14 # MIT/Apache-2.0 -CRATES += regex-0.1.77 # MIT/Apache-2.0 -CRATES += regex-syntax-0.3.5 # MIT/Apache-2.0 -CRATES += rustc-serialize-0.3.19 # MIT/Apache-2.0 -CRATES += semver-0.5.1 # MIT/Apache-2.0 -CRATES += semver-parser-0.6.1 # MIT/Apache-2.0 -CRATES += strsim-0.3.0 # MIT -CRATES += tar-0.4.8 # MIT/Apache-2.0 -CRATES += tempdir-0.3.5 # MIT/Apache-2.0 -CRATES += term-0.4.4 # MIT/Apache-2.0 -CRATES += thread-id-2.0.0 # Apache-2.0 -CRATES += thread_local-0.2.6 # Apache-2.0/MIT -CRATES += toml-0.2.0 # MIT/Apache-2.0 -CRATES += unicode-bidi-0.2.3 # MIT/Apache-2.0 -CRATES += unicode-normalization-0.1.2 # MIT/Apache-2.0 -CRATES += url-1.2.0 # MIT/Apache-2.0 -CRATES += utf8-ranges-0.1.3 # Unlicense/MIT -CRATES += winapi-0.2.8 # MIT -CRATES += winapi-build-0.1.1 # MIT -CRATES += ws2_32-sys-0.2.1 # MIT - -MASTER_SITES0 = https://crates.io/api/v1/crates/ -.for _crate in ${CRATES} -DISTFILES += ${_crate}.tar.gz{${_crate:C/-[^-]*$//}/${_crate:C/^.*-//}/download}:0 -.endfor -MASTER_SITES1 = http://kapouay.odns.fr/pub/cargo/ -DISTFILES += cargo-bootstrap-${BOOTSTRAP_VERSION}.tar.gz:1 +MODCARGO_CRATES += advapi32-sys-0.2.0 # MIT +MODCARGO_CRATES += aho-corasick-0.5.3 # Unlicense/MIT +MODCARGO_CRATES += bitflags-0.1.1 # MIT/Apache-2.0 +MODCARGO_CRATES += bitflags-0.7.0 # MIT/Apache-2.0 +MODCARGO_CRATES += bufstream-0.1.2 # MIT/Apache-2.0 +MODCARGO_CRATES += cfg-if-0.1.0 # MIT/Apache-2.0 +MODCARGO_CRATES += cmake-0.1.17 # MIT/Apache-2.0 +MODCARGO_CRATES += crossbeam-0.2.9 # Apache-2.0/MIT +MODCARGO_CRATES += curl-0.3.9 # MIT +MODCARGO_CRATES += curl-sys-0.2.4 # MIT +MODCARGO_CRATES += docopt-0.6.82 # Unlicense/MIT +MODCARGO_CRATES += env_logger-0.3.4 # MIT/Apache-2.0 +MODCARGO_CRATES += filetime-0.1.10 # MIT/Apache-2.0 +MODCARGO_CRATES += flate2-0.2.14 # MIT/Apache-2.0 +MODCARGO_CRATES += fs2-0.2.5 # MIT/Apache-2.0 +MODCARGO_CRATES += gcc-0.3.35 # MIT/Apache-2.0 +MODCARGO_CRATES += gdi32-sys-0.2.0 # MIT +MODCARGO_CRATES += git2-0.4.4 # MIT/Apache-2.0 +MODCARGO_CRATES += git2-curl-0.5.0 # MIT/Apache-2.0 +MODCARGO_CRATES += glob-0.2.11 # MIT/Apache-2.0 +MODCARGO_CRATES += hamcrest-0.1.1 # MIT/Apache-2.0 +MODCARGO_CRATES += idna-0.1.0 # MIT/Apache-2.0 +MODCARGO_CRATES += kernel32-sys-0.2.2 # MIT +MODCARGO_CRATES += lazy_static-0.2.1 # MIT +MODCARGO_CRATES += libc-0.2.17 # MIT/Apache-2.0 +MODCARGO_CRATES += libgit2-sys-0.4.5 # MIT/Apache-2.0 +MODCARGO_CRATES += libressl-pnacl-sys-2.1.6 # MIT +MODCARGO_CRATES += libssh2-sys-0.1.39 # MIT/Apache-2.0 +MODCARGO_CRATES += libz-sys-1.0.6 # MIT/Apache-2.0 +MODCARGO_CRATES += log-0.3.6 # MIT/Apache-2.0 +MODCARGO_CRATES += matches-0.1.2 # MIT +MODCARGO_CRATES += memchr-0.1.11 # Unlicense/MIT +MODCARGO_CRATES += miniz-sys-0.1.7 # MIT/Apache-2.0 +MODCARGO_CRATES += miow-0.1.3 # MIT/Apache-2.0 +MODCARGO_CRATES += net2-0.2.26 # MIT/Apache-2.0 +MODCARGO_CRATES += num-0.1.36 # MIT/Apache-2.0 +MODCARGO_CRATES += num-bigint-0.1.35 # MIT/Apache-2.0 +MODCARGO_CRATES += num-complex-0.1.35 # MIT/Apache-2.0 +MODCARGO_CRATES += num-integer-0.1.32 # MIT/Apache-2.0 +MODCARGO_CRATES += num-iter-0.1.32 # MIT/Apache-2.0 +MODCARGO_CRATES += num-rational-0.1.35 # MIT/Apache-2.0 +MODCARGO_CRATES += num-traits-0.1.36 # MIT/Apache-2.0 +MODCARGO_CRATES += num_cpus-1.0.0 # MIT/Apache-2.0 +MODCARGO_CRATES += openssl-0.7.14 # Apache-2.0 +MODCARGO_CRATES += openssl-sys-0.7.14 # MIT +MODCARGO_CRATES += openssl-sys-extras-0.7.14 # MIT +MODCARGO_CRATES += pkg-config-0.3.8 # MIT/Apache-2.0 +MODCARGO_CRATES += pnacl-build-helper-1.4.10 # MPL-2.0 +MODCARGO_CRATES += psapi-sys-0.1.0 # MIT +MODCARGO_CRATES += rand-0.3.14 # MIT/Apache-2.0 +MODCARGO_CRATES += regex-0.1.77 # MIT/Apache-2.0 +MODCARGO_CRATES += regex-syntax-0.3.5 # MIT/Apache-2.0 +MODCARGO_CRATES += rustc-serialize-0.3.19 # MIT/Apache-2.0 +MODCARGO_CRATES += semver-0.5.1 # MIT/Apache-2.0 +MODCARGO_CRATES += semver-parser-0.6.1 # MIT/Apache-2.0 +MODCARGO_CRATES += strsim-0.3.0 # MIT +MODCARGO_CRATES += tar-0.4.8 # MIT/Apache-2.0 +MODCARGO_CRATES += tempdir-0.3.5 # MIT/Apache-2.0 +MODCARGO_CRATES += term-0.4.4 # MIT/Apache-2.0 +MODCARGO_CRATES += thread-id-2.0.0 # Apache-2.0 +MODCARGO_CRATES += thread_local-0.2.6 # Apache-2.0/MIT +MODCARGO_CRATES += toml-0.2.0 # MIT/Apache-2.0 +MODCARGO_CRATES += unicode-bidi-0.2.3 # MIT / Apache-2.0 +MODCARGO_CRATES += unicode-normalization-0.1.2 # MIT/Apache-2.0 +MODCARGO_CRATES += url-1.2.0 # MIT/Apache-2.0 +MODCARGO_CRATES += user32-sys-0.2.0 # MIT +MODCARGO_CRATES += utf8-ranges-0.1.3 # Unlicense/MIT +MODCARGO_CRATES += winapi-0.2.8 # MIT +MODCARGO_CRATES += winapi-build-0.1.1 # MIT +MODCARGO_CRATES += ws2_32-sys-0.2.1 # MIT + +MASTER_SITES0 = http://kapouay.odns.fr/pub/cargo/ +DISTFILES += cargo-bootstrap-${BOOTSTRAP_VERSION}.tar.gz:0 + +MODULES = devel/cargo \ + lang/python + +# only deal with MODCARGO_CRATES +MODCARGO_BUILDDEP = No +MODCARGO_BUILD = No +MODCARGO_INSTALL = No +MODCARGO_TEST = No -MODULES = lang/python -MODPY_RUNDEP = No +MODPY_RUNDEP = No USE_GMAKE = Yes @@ -134,34 +130,25 @@ LIB_DEPENDS = net/curl \ RUN_DEPENDS = lang/rust -CONFIGURE_STYLE = simple +CONFIGURE_STYLE = simple \ + cargo CONFIGURE_ARGS += --prefix=${LOCALBASE} \ --mandir=${LOCALBASE}/man \ --local-rust-root=${LOCALBASE} \ --local-cargo=${WRKDIR}/cargo-bootstrap-${BOOTSTRAP_VERSION}/cargo -MAKE_ENV += CARGO_HOME=${WRKDIR}/cargo-home \ +MAKE_ENV += ${MODCARGO_ENV} \ VERBOSE=1 \ LIBSSH2_SYS_USE_PKG_CONFIG=1 +# make testsuite using the *same* binaries as build +TEST_ENV += CARGOFLAGS="--release --no-fail-fast" + post-extract: # place rust-installer inside WRKSRC rmdir ${WRKSRC}/src/rust-installer mv ${WRKDIR}/rust-installer-${RUSTINSTALL_INDEX} \ ${WRKSRC}/src/rust-installer - # populate cargo registry to avoid downloading crates - mkdir -p ${WRKDIR}/cargo-home/registry/{cache,index,src} - mkdir ${WRKDIR}/cargo-home/registry/{cache,src}/github.com-${REGISTRY_INDEX} - mv ${WRKDIR}/crates.io-index-${CRATESIO_INDEX} \ - ${WRKDIR}/cargo-home/registry/index/github.com-${REGISTRY_INDEX} - touch ${WRKDIR}/cargo-home/registry/index/github.com-${REGISTRY_INDEX}/.cargo-index-lock -.for _crate in ${CRATES} - gzip < /dev/null \ - > ${WRKDIR}/cargo-home/registry/cache/github.com-${REGISTRY_INDEX}/${_crate}.crate - mv ${WRKDIR}/${_crate} \ - ${WRKDIR}/cargo-home/registry/src/github.com-${REGISTRY_INDEX} - touch ${WRKDIR}/cargo-home/registry/src/github.com-${REGISTRY_INDEX}/${_crate}/.cargo-ok -.endfor SUBST_VARS += WRKBUILD pre-test: @@ -188,5 +175,10 @@ bootstrap: fake | sed -ne 's,.* \(/.*/lib/lib.*\.so[.0-9]*\)$$,\1,p' \ | xargs -r -J % cp % \ ${WRKDIR}/cargo-bootstrap-${BOOTSTRAP_NVERSION} + +# test-full: will rebuild and directly fetch crates +test-full: configure pre-test + rm -rf ${WRKSRC}/.cargo + cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} test .include <bsd.port.mk> Index: cargo.port.mk =================================================================== RCS file: cargo.port.mk diff -N cargo.port.mk --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ cargo.port.mk 13 Nov 2016 14:51:04 -0000 @@ -0,0 +1,118 @@ +# $OpenBSD$ + +# List of static dependencies. The format is cratename-version. +MODCARGO_CRATES ?= + +# List of features to also build (space separated). +MODCARGO_FEATURES ?= + +DIST_SUBDIR ?= cargo + +# Reserve MASTER_SITES9 to grab crates. +MASTER_SITES9 ?= https://crates.io/api/v1/crates/ +.for _crate in ${MODCARGO_CRATES} +DISTFILES += ${_crate}.tar.gz{${_crate:C/-[^-]*$//}/${_crate:C/^.*-//}/download}:9 +.endfor + +# Path of the crate make-checksum helper. +MODCARGO_MAKE_CHECKSUM_BIN ?= +.for _d in ${PORTSDIR_PATH:S/:/ /g} +. if exists(${_d}/devel/cargo/files/modcargo-make-checksum) +MODCARGO_MAKE_CHECKSUM_BIN = ${_d}/devel/cargo/files/modcargo-make-checksum +. endif +.endfor + +# pre-configure target for preparing crates directory. +# - place a config file for overriding crates-io index by local source +MODCARGO_pre-configure = \ + mkdir ${WRKSRC}/.cargo; \ + echo "[source.modcargo]" >>${WRKSRC}/.cargo/config; \ + echo "directory = '${WRKSRC}/modcargo-crates'" \ + >>${WRKSRC}/.cargo/config; \ + echo "[source.crates-io]" >>${WRKSRC}/.cargo/config; \ + echo "replace-with = 'modcargo'" >>${WRKSRC}/.cargo/config; \ + mkdir ${WRKSRC}/modcargo-crates; + +# for each crate +# - put the crate in the local crates directory +# - generate metadata of the crate +.for _crate in ${MODCARGO_CRATES} +MODCARGO_pre-configure += \ + mv ${WRKDIR}/${_crate} ${WRKSRC}/modcargo-crates/${_crate}; \ + sh ${MODCARGO_MAKE_CHECKSUM_BIN} \ + ${FULLDISTDIR}/${_crate}.tar.gz \ + ${WRKSRC}/modcargo-crates/${_crate}; +.endfor + +# Add build dependencies ? +MODCARGO_BUILDDEP ?= Yes +.if ${MODCARGO_BUILDDEP:L} == "yes" +BUILD_DEPENDS += devel/cargo \ + lang/rust +.endif + +CATEGORIES += lang/rust + +# Location of cargo binary (default to devel/cargo binary) +MODCARGO_BIN ?= ${LOCALBASE}/bin/cargo + +# Environnment for cargo +# - CARGO_HOME: where to compile crates +# - RUSTC: path of rustc binary (default to lang/rust binary) +MODCARGO_ENV ?= CARGO_HOME=${WRKDIR}/cargo-home \ + RUSTC=${LOCALBASE}/bin/rustc + +MODCARGO_RUN = \ + cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MODCARGO_ENV} ${MODCARGO_BIN} + +# Defaults arguments for cargo targets +MODCARGO_BUILD_ARGS ?= --release --verbose --jobs=${MAKE_JOBS} +MODCARGO_INSTALL_ARGS ?= --verbose --jobs=${MAKE_JOBS} +MODCARGO_TEST_ARGS ?= --no-fail-fast + +# Manage crate features +.if !empty(MODCARGO_FEATURES) +MODCARGO_BUILD_ARGS += --features='${MODCARGO_FEATURES}' +MODCARGO_TEST_ARGS += --features='${MODCARGO_FEATURES}' +.endif + +# Add a build target ? +MODCARGO_BUILD ?= Yes +.if !target(do-build) && ${MODCARGO_BUILD:L} == "yes" +do-build: + ${MODCARGO_RUN} build \ + ${MODCARGO_BUILD_ARGS} +.endif + +# Add an install target +MODCARGO_INSTALL ?= Yes +.if !target(do-install) && ${MODCARGO_INSTALL:L} == "yes" +do-install: + ${MODCARGO_RUN} install \ + --root="${PREFIX}" \ + ${MODCARGO_INSTALL_ARGS} + rm -- "${PREFIX}/.crates.toml" +.endif + +# Add a test target ? +MODCARGO_TEST ?= Yes +.if !target(do-test) && ${MODCARGO_TEST:L} == "yes" +do-test: + ${MODCARGO_RUN} test \ + ${MODCARGO_BUILD_ARGS} \ + ${MODCARGO_TEST_ARGS} +.endif + +# Helper targets for port maintener +modcargo-crates-from-lock: patch + @awk '/"checksum / { print "MODCARGO_CRATES += " $$2 "-" $$3 }' \ + <${WRKSRC}/Cargo.lock + +modcargo-crates-with-license: configure + @find ${WRKSRC}/modcargo-crates -name 'Cargo.toml' -maxdepth 2 \ + -exec grep -H '^license' {} \; \ + | sed \ + -e 's|^${WRKSRC}/modcargo-crates/|MODCARGO_CRATES += |' \ + -e 's|/Cargo.toml:license.*= *"| # |' \ + -e 's|"$$||g' + Index: distinfo =================================================================== RCS file: /cvs/ports/devel/cargo/distinfo,v retrieving revision 1.4 diff -u -p -r1.4 distinfo --- distinfo 13 Nov 2016 08:59:26 -0000 1.4 +++ distinfo 13 Nov 2016 14:51:04 -0000 @@ -7,7 +7,6 @@ SHA256 (cargo/cargo-0.14.0.tar.gz) = kOw SHA256 (cargo/cargo-bootstrap-0.14.0-20161112.tar.gz) = sb6A3tG3aS54dLrlBIBVEpxtqLUGaohTFHtr6qR7jTY= SHA256 (cargo/cfg-if-0.1.0.tar.gz) = 3h52DXtlNa9CQfyovYrfaOLn7azGsp9dOZBQxeSM+Iw= SHA256 (cargo/cmake-0.1.17.tar.gz) = 389bzs5W75U7jqBCUJ6dy9/peCC34g2GvrU98w7ZSXg= -SHA256 (cargo/crates.io-index-9f8c3a65f70b2a5723e0d9cc0a32d531ea42da67.tar.gz) = hXVtuRvjIZ0ly4gGKBIAcaKvGGtF09YVlAnGgyjW/0o= SHA256 (cargo/crossbeam-0.2.9.tar.gz) = +5dPg16QOQxfnfrADwWwbcEXKZ9epOhfvHu0Q69JEcw= SHA256 (cargo/curl-0.3.9.tar.gz) = +vVNknx1KwktPpnqIn2cfJtKPohaM2ism/oolY8hUQA= SHA256 (cargo/curl-sys-0.2.4.tar.gz) = TxmNEDeKO8HxsOO8Oi3lybueCJOEYN7Fe6ZmfZpl+8M= @@ -17,6 +16,7 @@ SHA256 (cargo/filetime-0.1.10.tar.gz) = SHA256 (cargo/flate2-0.2.14.tar.gz) = PutIHpVzBBeNLngvLaElfxQ03+y66IO6+2Gtoqn+o7s= SHA256 (cargo/fs2-0.2.5.tar.gz) = vNQU5aGpebkxu5L0G3pUEG0/bS5sJT6c6UO3zUaCUe8= SHA256 (cargo/gcc-0.3.35.tar.gz) = kezQN3Hv+wyWj9aVCzfolHaleKrxxwKX2OkrZRbsMxI= +SHA256 (cargo/gdi32-sys-0.2.0.tar.gz) = CRJRWo/yS6kAQi7NqAC1L0AWpWJRki05fFdr+SxpBRg= SHA256 (cargo/git2-0.4.4.tar.gz) = M6lu7vInQDAGzbWepuBbqtjN3ea3mr7XU9lszuE2utI= SHA256 (cargo/git2-curl-0.5.0.tar.gz) = PV92bYBOPPK5Dhard8Pd7cscpdJFbK23s/kHNF+MNJg= SHA256 (cargo/glob-0.2.11.tar.gz) = i+GN4JpWtg7Q7fhLyd8AfjAEBpGves0cQYdPqsWJW/s= @@ -26,6 +26,7 @@ SHA256 (cargo/kernel32-sys-0.2.2.tar.gz) SHA256 (cargo/lazy_static-0.2.1.tar.gz) = SSR+wqKFuz3LI8vZw1GTwCXnJRv853wdXal+Y2Lf/n8= SHA256 (cargo/libc-0.2.17.tar.gz) = BE0TYFk6ePXI5ecQvszcJKtx0fAbwZopvKzboi6Eddg= SHA256 (cargo/libgit2-sys-0.4.5.tar.gz) = MpPclRaaY1HFoD7KS/VUnzqaBjNqAAMVh2/xFlpfuhA= +SHA256 (cargo/libressl-pnacl-sys-2.1.6.tar.gz) = y8BYlRq2o+81yhZGLXZCxIZ+ZANSCBHyhTek4vLbPnE= SHA256 (cargo/libssh2-sys-0.1.39.tar.gz) = HevX5W0ZZV63hvgnZ13FX21TDebXuB520T0a/GNdbAc= SHA256 (cargo/libz-sys-1.0.6.tar.gz) = QPLfdzC10pQmw+RM5NCI2MXe9kccLJO6mFhbifsgHOY= SHA256 (cargo/log-0.3.6.tar.gz) = q4NJe/i/TtKnQlnByAI1H81npluqhjlLa6c8NvSDgFQ= @@ -46,6 +47,7 @@ SHA256 (cargo/openssl-0.7.14.tar.gz) = x SHA256 (cargo/openssl-sys-0.7.14.tar.gz) = uKxenZEd1MMgK79BObc7x6EjH30KOUMsb4k3RfDgQSA= SHA256 (cargo/openssl-sys-extras-0.7.14.tar.gz) = EcXh26fT0D2A8EW/DWARHcaSE7Z2UefIiVJ6O62rufo= SHA256 (cargo/pkg-config-0.3.8.tar.gz) = jO6ATsx+ryAaSiByQUcsyHDoJSBvbAMePuKnL6Ql8vo= +SHA256 (cargo/pnacl-build-helper-1.4.10.tar.gz) = YckjHTGuqEUAdEPWL8u1i7aUmrnBgIHuHgmSDgzxEYs= SHA256 (cargo/psapi-sys-0.1.0.tar.gz) = q81dGgfTYOKXJ/dXqd7LPOi8bg76iWnPqtZpqDF6JHg= SHA256 (cargo/rand-0.3.14.tar.gz) = J5HYjG3vrHmcPyDXTwlMozuTMmEtmu+QeFGcguT+BKU= SHA256 (cargo/regex-0.1.77.tar.gz) = ZLA0RsRm01tC8qiyA8jgPti5HA8XtW4fhPchCiV6pmU= @@ -64,6 +66,7 @@ SHA256 (cargo/toml-0.2.0.tar.gz) = pELfw SHA256 (cargo/unicode-bidi-0.2.3.tar.gz) = wffOuWr9/u3uQrreZaDVhaagEG9oG2dJyP9Nqo3zCz8= SHA256 (cargo/unicode-normalization-0.1.2.tar.gz) = JmQ6L4O6xV8ZdvtxbBAjRIX5IC3NZc+9+dpJhnsnEXI= SHA256 (cargo/url-1.2.0.tar.gz) = r+nsVLxNsUvIdEt/7QYNeFrHVnkUUJWbIkhEMxnVsRk= +SHA256 (cargo/user32-sys-0.2.0.tar.gz) = TvRxHRB7IbQQo6l0sSBNmszIsQ2tddgyS111XeFhfUc= SHA256 (cargo/utf8-ranges-0.1.3.tar.gz) = ocoTwIxBycPgQiTtn/gEYdl+EhWJ/yfHU6FssQgwrg8= SHA256 (cargo/winapi-0.2.8.tar.gz) = Fn3J1pSam4V/NFEnXpEcP0QlWELB96dvM8VRA6kJCHo= SHA256 (cargo/winapi-build-0.1.1.tar.gz) = LTFe7js0rKR5ey2msT7Ygmbm1hJWKgxGOQr4KZ/Gmbw= @@ -77,7 +80,6 @@ SIZE (cargo/cargo-0.14.0.tar.gz) = 62530 SIZE (cargo/cargo-bootstrap-0.14.0-20161112.tar.gz) = 7324470 SIZE (cargo/cfg-if-0.1.0.tar.gz) = 2758 SIZE (cargo/cmake-0.1.17.tar.gz) = 10222 -SIZE (cargo/crates.io-index-9f8c3a65f70b2a5723e0d9cc0a32d531ea42da67.tar.gz) = 2533290 SIZE (cargo/crossbeam-0.2.9.tar.gz) = 35449 SIZE (cargo/curl-0.3.9.tar.gz) = 53146 SIZE (cargo/curl-sys-0.2.4.tar.gz) = 3196957 @@ -87,6 +89,7 @@ SIZE (cargo/filetime-0.1.10.tar.gz) = 88 SIZE (cargo/flate2-0.2.14.tar.gz) = 46692 SIZE (cargo/fs2-0.2.5.tar.gz) = 12661 SIZE (cargo/gcc-0.3.35.tar.gz) = 23869 +SIZE (cargo/gdi32-sys-0.2.0.tar.gz) = 7643 SIZE (cargo/git2-0.4.4.tar.gz) = 121616 SIZE (cargo/git2-curl-0.5.0.tar.gz) = 4060 SIZE (cargo/glob-0.2.11.tar.gz) = 18065 @@ -96,6 +99,7 @@ SIZE (cargo/kernel32-sys-0.2.2.tar.gz) = SIZE (cargo/lazy_static-0.2.1.tar.gz) = 688253 SIZE (cargo/libc-0.2.17.tar.gz) = 108320 SIZE (cargo/libgit2-sys-0.4.5.tar.gz) = 4133755 +SIZE (cargo/libressl-pnacl-sys-2.1.6.tar.gz) = 2697179 SIZE (cargo/libssh2-sys-0.1.39.tar.gz) = 389357 SIZE (cargo/libz-sys-1.0.6.tar.gz) = 601369 SIZE (cargo/log-0.3.6.tar.gz) = 16110 @@ -116,6 +120,7 @@ SIZE (cargo/openssl-0.7.14.tar.gz) = 638 SIZE (cargo/openssl-sys-0.7.14.tar.gz) = 10156 SIZE (cargo/openssl-sys-extras-0.7.14.tar.gz) = 3871 SIZE (cargo/pkg-config-0.3.8.tar.gz) = 10814 +SIZE (cargo/pnacl-build-helper-1.4.10.tar.gz) = 5470 SIZE (cargo/psapi-sys-0.1.0.tar.gz) = 973 SIZE (cargo/rand-0.3.14.tar.gz) = 54768 SIZE (cargo/regex-0.1.77.tar.gz) = 185559 @@ -134,6 +139,7 @@ SIZE (cargo/toml-0.2.0.tar.gz) = 46886 SIZE (cargo/unicode-bidi-0.2.3.tar.gz) = 1744003 SIZE (cargo/unicode-normalization-0.1.2.tar.gz) = 612931 SIZE (cargo/url-1.2.0.tar.gz) = 68332 +SIZE (cargo/user32-sys-0.2.0.tar.gz) = 10624 SIZE (cargo/utf8-ranges-0.1.3.tar.gz) = 8422 SIZE (cargo/winapi-0.2.8.tar.gz) = 455145 SIZE (cargo/winapi-build-0.1.1.tar.gz) = 669 Index: files/modcargo-make-checksum =================================================================== RCS file: files/modcargo-make-checksum diff -N files/modcargo-make-checksum --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/modcargo-make-checksum 13 Nov 2016 14:51:04 -0000 @@ -0,0 +1,29 @@ +#!/bin/sh + +usage() { + echo "usage: ${0##*/} package directory" >&2 + exit 1 +} + +[[ $# -ne 2 || ! -r "$1" || ! -d "$2" ]] && usage; + +package="$1" +directory="$2" + +package_hash=$(sha256 -q ${package}) + +cd "$directory" +[[ -e .cargo-ok ]] && rm .cargo-ok + +exec >.cargo-checksum.json + +echo '{"files":{' +find . -type f ! -name '.cargo-checksum.json' -print0 \ + | xargs -0 sha256 \ + | sed -e 's|^SHA256 (\./\([^"]*\)) = \([^ ]*\)$|"\1": "\2",|' + +touch .cargo-ok +cat <<EOF +".cargo-ok": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}, +"package": "${package_hash}"} +EOF