[Buildroot] [RFC PATCH 1/7] package/rust: build and install cargo

Eric Le Bihan eric.le.bihan.dev at free.fr
Tue Nov 5 21:12:53 UTC 2019


Cargo source code is not provided anymore as a separate tarball but is
now built along with the Rust compiler.

So update rust host variant to build Cargo and install the
cross-compilation configuration file.

Signed-off-by: Eric Le Bihan <eric.le.bihan.dev at free.fr>
---
 package/rust/config.in |  2 ++
 package/rust/rust.mk   | 25 ++++++++++++++++++++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 package/rust/config.in

diff --git a/package/rust/config.in b/package/rust/config.in
new file mode 100644
index 0000000000..47fad026be
--- /dev/null
+++ b/package/rust/config.in
@@ -0,0 +1,2 @@
+[target. at RUSTC_TARGET_NAME@]
+linker = "@CROSS_PREFIX at gcc"
diff --git a/package/rust/rust.mk b/package/rust/rust.mk
index 5d14fc6682..901995c203 100644
--- a/package/rust/rust.mk
+++ b/package/rust/rust.mk
@@ -47,11 +47,14 @@ define HOST_RUST_CONFIGURE_CMDS
 		echo 'python = "$(HOST_DIR)/bin/python2"'; \
 		echo 'submodules = false'; \
 		echo 'vendor = true'; \
+		echo 'extended = true'; \
+		echo 'tools = ["cargo"]'; \
 		echo 'compiler-docs = false'; \
 		echo 'docs = false'; \
 		echo 'verbose = $(HOST_RUST_VERBOSITY)'; \
 		echo '[install]'; \
 		echo 'prefix = "$(HOST_DIR)"'; \
+		echo 'sysconfdir = "$(HOST_DIR)/etc"'; \
 		echo '[rust]'; \
 		echo 'channel = "stable"'; \
 		echo '[target.$(RUSTC_TARGET_NAME)]'; \
@@ -64,9 +67,29 @@ define HOST_RUST_BUILD_CMDS
 	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py build
 endef
 
-define HOST_RUST_INSTALL_CMDS
+define HOST_RUST_INSTALL_RUST_BIN
 	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py dist
 	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py install
 endef
 
+define HOST_RUST_INSTALL_CARGO_BIN
+	find $(@D)/build/tmp/dist -maxdepth 2 -wholename '*cargo*/install.sh' \
+		-exec {} --prefix=$(HOST_DIR) --disable-ldconfig \;
+endef
+
+define HOST_RUST_INSTALL_CARGO_CONFIG
+	$(INSTALL) -D package/rust/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
+
+define HOST_RUST_INSTALL_CMDS
+	$(HOST_RUST_INSTALL_RUST_BIN)
+	$(HOST_RUST_INSTALL_CARGO_BIN)
+	$(HOST_RUST_INSTALL_CARGO_CONFIG)
+endef
+
 $(eval $(host-generic-package))
-- 
2.21.0




More information about the buildroot mailing list