1*4882a593SmuzhiyunSUMMARY ?= "Cargo, a package manager for Rust." 2*4882a593SmuzhiyunHOMEPAGE = "https://crates.io" 3*4882a593SmuzhiyunLICENSE = "MIT | Apache-2.0" 4*4882a593SmuzhiyunSECTION = "devel" 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunDEPENDS = "openssl zlib curl ca-certificates libssh2" 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunLIC_FILES_CHKSUM = " \ 9*4882a593Smuzhiyun file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \ 10*4882a593Smuzhiyun file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \ 11*4882a593Smuzhiyun file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \ 12*4882a593Smuzhiyun" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunS = "${RUSTSRC}/src/tools/cargo" 16*4882a593SmuzhiyunCARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor" 17*4882a593SmuzhiyunEXCLUDE_FROM_WORLD = "1" 18*4882a593Smuzhiyun 19*4882a593Smuzhiyuninherit cargo pkgconfig 20*4882a593Smuzhiyun 21*4882a593Smuzhiyundo_cargo_setup_snapshot () { 22*4882a593Smuzhiyun ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig 23*4882a593Smuzhiyun # Need to use uninative's loader if enabled/present since the library paths 24*4882a593Smuzhiyun # are used internally by rust and result in symbol mismatches if we don't 25*4882a593Smuzhiyun if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then 26*4882a593Smuzhiyun patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER} 27*4882a593Smuzhiyun fi 28*4882a593Smuzhiyun} 29*4882a593Smuzhiyun 30*4882a593Smuzhiyunaddtask cargo_setup_snapshot after do_unpack before do_configure 31*4882a593Smuzhiyundo_cargo_setup_snapshot[dirs] += "${WORKDIR}/${CARGO_SNAPSHOT}" 32*4882a593Smuzhiyundo_cargo_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER" 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun 35*4882a593Smuzhiyundo_compile:prepend () { 36*4882a593Smuzhiyun export RUSTC_BOOTSTRAP="1" 37*4882a593Smuzhiyun} 38*4882a593Smuzhiyun 39*4882a593Smuzhiyundo_install () { 40*4882a593Smuzhiyun install -d "${D}${bindir}" 41*4882a593Smuzhiyun install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${D}${bindir}" 42*4882a593Smuzhiyun} 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1) 45*4882a593Smuzhiyun# as shipped by Yocto Dunfell. 46*4882a593Smuzhiyun# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between 47*4882a593Smuzhiyun# libgit2-sys and arbitrary system libgit2 versions, so better keep this turned off. 48*4882a593Smuzhiyun#export LIBGIT2_SYS_USE_PKG_CONFIG = "1" 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun# Needed for pkg-config to be used 51*4882a593Smuzhiyunexport LIBSSH2_SYS_USE_PKG_CONFIG = "1" 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun# When building cargo-native we don't have cargo-native to use and depend on, 54*4882a593Smuzhiyun# so we must use the locally set up snapshot to bootstrap the build. 55*4882a593SmuzhiyunBASEDEPENDS:remove:class-native = "cargo-native" 56*4882a593SmuzhiyunCARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo" 57