meta: rust: Bug fix for target definitions returning 'NoneType'

Message ID 20220401060152.8255-1-sundeep.kokkonda@gmail.com
State Accepted, archived
Commit ef49f89c89889466ee3696ab680f8e10c961a677
Headers show
Series meta: rust: Bug fix for target definitions returning 'NoneType' | expand

Commit Message

Sundeep KOKKONDA April 1, 2022, 6:01 a.m. UTC
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'

All the target definitions within tspec dictionary are generted as
NoneType. The changes will fix this issue.

Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@gmail.com>
---
 meta/recipes-devtools/rust/rust-common.inc | 28 +++++++++++-----------
 1 file changed, 14 insertions(+), 14 deletions(-)

Comments

Alexander Kanavin April 1, 2022, 7:57 a.m. UTC | #1
Can you please explain why changing arm-eabi to arm fixes the issue
and provide the complete error?

We do build rust for arm machines on the autobuilder, and there is no
error like that occurring.

Alex

On Fri, 1 Apr 2022 at 08:02, Sundeep KOKKONDA
<sundeep.kokkonda@gmail.com> wrote:
>
> 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'
>
> All the target definitions within tspec dictionary are generted as
> NoneType. The changes will fix this issue.
>
> Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@gmail.com>
> ---
>  meta/recipes-devtools/rust/rust-common.inc | 28 +++++++++++-----------
>  1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
> index ceeee97863..6236c43d5c 100644
> --- a/meta/recipes-devtools/rust/rust-common.inc
> +++ b/meta/recipes-devtools/rust/rust-common.inc
> @@ -119,22 +119,22 @@ def llvm_features(d):
>
>
>  ## arm-unknown-linux-gnueabihf
> -DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> -LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}"
> -TARGET_ENDIAN[arm-eabi] = "little"
> -TARGET_POINTER_WIDTH[arm-eabi] = "32"
> -TARGET_C_INT_WIDTH[arm-eabi] = "32"
> -MAX_ATOMIC_WIDTH[arm-eabi] = "64"
> -FEATURES[arm-eabi] = "+v6,+vfp2"
> +DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> +LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
> +TARGET_ENDIAN[arm] = "little"
> +TARGET_POINTER_WIDTH[arm] = "32"
> +TARGET_C_INT_WIDTH[arm] = "32"
> +MAX_ATOMIC_WIDTH[arm] = "64"
> +FEATURES[arm] = "+v6,+vfp2"
>
>  ## armv7-unknown-linux-gnueabihf
> -DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> -LLVM_TARGET[armv7-eabi] = "${RUST_TARGET_SYS}"
> -TARGET_ENDIAN[armv7-eabi] = "little"
> -TARGET_POINTER_WIDTH[armv7-eabi] = "32"
> -TARGET_C_INT_WIDTH[armv7-eabi] = "32"
> -MAX_ATOMIC_WIDTH[armv7-eabi] = "64"
> -FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2"
> +DATA_LAYOUT[armv7] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> +LLVM_TARGET[armv7] = "${RUST_TARGET_SYS}"
> +TARGET_ENDIAN[armv7] = "little"
> +TARGET_POINTER_WIDTH[armv7] = "32"
> +TARGET_C_INT_WIDTH[armv7] = "32"
> +MAX_ATOMIC_WIDTH[armv7] = "64"
> +FEATURES[armv7] = "+v7,+vfp2,+thumb2"
>
>  ## aarch64-unknown-linux-{gnu, musl}
>  DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
> --
> 2.25.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#163881): https://lists.openembedded.org/g/openembedded-core/message/163881
> Mute This Topic: https://lists.openembedded.org/mt/90172076/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Alexandre Belloni April 2, 2022, 11:01 a.m. UTC | #2
On 01/04/2022 11:31:52+0530, Sundeep KOKKONDA wrote:
> 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'
> 
> All the target definitions within tspec dictionary are generted as
> NoneType. The changes will fix this issue.
> 

This actually caused the issue on the autobuidlers:

