mirror of
git://git.yoctoproject.org/poky.git
synced 2025-08-22 00:42:05 +02:00

cargo_common_do_configure uses CARGO_MANIFEST_PATH (which depends on CARGO_SRC_DIR), but their definition was in cargo.bbclass. (From OE-Core rev: 740374a13ad5359767b421666decf50c158ea0df) Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
94 lines
2.5 KiB
Plaintext
94 lines
2.5 KiB
Plaintext
#
|
|
# Copyright OpenEmbedded Contributors
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
##
|
|
## Purpose:
|
|
## This class is used by any recipes that are built using
|
|
## Cargo.
|
|
|
|
inherit cargo_common
|
|
inherit rust-target-config
|
|
|
|
# the binary we will use
|
|
CARGO = "cargo"
|
|
|
|
# We need cargo to compile for the target
|
|
BASEDEPENDS:append = " cargo-native"
|
|
|
|
# Ensure we get the right rust variant
|
|
DEPENDS:append:class-target = " rust-native ${RUSTLIB_DEP}"
|
|
DEPENDS:append:class-nativesdk = " rust-native ${RUSTLIB_DEP}"
|
|
DEPENDS:append:class-native = " rust-native"
|
|
|
|
# Enable build separation
|
|
B = "${WORKDIR}/build"
|
|
|
|
# In case something fails in the build process, give a bit more feedback on
|
|
# where the issue occured
|
|
export RUST_BACKTRACE = "1"
|
|
|
|
RUSTFLAGS ??= ""
|
|
BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
|
|
# --frozen flag will prevent network access (which is required since only
|
|
# the do_fetch step is authorized to access network)
|
|
# and will require an up to date Cargo.lock file.
|
|
# This force the package being built to already ship a Cargo.lock, in the end
|
|
# this is what we want, at least, for reproducibility of the build.
|
|
CARGO_BUILD_FLAGS = "-v --frozen --target ${RUST_HOST_SYS} ${BUILD_MODE} --manifest-path=${CARGO_MANIFEST_PATH}"
|
|
|
|
# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
|
|
# change if CARGO_BUILD_FLAGS changes.
|
|
BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
|
|
CARGO_TARGET_SUBDIR="${RUST_HOST_SYS}/${BUILD_DIR}"
|
|
oe_cargo_build () {
|
|
export RUSTFLAGS="${RUSTFLAGS}"
|
|
bbnote "Using rust targets from ${RUST_TARGET_PATH}"
|
|
bbnote "cargo = $(which ${CARGO})"
|
|
bbnote "${CARGO} build ${CARGO_BUILD_FLAGS} $@"
|
|
"${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
|
|
}
|
|
|
|
do_compile[progress] = "outof:\s+(\d+)/(\d+)"
|
|
cargo_do_compile () {
|
|
oe_cargo_build
|
|
}
|
|
|
|
cargo_do_install () {
|
|
local have_installed=false
|
|
for tgt in "${B}/target/${CARGO_TARGET_SUBDIR}/"*; do
|
|
case $tgt in
|
|
*.so|*.rlib)
|
|
install -d "${D}${rustlibdir}"
|
|
install -m755 "$tgt" "${D}${rustlibdir}"
|
|
have_installed=true
|
|
;;
|
|
*examples)
|
|
if [ -d "$tgt" ]; then
|
|
for example in "$tgt/"*; do
|
|
if [ -f "$example" ] && [ -x "$example" ]; then
|
|
install -d "${D}${bindir}"
|
|
install -m755 "$example" "${D}${bindir}"
|
|
have_installed=true
|
|
fi
|
|
done
|
|
fi
|
|
;;
|
|
*)
|
|
if [ -f "$tgt" ] && [ -x "$tgt" ]; then
|
|
install -d "${D}${bindir}"
|
|
install -m755 "$tgt" "${D}${bindir}"
|
|
have_installed=true
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
if ! $have_installed; then
|
|
die "Did not find anything to install"
|
|
fi
|
|
}
|
|
|
|
EXPORT_FUNCTIONS do_compile do_install
|