Files
poky/meta/recipes-devtools
Sundeep KOKKONDA a0d3dde7c0 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: a4886f02dfb78e861fd7afe07b4a25c262bf0421)

Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8ed000debb026477abd86ea3bf72adaf21d69f39)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-06-07 11:53:26 +01:00
..
2022-05-04 13:07:33 +01:00
2022-03-09 11:46:27 +00:00
2022-03-02 18:43:24 +00:00
2022-04-14 09:47:00 +01:00
2021-11-25 21:55:10 +00:00
2022-03-16 10:31:40 +00:00
2022-03-29 15:59:29 +01:00
2022-03-16 13:39:12 +00:00
2022-04-28 17:07:18 +01:00
2021-11-03 10:12:42 +00:00
2022-03-24 17:45:29 +00:00
2022-05-28 10:38:17 +01:00
2022-05-25 22:45:50 +01:00
2022-03-23 12:13:49 +00:00
2022-02-08 14:20:18 +00:00
2022-04-19 14:02:13 +01:00
2022-03-11 06:56:01 +00:00
2022-05-25 22:45:50 +01:00
2022-03-20 00:02:22 +00:00
2021-08-02 15:44:10 +01:00
2021-08-02 15:44:10 +01:00
2022-03-26 09:33:32 +00:00
2021-11-10 19:27:29 +00:00
2022-03-02 18:43:24 +00:00
2022-04-28 17:07:18 +01:00
2022-05-04 13:07:33 +01:00
2021-12-08 20:22:10 +00:00
2022-03-23 12:13:50 +00:00