package/rustc: install cargo config as toolchain post-install hook

The cargo config file is much like the cmake and meson configuration
files, something that tells the cargo build system how the
cross-toolchain is configured.

It is currently installed by the cargo package, but this package is
about to be removed as cargo is now built as part of rust
itself. Therefore, install the cargo config file as a toolchain
post-install hook, just like we do for cmake and meson.

However, we don't have a pkg-cargo infrastructure (yet) so we can't
put it there. Therefore, put it in the rustc package - any cargo
package will need rustc.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: David Pierret <david.pierret@smile.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Arnout Vandecappelle (Essensium/Mind) 2020-02-07 19:08:20 +01:00 committed by Thomas Petazzoni
parent 00b7abf7eb
commit 16d3d70590
3 changed files with 12 additions and 6 deletions

View File

@ -80,12 +80,6 @@ endef
define HOST_CARGO_INSTALL_CMDS
$(INSTALL) -D -m 0755 $(@D)/target/release/cargo $(HOST_DIR)/bin/cargo
$(INSTALL) -D package/cargo/config.in \
$(HOST_DIR)/share/cargo/config
$(SED) 's/@RUSTC_TARGET_NAME@/$(RUSTC_TARGET_NAME)/' \
$(HOST_DIR)/share/cargo/config
$(SED) 's/@CROSS_PREFIX@/$(notdir $(TARGET_CROSS))/' \
$(HOST_DIR)/share/cargo/config
endef
$(eval $(host-generic-package))

View File

@ -20,3 +20,15 @@ endif
RUSTC_HOST_NAME = $(RUSTC_HOST_ARCH)-unknown-linux-gnu
$(eval $(host-virtual-package))
ifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)
define RUSTC_INSTALL_CARGO_CONFIG
mkdir -p $(HOST_DIR)/share/cargo
sed -e 's/@RUSTC_TARGET_NAME@/$(RUSTC_TARGET_NAME)/' \
-e 's/@CROSS_PREFIX@/$(notdir $(TARGET_CROSS))/' \
package/rustc/cargo-config.in \
> $(HOST_DIR)/share/cargo/config
endef
# check-package disable TypoInPackageVariable - TOOLCHAIN intended
TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += RUSTC_INSTALL_CARGO_CONFIG
endif