aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2024-03-19 15:00:45 +0000
committerDaniel P. Berrangé <berrange@redhat.com>2024-03-19 15:02:22 +0000
commited40567dde2ae1b1f8b0dc0e589093c8b357d713 (patch)
tree8052fc4733a0d2408955bbb2bd90ad51c0e8cee3
parentaad91c579f8f3df0d0c0706c2bcdf0df1196bf5b (diff)
downloadlibvirt-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.py7
-rw-r--r--lcitool/util.py19
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"