diff options
author | Sundeep KOKKONDA <sundeep.kokkonda@gmail.com> | 2022-05-12 22:59:23 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-05-21 22:20:54 +0100 |
commit | 66ff1fb3a164fa794ee186960809e3fa9e938b48 (patch) | |
tree | 102c01e4553b8114e6838b2ac3fac7f9707937d1 /meta/recipes-devtools/rust/rust-common.inc | |
parent | 5ad33240d55dc9fddc499ae7957e7b5ea5a42d28 (diff) | |
download | poky-66ff1fb3a164fa794ee186960809e3fa9e938b48.tar.gz |
rust-common: Fix for target definitions returning 'NoneType' for arm
[YOCTO #14742]
The build shows below error while building for arm machines.
Exception: TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
Detailed error info :
Steps to reproduce:
1. Set MACHINE ?= "qemuarm" in local.conf & add 'TOOLCHAIN_HOST_TASK:append = " packagegroup-rust-cross-canadian-${MACHINE}"'
2. bitbake core-image-minimal -cpopulate_sdk
Complete Error:
ERROR: rust-cross-canadian-arm-1.59.0-r0 do_rust_gen_targets: Error executing a python function in exec_func_python() autogenerated:
The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_func_python() autogenerated', lineno: 2, function: <module>
0001:
*** 0002:do_rust_gen_targets(d)
0003:
File: '/ala-lpggp31/skokkonda/yocto/poky/meta/recipes-devtools/rust/rust-cross-canadian-common.inc', lineno: 31, function: do_rust_gen_targets
0027:
0028:LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
0029:python do_rust_gen_targets () {
0030: wd = d.getVar('WORKDIR') + '/targets/'
*** 0031: rust_gen_target(d, 'TARGET', wd, d.getVar('TARGET_LLVM_FEATURES') or "", d.getVar('TARGET_LLVM_CPU'), d.getVar('TARGET_ARCH'))
0032: rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
0033: rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
0034:}
0035:
File: '/ala-lpggp31/skokkonda/yocto/poky/meta/recipes-devtools/rust/rust-common.inc', lineno: 330, function: rust_gen_target
0326: # build tspec
0327: tspec = {}
0328: tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch_abi)
0329: tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch_abi)
*** 0330: tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch_abi))
0331: tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi)
0332: tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi)
0333: tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi)
0334: tspec['arch'] = arch_to_rust_target_arch(rust_arch)
Exception: TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
Below are the local variables from rust_gen_target function for arm and
aarch64 targets. Refer below, the tspec varibles for 'arm' generated with NoneType.
(a) Locals at rust_gen_target for arm::
tspec['data-layout'] = None, Type of tspec['data-layout'] = <class 'NoneType'>
tspec['data-layout'] = None, Type of tspec['data-layout'] = <class 'NoneType'>
DEBUG: Python function do_rust_gen_targets finished
(b) Locals at rust_gen_target for aarch64::
tspec['data-layout'] = aarch64-unknown-linux-gnu, Type of tspec['data-layout'] = <class 'str'>
tspec['max-atomic-width'] = 128, Type of tspec['max-atomic-width'] = <class 'int'>
Reason for changing arm-eabi to arm: The earlier changes introduced this bug, so reverting the change 'arm-eabi' to 'arm' fixed the issue.
(From OE-Core rev: 8ed000debb026477abd86ea3bf72adaf21d69f39)
Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/rust/rust-common.inc')
-rw-r--r-- | meta/recipes-devtools/rust/rust-common.inc | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc index 29b17cb955..984fe9099e 100644 --- a/meta/recipes-devtools/rust/rust-common.inc +++ b/meta/recipes-devtools/rust/rust-common.inc | |||
@@ -119,13 +119,13 @@ def llvm_features(d): | |||
119 | 119 | ||
120 | 120 | ||
121 | ## arm-unknown-linux-gnueabihf | 121 | ## arm-unknown-linux-gnueabihf |
122 | DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" | 122 | DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" |
123 | LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}" | 123 | LLVM_TARGET[arm] = "${RUST_TARGET_SYS}" |
124 | TARGET_ENDIAN[arm-eabi] = "little" | 124 | TARGET_ENDIAN[arm] = "little" |
125 | TARGET_POINTER_WIDTH[arm-eabi] = "32" | 125 | TARGET_POINTER_WIDTH[arm] = "32" |
126 | TARGET_C_INT_WIDTH[arm-eabi] = "32" | 126 | TARGET_C_INT_WIDTH[arm] = "32" |
127 | MAX_ATOMIC_WIDTH[arm-eabi] = "64" | 127 | MAX_ATOMIC_WIDTH[arm] = "64" |
128 | FEATURES[arm-eabi] = "+v6,+vfp2" | 128 | FEATURES[arm] = "+v6,+vfp2" |
129 | 129 | ||
130 | ## armv7-unknown-linux-gnueabihf | 130 | ## armv7-unknown-linux-gnueabihf |
131 | DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" | 131 | DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" |