| # Copyright 1999-2017 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=5 |
| |
| CARGO_SNAPSHOT_DATE="2016-09-01" |
| CRATES=" |
| advapi32-sys-0.2.0 |
| aho-corasick-0.5.3 |
| bitflags-0.1.1 |
| bitflags-0.7.0 |
| bufstream-0.1.2 |
| cargotest-0.1.0 |
| cfg-if-0.1.0 |
| cmake-0.1.19 |
| crates-io-0.6.0 |
| crossbeam-0.2.10 |
| curl-0.4.1 |
| curl-sys-0.3.6 |
| docopt-0.6.86 |
| env_logger-0.3.5 |
| error-chain-0.7.2 |
| filetime-0.1.10 |
| flate2-0.2.14 |
| fs2-0.3.0 |
| gcc-0.3.39 |
| gdi32-sys-0.2.0 |
| git2-0.6.3 |
| git2-curl-0.7.0 |
| glob-0.2.11 |
| hamcrest-0.1.1 |
| idna-0.1.0 |
| kernel32-sys-0.2.2 |
| lazy_static-0.2.2 |
| libc-0.2.18 |
| libgit2-sys-0.6.6 |
| libssh2-sys-0.2.5 |
| libz-sys-1.0.13 |
| log-0.3.6 |
| matches-0.1.4 |
| memchr-0.1.11 |
| metadeps-1.1.1 |
| miniz-sys-0.1.7 |
| miow-0.1.3 |
| net2-0.2.26 |
| num-0.1.36 |
| num-bigint-0.1.35 |
| num-complex-0.1.35 |
| num-integer-0.1.32 |
| num-iter-0.1.32 |
| num-rational-0.1.35 |
| num-traits-0.1.36 |
| num_cpus-1.1.0 |
| openssl-0.9.6 |
| openssl-probe-0.1.0 |
| openssl-sys-0.9.6 |
| pkg-config-0.3.8 |
| psapi-sys-0.1.0 |
| rand-0.3.14 |
| regex-0.1.80 |
| regex-syntax-0.3.9 |
| rustc-serialize-0.3.21 |
| semver-0.5.1 |
| semver-parser-0.6.1 |
| shell-escape-0.1.3 |
| strsim-0.5.1 |
| tar-0.4.9 |
| tempdir-0.3.5 |
| term-0.4.4 |
| thread-id-2.0.0 |
| thread_local-0.2.7 |
| toml-0.2.1 |
| unicode-bidi-0.2.3 |
| unicode-normalization-0.1.2 |
| url-1.2.3 |
| user32-sys-0.2.0 |
| utf8-ranges-0.1.3 |
| winapi-0.2.8 |
| winapi-build-0.1.1 |
| ws2_32-sys-0.2.1 |
| " |
| |
| inherit cargo bash-completion-r1 |
| |
| DESCRIPTION="The Rust's package manager" |
| HOMEPAGE="http://crates.io" |
| SRC_URI="https://github.com/rust-lang/cargo/archive/${PV}.tar.gz -> ${P}.tar.gz |
| $(cargo_crate_uris ${CRATES}) |
| x86? ( |
| https://static.rust-lang.org/cargo-dist/${CARGO_SNAPSHOT_DATE}/cargo-nightly-i686-unknown-linux-gnu.tar.gz -> |
| cargo-snapshot-x86-${CARGO_SNAPSHOT_DATE}.tar.gz |
| ) |
| amd64? ( |
| https://static.rust-lang.org/cargo-dist/${CARGO_SNAPSHOT_DATE}/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz -> |
| cargo-snapshot-amd64-${CARGO_SNAPSHOT_DATE}.tar.gz |
| )" |
| |
| LICENSE="|| ( MIT Apache-2.0 )" |
| SLOT="0" |
| KEYWORDS="*" |
| |
| IUSE="libressl" |
| |
| COMMON_DEPEND="sys-libs/zlib |
| !libressl? ( dev-libs/openssl:0= ) |
| libressl? ( dev-libs/libressl:0= ) |
| net-libs/http-parser" |
| RDEPEND="${COMMON_DEPEND} |
| !dev-util/cargo-bin |
| net-misc/curl[ssl]" |
| DEPEND="${COMMON_DEPEND} |
| >=dev-lang/rust-1.9.0:stable |
| dev-util/cmake |
| sys-apps/coreutils |
| sys-apps/diffutils |
| sys-apps/findutils |
| sys-apps/sed" |
| |
| src_configure() { |
| # Cargo only supports these GNU triples: |
| # - Linux: <arch>-unknown-linux-gnu |
| # - MacOS: <arch>-apple-darwin |
| # - Windows: <arch>-pc-windows-gnu |
| # where <arch> could be 'x86_64' (amd64) or 'i686' (x86) |
| use amd64 && CTARGET="x86_64-unknown-linux-gnu" |
| use x86 && CTARGET="i686-unknown-linux-gnu" |
| |
| # NOTE: 'disable-nightly' is used by crates (such as 'matches') to entirely |
| # skip their internal libraries that make use of unstable rustc features. |
| # Don't use 'enable-nightly' with a stable release of rustc as DEPEND, |
| # otherwise you could get compilation issues. |
| # see: github.com/gentoo/gentoo-rust/issues/13 |
| local myeconfargs=( |
| --host=${CTARGET} |
| --build=${CTARGET} |
| --target=${CTARGET} |
| --cargo="${WORKDIR}"/${P}/target/snapshot/bin/cargo |
| --enable-optimize |
| # --release-channel stable |
| --disable-verify-install |
| --disable-debug |
| --disable-cross-tests |
| ) |
| econf "${myeconfargs[@]}" |
| } |
| |
| src_compile() { |
| # Building sources |
| export CARGO_HOME="${ECARGO_HOME}" |
| emake VERBOSE=1 PKG_CONFIG_PATH="" |
| |
| # Building HTML documentation |
| # disabled because einstalldocs only works on EAPI=6 |
| # use doc && emake doc |
| } |
| |
| src_install() { |
| emake prepare-image-${CTARGET} IMGDIR_${CTARGET}="${ED}/usr" |
| |
| # Install HTML documentation |
| # Disabled for ChromeOS because this is an EAPI=6 feature |
| #use doc && HTML_DOCS=("target/doc") |
| #einstalldocs |
| |
| dobashcomp "${ED}"/usr/etc/bash_completion.d/cargo |
| rm -rf "${ED}"/usr/etc || die |
| } |
| |
| src_test() { |
| # Running unit tests |
| # NOTE: by default 'make test' uses the copy of cargo (v0.0.1-pre-nighyly) |
| # from the installer snapshot instead of the version just built, so the |
| # ebuild needs to override the value of CFG_LOCAL_CARGO to avoid false |
| # positives from unit tests. |
| emake test \ |
| CFG_ENABLE_OPTIMIZE=1 \ |
| VERBOSE=1 \ |
| CFG_LOCAL_CARGO="${WORKDIR}"/${P}/target/${CTARGET}/release/cargo |
| } |