ERROR: rust-cross-cortexa8hf-neon-glibc-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: '/home/pokybuild/yocto-worker/beaglebone/build/meta/recipes-devtools/rust/rust-cross.inc', lineno: 19, function: do_rust_gen_targets
     0015:            if arch == "arm" and target_is_armv7(d):
     0016:                arch = 'armv7'
     0017:            features = d.getVar('TARGET_LLVM_FEATURES') or ""
     0018:            cpu = d.getVar('TARGET_LLVM_CPU')
 *** 0019:        rust_gen_target(d, thing, wd, features, cpu, arch, abi)
     0020:}
     0021:
     0022:# Otherwise we'll depend on what we provide
     0023:INHIBIT_DEFAULT_RUST_DEPS = "1"
File: '/home/pokybuild/yocto-worker/beaglebone/build/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'

https://autobuilder.yoctoproject.org/typhoon/#/builders/65/builds/5029/steps/11/logs/stdio

> Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@gmail.com>
> ---
>  meta/recipes-devtools/rust/rust-common.inc | 28 +++++++++++-----------
>  1 file changed, 14 insertions(+), 14 deletions(-)
> 
> diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
> index ceeee97863..6236c43d5c 100644
> --- a/meta/recipes-devtools/rust/rust-common.inc
> +++ b/meta/recipes-devtools/rust/rust-common.inc
> @@ -119,22 +119,22 @@ def llvm_features(d):
>  
>  
>  ## arm-unknown-linux-gnueabihf
> -DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> -LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}"
> -TARGET_ENDIAN[arm-eabi] = "little"
> -TARGET_POINTER_WIDTH[arm-eabi] = "32"
> -TARGET_C_INT_WIDTH[arm-eabi] = "32"
> -MAX_ATOMIC_WIDTH[arm-eabi] = "64"
> -FEATURES[arm-eabi] = "+v6,+vfp2"
> +DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> +LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
> +TARGET_ENDIAN[arm] = "little"
> +TARGET_POINTER_WIDTH[arm] = "32"
> +TARGET_C_INT_WIDTH[arm] = "32"
> +MAX_ATOMIC_WIDTH[arm] = "64"
> +FEATURES[arm] = "+v6,+vfp2"
>  
>  ## armv7-unknown-linux-gnueabihf
> -DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> -LLVM_TARGET[armv7-eabi] = "${RUST_TARGET_SYS}"
> -TARGET_ENDIAN[armv7-eabi] = "little"
> -TARGET_POINTER_WIDTH[armv7-eabi] = "32"
> -TARGET_C_INT_WIDTH[armv7-eabi] = "32"
> -MAX_ATOMIC_WIDTH[armv7-eabi] = "64"
> -FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2"
> +DATA_LAYOUT[armv7] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
> +LLVM_TARGET[armv7] = "${RUST_TARGET_SYS}"
> +TARGET_ENDIAN[armv7] = "little"
> +TARGET_POINTER_WIDTH[armv7] = "32"
> +TARGET_C_INT_WIDTH[armv7] = "32"
> +MAX_ATOMIC_WIDTH[armv7] = "64"
> +FEATURES[armv7] = "+v7,+vfp2,+thumb2"
>  
>  ## aarch64-unknown-linux-{gnu, musl}
>  DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
> -- 
> 2.25.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#163881): https://lists.openembedded.org/g/openembedded-core/message/163881
> Mute This Topic: https://lists.openembedded.org/mt/90172076/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Sundeep KOKKONDA April 4, 2022, 4:06 p.m. UTC | #3
Hello Alex,

Steps to reproduce:

* Set MACHINE ?= "qemuarm" in local.conf
* 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'
> 
> ERROR: Logfile of failure stored in:
> /ala-lpggp31/skokkonda/yocto/poky/build_arm/tmp/work/x86_64-nativesdk-pokysdk-linux/rust-cross-canadian-arm/1.59.0-r0/temp/log.do_rust_gen_targets.168831
> 
> ERROR: Task
> (/ala-lpggp31/skokkonda/yocto/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.59.0.bb:do_rust_gen_targets)
> failed with exit code '1'
> .
> 

I took local variables from rust_gen_target function for arm and aarch64 targets. Refer below, the tspec varibles for 'arm' generated with NoneType.

Locals at rust_gen_target for arm::
arch =  arm
rust_arch =  arm
arch_abi =  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

