diff options
-rw-r--r-- | meta/classes/base.bbclass | 2 | ||||
-rw-r--r-- | meta/classes/rust-common.bbclass | 2 | ||||
-rw-r--r-- | meta/lib/oe/rust.py | 5 | ||||
-rw-r--r-- | meta/recipes-devtools/rust/rust-common.inc | 8 |
4 files changed, 12 insertions, 5 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 966eadad67..b7869da3b3 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass | |||
@@ -12,7 +12,7 @@ inherit logging | |||
12 | 12 | ||
13 | OE_EXTRA_IMPORTS ?= "" | 13 | OE_EXTRA_IMPORTS ?= "" |
14 | 14 | ||
15 | OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible ${OE_EXTRA_IMPORTS}" | 15 | OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible oe.rust ${OE_EXTRA_IMPORTS}" |
16 | OE_IMPORTS[type] = "list" | 16 | OE_IMPORTS[type] = "list" |
17 | 17 | ||
18 | PACKAGECONFIG_CONFARGS ??= "" | 18 | PACKAGECONFIG_CONFARGS ??= "" |
diff --git a/meta/classes/rust-common.bbclass b/meta/classes/rust-common.bbclass index 98d65970e8..8cfe864ca3 100644 --- a/meta/classes/rust-common.bbclass +++ b/meta/classes/rust-common.bbclass | |||
@@ -65,7 +65,7 @@ def rust_base_triple(d, thing): | |||
65 | if thing == "TARGET" and target_is_armv7(d): | 65 | if thing == "TARGET" and target_is_armv7(d): |
66 | arch = "armv7" | 66 | arch = "armv7" |
67 | else: | 67 | else: |
68 | arch = d.getVar('{}_ARCH'.format(thing)) | 68 | arch = oe.rust.arch_to_rust_arch(d.getVar('{}_ARCH'.format(thing))) |
69 | 69 | ||
70 | # All the Yocto targets are Linux and are 'unknown' | 70 | # All the Yocto targets are Linux and are 'unknown' |
71 | vendor = "-unknown" | 71 | vendor = "-unknown" |
diff --git a/meta/lib/oe/rust.py b/meta/lib/oe/rust.py new file mode 100644 index 0000000000..ec70b34805 --- /dev/null +++ b/meta/lib/oe/rust.py | |||
@@ -0,0 +1,5 @@ | |||
1 | # Handle mismatches between `uname -m`-style output and Rust's arch names | ||
2 | def arch_to_rust_arch(arch): | ||
3 | if arch == "ppc64le": | ||
4 | return "powerpc64le" | ||
5 | return arch | ||
diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc index ceeee97863..310aecef22 100644 --- a/meta/recipes-devtools/rust/rust-common.inc +++ b/meta/recipes-devtools/rust/rust-common.inc | |||
@@ -313,10 +313,12 @@ def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""): | |||
313 | sys = sys_for(d, thing) | 313 | sys = sys_for(d, thing) |
314 | prefix = prefix_for(d, thing) | 314 | prefix = prefix_for(d, thing) |
315 | 315 | ||
316 | rust_arch = oe.rust.arch_to_rust_arch(arch) | ||
317 | |||
316 | if abi: | 318 | if abi: |
317 | arch_abi = "{}-{}".format(arch, abi) | 319 | arch_abi = "{}-{}".format(rust_arch, abi) |
318 | else: | 320 | else: |
319 | arch_abi = arch | 321 | arch_abi = rust_arch |
320 | 322 | ||
321 | features = features or d.getVarFlag('FEATURES', arch_abi) or "" | 323 | features = features or d.getVarFlag('FEATURES', arch_abi) or "" |
322 | features = features.strip() | 324 | features = features.strip() |
@@ -329,7 +331,7 @@ def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""): | |||
329 | tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi) | 331 | tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi) |
330 | tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi) | 332 | tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi) |
331 | tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi) | 333 | tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi) |
332 | tspec['arch'] = arch_to_rust_target_arch(arch) | 334 | tspec['arch'] = arch_to_rust_target_arch(rust_arch) |
333 | tspec['os'] = "linux" | 335 | tspec['os'] = "linux" |
334 | if "musl" in tspec['llvm-target']: | 336 | if "musl" in tspec['llvm-target']: |
335 | tspec['env'] = "musl" | 337 | tspec['env'] = "musl" |