diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2024-03-19 15:00:45 +0000 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2024-03-19 15:02:22 +0000 |
commit | ed40567dde2ae1b1f8b0dc0e589093c8b357d713 (patch) | |
tree | 8052fc4733a0d2408955bbb2bd90ad51c0e8cee3 | |
parent | aad91c579f8f3df0d0c0706c2bcdf0df1196bf5b (diff) | |
download | libvirt-ci-ed40567dde2ae1b1f8b0dc0e589093c8b357d713.zip libvirt-ci-ed40567dde2ae1b1f8b0dc0e589093c8b357d713.tar.gz libvirt-ci-ed40567dde2ae1b1f8b0dc0e589093c8b357d713.tar.bz2 |
formatters: export a RUST_TARGET env variable for cross builds
This the value to be passed to 'cargo --target NAME' when doing
a cross compiled build.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
-rw-r--r-- | lcitool/formatters.py | 7 | ||||
-rw-r--r-- | lcitool/util.py | 19 |
2 files changed, 26 insertions, 0 deletions
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" |