Locals at rust_gen_target  for aarch64::
arch =  aarch64
rust_arch =  aarch64
arch_abi =  aarch64
*tspec['data-layout'] =  aarch64-unknown-linux-gnu*
*Type of tspec['data-layout'] =  <class 'str'>*
tspec['data-layout'] =  e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128
Type of tspec['data-layout'] =  <class 'str'>
tspec['max-atomic-width'] =  128
Type of tspec['max-atomic-width'] =  <class 'int'>
tspec['target-pointer-width'] =  64
Type of tspec['target-pointer-width'] =  <class 'str'>
tspec['target-c-int-width'] =  32
Type of tspec['target-c-int-width'] =  <class 'str'>
tspec['target-endian'] =  little
Type of tspec['target-endian'] =  <class 'str'>
tspec['arch'] =  aarch64
Type of tspec['arch'] =  <class 'str'>

Reason for changing arm-eabi to arm:
I noticed that the previous change introduced this bug, so I reverted the arm-eabi to arm and the issue is fixed.

--
Thanks,
Sundeep K.
Alexander Kanavin April 4, 2022, 4:08 p.m. UTC | #4
Thanks for the explanations! Can you place this information into the
commit message?

Alex

On Mon, 4 Apr 2022 at 18:06, Sundeep KOKKONDA
<sundeep.kokkonda@gmail.com> wrote:
>
> Hello Alex,
>
> Steps to reproduce:
>
> Set MACHINE ?= "qemuarm" in local.conf
> 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'
>
> ERROR: Logfile of failure stored in: /ala-lpggp31/skokkonda/yocto/poky/build_arm/tmp/work/x86_64-nativesdk-pokysdk-linux/rust-cross-canadian-arm/1.59.0-r0/temp/log.do_rust_gen_targets.168831
> ERROR: Task (/ala-lpggp31/skokkonda/yocto/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.59.0.bb:do_rust_gen_targets) failed with exit code '1'
> .
>
> I took local variables from rust_gen_target function for arm and aarch64 targets. Refer below, the tspec varibles for 'arm' generated with NoneType.
>
> Locals at rust_gen_target for arm::
> arch =  arm
> rust_arch =  arm
> arch_abi =  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
>
> Locals at rust_gen_target  for aarch64::
> arch =  aarch64
> rust_arch =  aarch64
> arch_abi =  aarch64
> tspec['data-layout'] =  aarch64-unknown-linux-gnu
> Type of tspec['data-layout'] =  <class 'str'>
> tspec['data-layout'] =  e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128
> Type of tspec['data-layout'] =  <class 'str'>
> tspec['max-atomic-width'] =  128
> Type of tspec['max-atomic-width'] =  <class 'int'>
> tspec['target-pointer-width'] =  64
> Type of tspec['target-pointer-width'] =  <class 'str'>
> tspec['target-c-int-width'] =  32
> Type of tspec['target-c-int-width'] =  <class 'str'>
> tspec['target-endian'] =  little
> Type of tspec['target-endian'] =  <class 'str'>
> tspec['arch'] =  aarch64
> Type of tspec['arch'] =  <class 'str'>
>
> Reason for changing arm-eabi to arm:
> I noticed that the previous change introduced this bug, so I reverted the arm-eabi to arm and the issue is fixed.
>
>
> --
> Thanks,
> Sundeep K.
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#164003): https://lists.openembedded.org/g/openembedded-core/message/164003
> Mute This Topic: https://lists.openembedded.org/mt/90172076/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Sundeep KOKKONDA April 4, 2022, 4:21 p.m. UTC | #5
Hi Alex,

Commit message updated.


Thanks,
Sundeep K.

-----Original Message-----
From: Alexander Kanavin <alex.kanavin@gmail.com> 
Sent: Monday, April 4, 2022 9:38 PM
To: Sundeep KOKKONDA <sundeep.kokkonda@gmail.com>
Cc: OE-core <openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] meta: rust: Bug fix for target definitions returning 'NoneType'

Thanks for the explanations! Can you place this information into the commit message?

Alex

