# Template file for 'cargo' pkgname=cargo version=0.54.0 revision=1 wrksrc="cargo-${version}" build_helper=rust hostmakedepends="rust python3 curl cmake pkg-config zlib-devel" makedepends="rust libcurl-devel" depends="rust" short_desc="Rust package manager" maintainer="Enno Boland " license="MIT, Apache-2.0" homepage="https://crates.io/" distfiles="https://github.com/rust-lang/cargo/archive/${version}.tar.gz https://github.com/crossbeam-rs/crossbeam/archive/refs/tags/crossbeam-utils-0.8.5.tar.gz" checksum="4627e7eb0be3150d878ed695a1ef874885ff84325019499af61f5e3ade410d4b 57db07eb38b0aaf7951c79b4639819cb84bc4269507091afea7267e10a54e079" replaces="cargo-tree>=0" build_options="static bindist" desc_option_bindist="Generate a tarball for bootstrap" # rust upstream no longer ships cargo-versioned tarballs # need to use the corresponding rust version instead _bootstrap_url="https://static.rust-lang.org/dist" _cargo_dist_version="1.53.0" case "$XBPS_MACHINE" in x86_64*|i686|ppc64le) ;; ppc*) # custom bootstrap tarballs still use cargo versioning, so override _bootstrap_url="https://alpha.de.repo.voidlinux.org/distfiles" _cargo_dist_version="0.54.0" ;; esac if [ -n "$build_option_static" -o -n "$build_option_bindist" ]; then _build_static=yes fi if [ -z "$_build_static" ]; then makedepends+=" libgit2-devel" fi distfiles+=" ${_bootstrap_url}/cargo-${_cargo_dist_version}-${RUST_BUILD}.tar.xz" case "$XBPS_MACHINE" in i686) checksum+=" deebb4a4de22a60f0dec5d5b84e8dfe6ce039835935dae96477a79468aefd927" ;; x86_64) checksum+=" e4437f6c83574fc60e183f4df439190f7610e4a669476802795645da66fbb83b" ;; x86_64-musl) checksum+=" ca236408cb2c35b8c3f7c2b4e9f1e69422ed24153f445192eafb6462351e5c2b" ;; ppc64le) checksum+=" ca1d94161c3a4021bca170ba4ca059b5606fcd70934aca89d8cea43746880ba7" ;; ppc64le-musl) checksum+=" 1181b721addeb2aa471bf71549a7fb09f27167c382b480cefba272f770b9f039" ;; ppc64) checksum+=" 7d9b0428d4cd8cdd76582b3113476228013ec0b674802f18b4b5e8bbefcd3ab2" ;; ppc64-musl) checksum+=" 695d687c19a729504ac8b57a42e395258a8b801753baf1b0b17755d7f38f7eaa" ;; ppc) checksum+=" 176f178b9e55f399311edb4888d931e5f696766f655cc9648ae4b6ef1bdc8369" ;; ppc-musl) checksum+=" 234cf0792407065f4c5c4276886846cee2ecfb37eea1171c2c6e4a0fba7d324c" ;; *) broken="bootstrap binary unavailable for ${XBPS_MACHINE}";; esac post_extract() { mkdir -p target/snapshot cp ../cargo-${_cargo_dist_version}-${RUST_BUILD}/cargo/bin/cargo cargo mv ../crossbeam-* crossbeam-utils } post_patch() { rm crossbeam-utils/crossbeam-utils/no_atomic.rs cp crossbeam-utils/no_atomic.rs crossbeam-utils/crossbeam-utils cat >> Cargo.toml <<- EOF [patch.crates-io] crossbeam-utils = { path = './crossbeam-utils/crossbeam-utils' } EOF } do_build() { local cargs if [ -n "$_build_static" ]; then unset LIBSSH2_SYS_USE_PKG_CONFIG export OPENSSL_STATIC=1 # rust-openssl can not be linked static if pkg-config is used export OPENSSL_NO_PKG_CONFIG export OPENSSL_DIR="${XBPS_CROSS_BASE}/usr" fi if [ -n "$_build_static" ]; then cargs+=" --features=all-static" fi ./cargo build --release ${cargs} } do_install() { local cbin="target/release/cargo" if [ "$CROSS_BUILD" ]; then cbin="target/${RUST_TARGET}/release/cargo" fi if [ "$build_option_bindist" ]; then local dest="cargo-${version}-${RUST_TARGET}" mkdir -p ${XBPS_SRCDISTDIR}/distfiles ${dest}/cargo/bin install -m 0755 ${cbin} ${dest}/cargo/bin install -m 0644 LICENSE-APACHE LICENSE-MIT LICENSE-THIRD-PARTY ${dest} bsdtar cvJf ${dest}.tar.xz ${dest} install -m 0644 ${dest}.tar.xz ${XBPS_SRCDISTDIR}/distfiles exit 1 fi vbin ${cbin} for f in src/etc/man/*.?; do vman $f done vinstall src/etc/cargo.bashcomp.sh 0644 \ usr/share/bash-completion/completions cargo vinstall src/etc/_cargo 0644 usr/share/zsh/site-functions vlicense LICENSE-APACHE vlicense LICENSE-MIT vlicense LICENSE-THIRD-PARTY }