Hello,

This build is carrying both this patch and

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

which is now present in master.

Could you check:

https://autobuilder.yoctoproject.org/typhoon/#/builders/106/builds/3963/steps/11/logs/stdio

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-alt/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-alt/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'


I expect other similar failures in 
https://autobuilder.yoctoproject.org/typhoon/#/builders/83/builds/3478

On 05/04/2022 15:28:19+0530, Sundeep KOKKONDA wrote:
> relocate_sdk.py was developed for little-endian architures and when tries
> to install SDK for big-endian machines errors like below will be shown.
> Error: struct.error: unpack requires a string argument of length 32. SDK could
> not be set up. Relocate script failed. Abort!
> Error: IOError: [Errno 22] Invalid argument. SDK could not be set up. Relocate
> script failed. Abort!
> 
> To fix this, script is modified to support big-endian architecture.
> 
> Signed-off-by: Sundeep KOKKONDA <sundeep.kokko...@gmail.com>
> ---
>  scripts/relocate_sdk.py | 25 ++++++++++++++++---------
>  1 file changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py
> index 8c0fdb986a..4ed8bfc0d1 100755
> --- a/scripts/relocate_sdk.py
> +++ b/scripts/relocate_sdk.py
> @@ -30,9 +30,16 @@ else:
>  old_prefix = re.compile(b("##DEFAULT_INSTALL_DIR##"))
>  
>  def get_arch():
> +    global endian_prefix
>      f.seek(0)
>      e_ident =f.read(16)
> -    ei_mag0,ei_mag1_3,ei_class = struct.unpack("<B3sB11x", e_ident)
> +    ei_mag0,ei_mag1_3,ei_class,ei_data,ei_version = 
> struct.unpack("<B3sBBB9x", e_ident)
> +
> +    # ei_data = 1 for little-endian & 0 for big-endian
> +    if ei_data == 1:
> +        endian_prefix = '<'
> +    else:
> +        endian_prefix = '>'
>  
>      if (ei_mag0 != 0x7f and ei_mag1_3 != "ELF") or ei_class == 0:
>          return 0
> @@ -51,11 +58,11 @@ def parse_elf_header():
>  
>      if arch == 32:
>          # 32bit
> -        hdr_fmt = "<HHILLLIHHHHHH"
> +        hdr_fmt = endian_prefix + "HHILLLIHHHHHH"
>          hdr_size = 52
>      else:
>          # 64bit
> -        hdr_fmt = "<HHIQQQIHHHHHH"
> +        hdr_fmt = endian_prefix + "HHIQQQIHHHHHH"
>          hdr_size = 64
>  
>      e_type, e_machine, e_version, e_entry, e_phoff, e_shoff, e_flags,\
> @@ -64,9 +71,9 @@ def parse_elf_header():
>  
>  def change_interpreter(elf_file_name):
>      if arch == 32:
> -        ph_fmt = "<IIIIIIII"
> +        ph_fmt = endian_prefix + "IIIIIIII"
>      else:
> -        ph_fmt = "<IIQQQQQQ"
> +        ph_fmt = endian_prefix + "IIQQQQQQ"
>  
>      """ look for PT_INTERP section """
>      for i in range(0,e_phnum):
> @@ -105,17 +112,17 @@ def change_interpreter(elf_file_name):
>  
>  def change_dl_sysdirs(elf_file_name):
>      if arch == 32:
> -        sh_fmt = "<IIIIIIIIII"
> +        sh_fmt = endian_prefix + "IIIIIIIIII"
>      else:
> -        sh_fmt = "<IIQQQQIIQQ"
> +        sh_fmt = endian_prefix + "IIQQQQIIQQ"
>  
>      """ read section string table """
>      f.seek(e_shoff + e_shstrndx * e_shentsize)
>      sh_hdr = f.read(e_shentsize)
>      if arch == 32:
> -        sh_offset, sh_size = struct.unpack("<16xII16x", sh_hdr)
> +        sh_offset, sh_size = struct.unpack(endian_prefix + "16xII16x", 
> sh_hdr)
>      else:
> -        sh_offset, sh_size = struct.unpack("<24xQQ24x", sh_hdr)
> +        sh_offset, sh_size = struct.unpack(endian_prefix + "24xQQ24x", 
> sh_hdr)
>  
>      f.seek(sh_offset)
>      sh_strtab = f.read(sh_size)
> -- 
> 2.25.1
> 

> 
> 
> 


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#164017): 
https://lists.openembedded.org/g/openembedded-core/message/164017
Mute This Topic: https://lists.openembedded.org/mt/90261992/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to