On Mon, 4 Apr 2022 at 18:06, Sundeep KOKKONDA <sundeep.kokkonda@gmail.com> wrote:
>
> Hello Alex,
>
> Steps to reproduce:
>
> Set MACHINE ?= "qemuarm" in local.conf 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'
>
> ERROR: Logfile of failure stored in: 
> /ala-lpggp31/skokkonda/yocto/poky/build_arm/tmp/work/x86_64-nativesdk-
> pokysdk-linux/rust-cross-canadian-arm/1.59.0-r0/temp/log.do_rust_gen_t
> argets.168831
> ERROR: Task (/ala-lpggp31/skokkonda/yocto/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.59.0.bb:do_rust_gen_targets) failed with exit code '1'
> .
>
> I took local variables from rust_gen_target function for arm and aarch64 targets. Refer below, the tspec varibles for 'arm' generated with NoneType.
>
> Locals at rust_gen_target for arm::
> arch =  arm
> rust_arch =  arm
> arch_abi =  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
>
> Locals at rust_gen_target  for aarch64::
> arch =  aarch64
> rust_arch =  aarch64
> arch_abi =  aarch64
> tspec['data-layout'] =  aarch64-unknown-linux-gnu Type of 
> tspec['data-layout'] =  <class 'str'> tspec['data-layout'] =  
> e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128
> Type of tspec['data-layout'] =  <class 'str'> 
> tspec['max-atomic-width'] =  128 Type of tspec['max-atomic-width'] =  
> <class 'int'> tspec['target-pointer-width'] =  64 Type of 
> tspec['target-pointer-width'] =  <class 'str'> 
> tspec['target-c-int-width'] =  32 Type of tspec['target-c-int-width'] 
> =  <class 'str'> tspec['target-endian'] =  little Type of 
> tspec['target-endian'] =  <class 'str'> tspec['arch'] =  aarch64 Type 
> of tspec['arch'] =  <class 'str'>
>
> Reason for changing arm-eabi to arm:
> I noticed that the previous change introduced this bug, so I reverted the arm-eabi to arm and the issue is fixed.
>
>
> --
> Thanks,
> Sundeep K.
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#164003): 
> https://lists.openembedded.org/g/openembedded-core/message/164003
> Mute This Topic: https://lists.openembedded.org/mt/90172076/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
> [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>

Patch

diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
index ceeee97863..6236c43d5c 100644
--- a/meta/recipes-devtools/rust/rust-common.inc
+++ b/meta/recipes-devtools/rust/rust-common.inc
@@ -119,22 +119,22 @@  def llvm_features(d):
 
 
 ## arm-unknown-linux-gnueabihf
-DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
-LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}"
-TARGET_ENDIAN[arm-eabi] = "little"
-TARGET_POINTER_WIDTH[arm-eabi] = "32"
-TARGET_C_INT_WIDTH[arm-eabi] = "32"
-MAX_ATOMIC_WIDTH[arm-eabi] = "64"
-FEATURES[arm-eabi] = "+v6,+vfp2"
+DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[arm] = "little"
+TARGET_POINTER_WIDTH[arm] = "32"
+TARGET_C_INT_WIDTH[arm] = "32"
+MAX_ATOMIC_WIDTH[arm] = "64"
+FEATURES[arm] = "+v6,+vfp2"
 
 ## armv7-unknown-linux-gnueabihf
-DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
-LLVM_TARGET[armv7-eabi] = "${RUST_TARGET_SYS}"
-TARGET_ENDIAN[armv7-eabi] = "little"
-TARGET_POINTER_WIDTH[armv7-eabi] = "32"
-TARGET_C_INT_WIDTH[armv7-eabi] = "32"
-MAX_ATOMIC_WIDTH[armv7-eabi] = "64"
-FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2"
+DATA_LAYOUT[armv7] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[armv7] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[armv7] = "little"
+TARGET_POINTER_WIDTH[armv7] = "32"
+TARGET_C_INT_WIDTH[armv7] = "32"
+MAX_ATOMIC_WIDTH[armv7] = "64"
+FEATURES[armv7] = "+v7,+vfp2,+thumb2"
 
 ## aarch64-unknown-linux-{gnu, musl}
 DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"