coreos-cargo.eclass: Drop the CoreOS board cross-compilation eclass

With amd64 as the only supported board, the SDK host compiler can
be used with EAPI=7 and the upstream cargo.eclass to build our
Rust projects using 100% upstream Gentoo configuration.

This also drops the std library bootstrapping package along with
the eclass, since that was its only use.
This commit is contained in:
David Michael 2018-10-29 18:37:37 +00:00
parent dd3d4270c9
commit 416e2c6530
5 changed files with 0 additions and 176 deletions

View File

@ -1 +0,0 @@
DIST rustc-1.29.1-src.tar.gz 106095241 BLAKE2B c793824bcf9bd60f5e60cc97c297807d9fb998c1fe7478056a68bcc18f8c9166d71c69d6489d1898448b0b470c152206fbe2107e49dbc9a406d4e0a3c92fc97f SHA512 3151c398a79169af7dd0735d5115112cb64858120a637eda018cb4544dd9988f7540120cc0122d2af7348968285650d8605837e9f40337ec95e549d5e8763f04

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,64 +0,0 @@
# Copyright 2017-2018 CoreOS, Inc.
# Distributed under the terms of the GNU General Public License v2
EAPI=6
inherit coreos-cargo
DESCRIPTION="Standard libraries for Rust"
HOMEPAGE="http://www.rust-lang.org/"
LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
SRC_URI="https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz"
S="${WORKDIR}/rustc-${PV}-src"
RDEPEND="!dev-lang/rust"
SLOT="0/${PVR}"
KEYWORDS="amd64 arm64"
src_configure() {
# get rid of the top level Cargo.toml or else cargo tries to use this one
# too, and we don't want that since we aren't building the whole compiler
rm src/Cargo.toml
# Add the vendored crates to the local registry.
ln -fst "${ECARGO_VENDOR}" "${S}"/src/vendor/*
}
src_compile() {
# put the target dir somewhere predictable
local -x CARGO_TARGET_DIR="${T}/target"
# look up required crates in our fake registry
local -x CARGO_HOME="${ECARGO_HOME}"
# set this required bootstrapping variable
local -x CFG_COMPILER_HOST_TRIPLE="${RUST_TARGET}"
# fake out the compiler so that it lets us use #!feature attributes
# really building the std libs is bootstrapping anyway, so I don't feel bad
local -x RUSTC_BOOTSTRAP=1
# various required flags for compiling thes std libs
local -x RUSTFLAGS="-C prefer-dynamic -L ${CARGO_TARGET_DIR}/${RUST_TARGET}/release/deps -Z force-unstable-if-unmarked"
# set the metadata directory for the boostrap build
local -x RUSTC_ERROR_METADATA_DST="${T}/target/release/build/tmp/extended-error-metadata"
# build the std lib, which also builds all the other important libraries
# (core, collections, etc). build it for the target we want for this build.
# also make sure that the jemalloc libraries are included.
local -a features=( $(usex debug debug-jemalloc jemalloc) panic-unwind )
cargo build -p std -v --lib $(usex debug '' --release) \
--features "${features[*]}" \
--manifest-path src/libstd/Cargo.toml \
--target "${RUST_TARGET}" || die
cargo build -p term -v --lib $(usex debug '' --release) \
--manifest-path src/libterm/Cargo.toml \
--target "${RUST_TARGET}" || die
# Correct the directory name prior to installing it.
mv "${CARGO_TARGET_DIR}/${RUST_TARGET}/release/deps" "${CARGO_TARGET_DIR}/${RUST_TARGET}/release/lib"
}
src_install() {
insinto "/usr/$(get_libdir)/rustlib/${RUST_TARGET}"
doins -r "${T}/target/${RUST_TARGET}/release/lib"
}

View File

@ -1,95 +0,0 @@
# Copyright 2017-2018 CoreOS, Inc.
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: coreos-cargo.eclass
# @MAINTAINER:
# team-os@coreos.com
# @AUTHOR:
# David Michael <david.michael@coreos.com>
# @BLURB: cargo cross-compilation support for CoreOS/ChromeOS targets
if [[ -z ${_COREOS_CARGO_ECLASS} ]]; then
_COREOS_CARGO_ECLASS=1
# XXX: Don't require host dependencies to also be in the sysroot.
CATEGORY=dev-util PN=cargo inherit cargo
inherit toolchain-funcs
EXPORT_FUNCTIONS src_unpack
[[ ${CATEGORY}/${PN} != dev-libs/rustlib ]] && DEPEND="|| (
dev-libs/rustlib:=
dev-util/cargo
)"
# @FUNCTION: coreos-cargo_src_unpack
# @DESCRIPTION:
# This amends the src_unpack from cargo.eclass to add support for Rust
# cross-compiling to the ChromeOS targets. It maps the host triplet to
# one built into rustc and uses the board root as its sysroot.
coreos-cargo_src_unpack() {
debug-print-function ${FUNCNAME} "$@"
cargo_src_unpack "$@"
[[ ${CBUILD:-${CHOST}} != ${CHOST} ]] || return 0
# Map the SDK host triplet to one that is built into rustc.
function rust_builtin_target() case "$1" in
aarch64-*-linux-gnu) echo aarch64-unknown-linux-gnu ;;
x86_64-*-linux-gnu) echo x86_64-unknown-linux-gnu ;;
*) die "Unknown host triplet: $1" ;;
esac
# Set the gcc-rs flags for cross-compiling.
export TARGET_CFLAGS="${CFLAGS}"
export TARGET_CXXFLAGS="${CXXFLAGS}"
# Wrap ar for gcc-rs to work around rust-lang/cargo#4456.
export TARGET_AR="${T}/rustproof-ar"
cat <<- EOF > "${TARGET_AR}" && chmod 0755 "${TARGET_AR}"
#!/bin/sh
unset LD_LIBRARY_PATH
exec $(tc-getAR) "\$@"
EOF
# Wrap gcc for gcc-rs to work around rust-lang/cargo#4456.
export TARGET_CC="${T}/rustproof-cc"
cat <<- EOF > "${TARGET_CC}" && chmod 0755 "${TARGET_CC}"
#!/bin/sh
unset LD_LIBRARY_PATH
exec $(tc-getCC) "\$@"
EOF
# Wrap g++ for gcc-rs to work around rust-lang/cargo#4456.
export TARGET_CXX="${T}/rustproof-cxx"
cat <<- EOF > "${TARGET_CXX}" && chmod 0755 "${TARGET_CXX}"
#!/bin/sh
unset LD_LIBRARY_PATH
exec $(tc-getCXX) "\$@"
EOF
# Create a compiler wrapper that uses a sysroot for cross-compiling.
export RUSTC_WRAPPER="${T}/wrustc"
cat <<- 'EOF' > "${RUSTC_WRAPPER}" && chmod 0755 "${RUSTC_WRAPPER}"
#!/bin/bash -e
rustc=${1:?Missing rustc command}
shift
xflags=()
[ "x$*" = "x${*#--target}" ] || xflags=( --sysroot="${ROOT:-/}usr" )
exec "${rustc}" "${xflags[@]}" "$@"
EOF
# Compile for the built-in target, using the SDK cross-tools.
export RUST_TARGET=$(rust_builtin_target "${CHOST}")
cat <<- EOF >> "${ECARGO_HOME}/config"
[build]
target = "${RUST_TARGET}"
[target.${RUST_TARGET}]
ar = "${TARGET_AR}"
linker = "${TARGET_CC}"
EOF
}
fi

View File

@ -1,12 +0,0 @@
DEFINED_PHASES=compile configure install unpack
DESCRIPTION=Standard libraries for Rust
EAPI=6
HOMEPAGE=http://www.rust-lang.org/
IUSE=debug
KEYWORDS=amd64 arm64
LICENSE=|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA
RDEPEND=!dev-lang/rust
SLOT=0/1.29.1
SRC_URI=https://static.rust-lang.org/dist/rustc-1.29.1-src.tar.gz
_eclasses_=cargo c11c4632a7a9d8e0b76e9f4412e76163 coreos-cargo ecc71b7f40f79def52bcee3f1dca6559 multilib b2f01ad412baf81650c23fcf0975fa33 multiprocessing cac3169468f893670dac3e7cb940e045 toolchain-funcs f164325a2cdb5b3ea39311d483988861
_md5_=d5ff44d34648d4f7fe52a93db0d8195b