From ed40567dde2ae1b1f8b0dc0e589093c8b357d713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 19 Mar 2024 15:00:45 +0000 Subject: formatters: export a RUST_TARGET env variable for cross builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This the value to be passed to 'cargo --target NAME' when doing a cross compiled build. Signed-off-by: Daniel P. Berrangé --- lcitool/formatters.py | 7 +++++++ lcitool/util.py | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lcitool/formatters.py b/lcitool/formatters.py index ed8cecd..f057e2f 100644 --- a/lcitool/formatters.py +++ b/lcitool/formatters.py @@ -95,6 +95,7 @@ class Formatter(metaclass=abc.ABCMeta): "cross_arch": None, "cross_abi": None, "cross_arch_deb": None, + "cross_rust_target": None, "mappings": [pkg.mapping for pkg in pkgs.values()], "pkgs": package_names["native"], @@ -111,6 +112,9 @@ class Formatter(metaclass=abc.ABCMeta): cross_arch_deb = util.native_arch_to_deb_arch(target.cross_arch) varmap["cross_arch_deb"] = cross_arch_deb + if "rust" in varmap["mappings"]: + varmap["cross_rust_target"] = util.native_arch_to_rust_target(varmap["cross_arch"]) + log.debug(f"Generated varmap: {varmap}") return varmap @@ -440,6 +444,9 @@ class BuildEnvFormatter(Formatter): else: env["MESON_OPTS"] = "--cross-file=" + varmap["cross_abi"] + if "rust" in varmap["mappings"]: + env["RUST_TARGET"] = varmap["cross_rust_target"] + return env diff --git a/lcitool/util.py b/lcitool/util.py index 1123348..fd385d8 100644 --- a/lcitool/util.py +++ b/lcitool/util.py @@ -197,6 +197,25 @@ def native_arch_to_deb_arch(native_arch): return archmap[native_arch] +def native_arch_to_rust_target(native_arch): + archmap = { + "aarch64": "aarch64-unknown-linux-gnu", + "armv6l": "armv5te-unknown-linux-gnueabi", + "armv7l": "armv7-unknown-linux-gnueabihf", + "i686": "i686-unknown-linux-gnu", + "mips": "mips-unknown-linux-gnu", + "mipsel": "mipsel-unknown-linux-gnu", + "mips64el": "mips64el-unknown-linux-gnuabi64", + "ppc64le": "powerpc64le-unknown-linux-gnu", + "riscv64": "riscv64gc-unknown-linux-gnu", + "s390x": "s390x-unknown-linux-gnu", + "x86_64": "x86_64-unknown-linux-gnu", + } + if native_arch not in archmap: + raise ValueError(f"Unsupported rust target {native_arch}") + return archmap[native_arch] + + def generate_file_header(cliargv): url = "https://gitlab.com/libvirt/libvirt-ci" -- cgit v1.1