mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-22 22:21:10 +02:00
coreos-cargo.eclass: Drop this eclass and the associated overrides
Cross-compiling is handled in the upstream cargo.eclass now. Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
This commit is contained in:
parent
daab7c3970
commit
1e4abad322
@ -1,8 +0,0 @@
|
||||
cros_pre_src_unpack_coreos_unpack() {
|
||||
local _COREOS_CARGO_SKIP_INHERIT=1
|
||||
source "${CROS_ADDONS_TREE}"/../eclass/coreos-cargo.eclass
|
||||
src_unpack() {
|
||||
einfo "Running coreos-cargo_src_unpack"
|
||||
coreos-cargo_src_unpack
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
cros_pre_src_unpack_coreos_unpack() {
|
||||
local _COREOS_CARGO_SKIP_INHERIT=1
|
||||
source "${CROS_ADDONS_TREE}"/../eclass/coreos-cargo.eclass
|
||||
src_unpack() {
|
||||
einfo "Running coreos-cargo_src_unpack"
|
||||
coreos-cargo_src_unpack
|
||||
}
|
||||
}
|
||||
|
||||
cros_pre_src_install_rust_cross() {
|
||||
pushd "${S}"
|
||||
local rust_target="$(ls -d target/*-unknown-linux-gnu)"
|
||||
rust_target="${rust_target#target/}"
|
||||
ln -f target/{"${rust_target}",}/"$(usex debug debug release)/pdata_tools" || die
|
||||
popd
|
||||
}
|
@ -1,113 +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.
|
||||
if [[ -z ${_COREOS_CARGO_SKIP_INHERIT} ]]; then
|
||||
CATEGORY=dev-util PN=cargo inherit cargo
|
||||
inherit toolchain-funcs
|
||||
|
||||
EXPORT_FUNCTIONS src_unpack
|
||||
fi
|
||||
|
||||
# @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=()
|
||||
# rustlib is part of host rustc now, so no: [ "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}")
|
||||
local -a config_lines
|
||||
local build_amended=0
|
||||
local target_rust_target_amended=0
|
||||
local REPLY
|
||||
readonly b_header='[build]'
|
||||
readonly t_header="[target.${RUST_TARGET}]"
|
||||
readonly target_line="target = \"${RUST_TARGET}\""
|
||||
readonly ar_line="ar = \"${TARGET_AR}\""
|
||||
readonly linker_line="linker = \"${TARGET_CC}\""
|
||||
while read -r; do
|
||||
config_lines+=("${REPLY}")
|
||||
case "${REPLY}" in
|
||||
"${b_header}")
|
||||
config_lines+=("${target_line}")
|
||||
build_amended=1
|
||||
;;
|
||||
"${t_header}")
|
||||
config_lines+=("${ar_line}")
|
||||
config_lines+=("${linker_line}")
|
||||
target_rust_target_amended=1
|
||||
;;
|
||||
esac
|
||||
done <"${ECARGO_HOME}/config"
|
||||
if [[ "${build_amended}" -eq 0 ]]; then
|
||||
config_lines+=('' "${b_header}" "${target_line}")
|
||||
fi
|
||||
if [[ "${target_rust_target_amended}" -eq 0 ]]; then
|
||||
config_lines+=('' "${t_header}" "${ar_line}" "${linker_line}")
|
||||
fi
|
||||
printf '%s\n' "${config_lines[@]}" >"${ECARGO_HOME}/config"
|
||||
}
|
||||
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user