All of lore.kernel.org
 help / color / mirror / Atom feed
* [v3] [RFC] Merge meta-rust to oe-core
@ 2021-08-11  0:22 Randy MacLeod
  2021-08-11 13:14 ` Randy MacLeod
  0 siblings, 1 reply; 23+ messages in thread
From: Randy MacLeod @ 2021-08-11  0:22 UTC (permalink / raw)
  To: Richard Purdie
  Cc: openembedded-core, steven, johan.anderholm, derek, Paul Barker,
	cardoe, dev, tylerwhall, Khem Raj, Vinay Kumar, Wold, Saul,
	Martin Jansa


I started working on the merge of meta-rust to oe-core again.

CCing widely at the beginning this time.
Please reply to me privately if you want to be dropped.

I really need other people to sign up as [co-]maintainers!

I pushed what I did today to:
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-10-2021-a

$ git log --stat below.

I've only started but so far, what I see is that, as expected, 
rust-hello-world works for
qemux86-64, qemuarm and likely other targets. I'm doing a buildall-qemu 
overnight.

The oe-selftests that we had problems with before are still a problem:

oe-selftest still has at least three tests failing:

1.
oe-selftest -r distrodata.Distrodata.test_maintainers
   This is due having two versions of cargo and rust.

   --> I'll remove 1.51 unless people object.

2.
oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs
oe-selftest -r sstatetests.SStateTests.test_sstate_sametune_samesigs

I've just started to look at these test failures.
$ bitbake-dump-sigs shows a diff like:

  List of dependencies for variable BASEDEPENDS is set()
  List of dependencies for variable BUILD_AR is {'BUILD_PREFIX'}
-List of dependencies for variable BUILD_AS is {'BUILD_PREFIX', 'BUILD_AS_ARCH'}
+List of dependencies for variable BUILD_AS is {'BUILD_AS_ARCH', 'BUILD_PREFIX'}
  List of dependencies for variable BUILD_AS_ARCH is set()
-List of dependencies for variable BUILD_CC is {'BUILD_PREFIX', 'BUILD_CC_ARCH'}
-List of dependencies for variable BUILD_CCLD is {'BUILD_PREFIX', 'BUILD_CC_ARCH'}
+List of dependencies for variable BUILD_CC is {'BUILD_CC_ARCH', 'BUILD_PREFIX'}
+List of dependencies for variable BUILD_CCLD is {'BUILD_CC_ARCH', 'BUILD_PREFIX'}
  List of dependencies for variable BUILD_CC_ARCH is set()

Tips welcome!
  

Btw, I know that the rust community is working on reproducibility:
    https://github.com/rust-lang/rust/labels/A-reproducibility
This diffsigs problem may be related but I haven't looked at the issue long enough yet to tell.


4.
I'll run a test on the autobuilder to see if the debian build from Feb is still a problem:
   rust-native doesn't build on debian8:
https://autobuilder.yoctoproject.org/typhoon/#/builders/116/builds/40/steps/13/logs/stdio


I'll run buildall-qemu rust-hello-world overnight.

Thanks,

../Randy


$ git log --stat origin/master..HEAD
commit 725c11999a38244cc28e1d1fe17a7e05c5bdb7a3
Author: Randy MacLeod <randy.macleod@windriver.com>
Date:   Wed Feb 24 20:48:23 2021

     maintainers: Add myself as maintainer for rust pkgs
     
     I'm willing to do the rust package maintenance but
     if anyone else wants to sign up, that would be welcome.
     
     Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>

  meta/conf/distro/include/maintainers.inc | 10 ++++++++++
  1 file changed, 10 insertions(+)

commit a658c5c7fac6160f7720bbf30ae35ccc143fcb57
Author: Randy MacLeod <randy.macleod@windriver.com>
Date:   Wed Feb 24 20:48:22 2021

     cargo/rust/rustfmt: exclude from world
     
     cargo, rust, and rustfmt can't be built for the targets yet
     so exclude them from world builds.
     
     Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>

  meta/recipes-devtools/cargo/cargo.inc         | 1 +
  meta/recipes-example/rustfmt/rustfmt_1.4.2.bb | 2 +-
  2 files changed, 2 insertions(+), 1 deletion(-)

commit 8860562733d7cce3cede27fc611f984a2d9351d6
Author: Randy MacLeod <randy.macleod@windriver.com>
Date:   Wed Feb 24 20:48:20 2021

     rust: update the README to conform to being in oe-core
     
     Provide the full link to the meta-rust issue since
     the README is no longer part of meta-rust.
     
     Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>

  meta/recipes-devtools/rust/README-rust.md | 25 +++++++------------------
  1 file changed, 7 insertions(+), 18 deletions(-)

commit 7398219dcfffe746038d36bbbaacbd52265a3fc7
Author: Randy MacLeod <randy.macleod@windriver.com>
Date:   Wed Feb 24 20:48:18 2021

     rust: mv README.md to recipes-devtools/rust/README-rust.md
     
     Import the meta-rust/README.md but relocate and rename it.
     
     Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>

  meta/recipes-devtools/rust/README-rust.md | 69 +++++++++++++++++++++++++++++++
  1 file changed, 69 insertions(+)

commit 80586a849e1c725310f58ed9705febf97bc00bda
Author: Randy MacLeod <Randy.MacLeod@windriver.com>
Date:   Tue Aug 10 13:52:19 2021

     rust: initial merge of most of meta-rust
     
     In the meta-rust repo at commit:
        448047c Upgrade to 1.54.0 (#359)
     
     Make the required directories:
       mkdir ../oe-core/meta/recipes-devtools/rust
       mkdir ../oe-core/meta/recipes-devtools/cargo
       mkdir ../oe-core/meta/recipes-example
     and then:
       cp recipes-devtools/rust/* ../oe-core/meta/recipes-devtools/rust
       cp recipes-devtools/cargo/* ../oe-core/meta/recipes-devtools/cargo
       cp lib/crate.py ../oe-core/meta/lib
       cp recipes-example/* ../oe-core/meta/recipes-example
       cp conf/distro/include/rust_* ../oe-core/meta/conf/distro/include/
       cp classes/* ../oe-core/meta/classes/
       cp recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb ../oe-core/meta/recipes-core/packagegroups
     
     Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>

  meta/classes/cargo.bbclass                         |  89 ++
  meta/classes/cargo_common.bbclass                  | 129 +++
  meta/classes/crate-fetch.bbclass                   |  13 +
  meta/classes/rust-bin.bbclass                      | 149 ++++
  meta/classes/rust-common.bbclass                   | 174 ++++
  meta/classes/rust.bbclass                          |  45 +
  meta/conf/distro/include/rust_security_flags.inc   |   7 +
  meta/conf/distro/include/rust_versions.inc         |  13 +
  meta/lib/crate.py                                  | 149 ++++
  .../packagegroup-rust-cross-canadian.bb            |  18 +
  .../cargo/cargo-1.51.0/0001-Disable-http2.patch    |  28 +
  .../cargo/cargo-1.51.0/riscv-march.patch           |  73 ++
  .../cargo/cargo-1.51.0/rv64gc.patch                |  37 +
  .../cargo/cargo-cross-canadian.inc                 |  74 ++
  .../cargo/cargo-cross-canadian_1.51.0.bb           |   6 +
  .../cargo/cargo-cross-canadian_1.54.0.bb           |   6 +
  meta/recipes-devtools/cargo/cargo.inc              |  50 ++
  meta/recipes-devtools/cargo/cargo_1.51.0.bb        |   8 +
  meta/recipes-devtools/cargo/cargo_1.54.0.bb        |   4 +
  meta/recipes-devtools/rust/files/riscv-march.patch |  73 ++
  meta/recipes-devtools/rust/files/rv64gc.patch      |  37 +
  ...001-Add-base-definitions-for-riscv64-musl.patch | 904 ++++++++++++++++++++
  ...-linux-musl-mod.rs-add-riscv64-to-b64-set.patch |  29 +
  ...3-FIXUP-Correct-definitions-to-match-musl.patch | 740 +++++++++++++++++
  ...pdate-1.51.0-checksums-for-modified-files.patch |  21 +
  .../0004-Update-checksums-for-modified-files.patch |  21 +
  ...-definitions-for-riscv64-musl-libc-0.2.93.patch | 905 +++++++++++++++++++++
  ...-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch |  31 +
  ...ect-definitions-to-match-musl-libc-0.2.93.patch | 741 +++++++++++++++++
  ...ksums-for-modified-files-for-rust-1.54.0-.patch |  23 +
  meta/recipes-devtools/rust/libstd-rs.inc           |  40 +
  meta/recipes-devtools/rust/libstd-rs_1.51.0.bb     |  12 +
  meta/recipes-devtools/rust/libstd-rs_1.54.0.bb     |  11 +
  meta/recipes-devtools/rust/rust-common.inc         | 346 ++++++++
  .../rust/rust-cross-canadian-common.inc            |  53 ++
  meta/recipes-devtools/rust/rust-cross-canadian.inc |  78 ++
  .../rust/rust-cross-canadian_1.51.0.bb             |   6 +
  .../rust/rust-cross-canadian_1.54.0.bb             |   6 +
  meta/recipes-devtools/rust/rust-cross.inc          |  71 ++
  meta/recipes-devtools/rust/rust-cross_1.51.0.bb    |   2 +
  meta/recipes-devtools/rust/rust-cross_1.54.0.bb    |   2 +
  meta/recipes-devtools/rust/rust-llvm.inc           |  63 ++
  .../rust-llvm/0001-nfc-Fix-missing-include.patch   |  26 +
  .../0002-llvm-allow-env-override-of-exe-path.patch |  32 +
  meta/recipes-devtools/rust/rust-llvm_1.51.0.bb     |   7 +
  meta/recipes-devtools/rust/rust-llvm_1.54.0.bb     |   5 +
  .../recipes-devtools/rust/rust-snapshot-1.51.0.inc |  18 +
  .../recipes-devtools/rust/rust-snapshot-1.54.0.inc |  18 +
  meta/recipes-devtools/rust/rust-snapshot.inc       |   9 +
  meta/recipes-devtools/rust/rust-source-1.51.0.inc  |   3 +
  meta/recipes-devtools/rust/rust-source-1.54.0.inc  |   3 +
  meta/recipes-devtools/rust/rust-source.inc         |   3 +
  meta/recipes-devtools/rust/rust-target.inc         |  10 +
  .../rust/rust-tools-cross-canadian.inc             |  38 +
  .../rust/rust-tools-cross-canadian_1.51.0.bb       |   6 +
  .../rust/rust-tools-cross-canadian_1.54.0.bb       |   6 +
  meta/recipes-devtools/rust/rust.inc                | 193 +++++
  ...t-Fix-dash-vs-underscore-mismatches-in-op.patch |  75 ++
  meta/recipes-devtools/rust/rust_1.51.0.bb          |  16 +
  meta/recipes-devtools/rust/rust_1.54.0.bb          |  11 +
  .../rust-hello-world/0001-enable-LTO.patch         |  23 +
  .../rust-hello-world/rust-hello-world_git.bb       |  17 +
  meta/recipes-example/rustfmt/rustfmt_1.4.2.bb      | 171 ++++
  63 files changed, 5977 insertions(+)



-- 
# Randy MacLeod
# Wind River Linux


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [v3] [RFC] Merge meta-rust to oe-core
  2021-08-11  0:22 [v3] [RFC] Merge meta-rust to oe-core Randy MacLeod
@ 2021-08-11 13:14 ` Randy MacLeod
  2021-08-11 15:18   ` Randy MacLeod
  2021-08-13 15:19   ` [OE-core] [v4] " Vinay Kumar
  0 siblings, 2 replies; 23+ messages in thread
From: Randy MacLeod @ 2021-08-11 13:14 UTC (permalink / raw)
  To: Richard Purdie
  Cc: openembedded-core, steven, johan.anderholm, derek, cardoe, dev,
	tylerwhall, Khem Raj, Vinay Kumar, Wold, Saul, Martin Jansa,
	paul

On 2021-08-10 8:22 p.m., Randy MacLeod wrote:
> 
> I started working on the merge of meta-rust to oe-core again.
> 
> CCing widely at the beginning this time.
> Please reply to me privately if you want to be dropped.
> 
> I really need other people to sign up as [co-]maintainers!
> 
> I pushed what I did today to:
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-10-2021-a 
> 
> 
> $ git log --stat below.
> 
> I've only started but so far, what I see is that, as expected, 
> rust-hello-world works for
> qemux86-64, qemuarm and likely other targets. I'm doing a buildall-qemu 
> overnight.
> 
> The oe-selftests that we had problems with before are still a problem:
> 
> oe-selftest still has at least three tests failing:
> 
> 1.
> oe-selftest -r distrodata.Distrodata.test_maintainers
>    This is due having two versions of cargo and rust.
> 
>    --> I'll remove 1.51 unless people object.
> 
> 2.
> oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs
> oe-selftest -r sstatetests.SStateTests.test_sstate_sametune_samesigs
> 
> I've just started to look at these test failures.
> $ bitbake-dump-sigs shows a diff like:
> 
>   List of dependencies for variable BASEDEPENDS is set()
>   List of dependencies for variable BUILD_AR is {'BUILD_PREFIX'}
> -List of dependencies for variable BUILD_AS is {'BUILD_PREFIX', 
> 'BUILD_AS_ARCH'}
> +List of dependencies for variable BUILD_AS is {'BUILD_AS_ARCH', 
> 'BUILD_PREFIX'}
>   List of dependencies for variable BUILD_AS_ARCH is set()
> -List of dependencies for variable BUILD_CC is {'BUILD_PREFIX', 
> 'BUILD_CC_ARCH'}
> -List of dependencies for variable BUILD_CCLD is {'BUILD_PREFIX', 
> 'BUILD_CC_ARCH'}
> +List of dependencies for variable BUILD_CC is {'BUILD_CC_ARCH', 
> 'BUILD_PREFIX'}
> +List of dependencies for variable BUILD_CCLD is {'BUILD_CC_ARCH', 
> 'BUILD_PREFIX'}
>   List of dependencies for variable BUILD_CC_ARCH is set()
> 
> Tips welcome!
> 
> 
> Btw, I know that the rust community is working on reproducibility:
>     https://github.com/rust-lang/rust/labels/A-reproducibility
> This diffsigs problem may be related but I haven't looked at the issue 
> long enough yet to tell.
> 
> 
> 4.
> I'll run a test on the autobuilder to see if the debian build from Feb 
> is still a problem:
>    rust-native doesn't build on debian8:
> https://autobuilder.yoctoproject.org/typhoon/#/builders/116/builds/40/steps/13/logs/stdio 
> 
> 
> 
> I'll run buildall-qemu rust-hello-world overnight.

Results below.

Vinay or I will look into glibc/qemuppc64
if no one else is working on that.

The musl build failures are all alike with the error shown below.
Has anyone see that before?

../Randy


BUILDALL-QEMU LOG FOR rust-hello-world

START TIME: 2021-08-10_17:23:20

HOSTNAME: ala-lpggp3

HOST OS: Ubuntu 18.04.3 LTS

HOST KERNEL: 5.4.0-80-generic

===============

BUILD RESULTS:

[glibc]

PASS: qemuriscv32

PASS: qemuarmv5

PASS: qemumips

PASS: qemux86-64

PASS: qemuarm64

PASS: qemumips64

PASS: qemuarm

PASS: qemuppc

PASS: qemuriscv64

FAIL: qemuppc64

PASS: qemux86

[musl]

FAIL: qemuriscv32

FAIL: qemuarmv5

FAIL: qemumips

PASS: qemux86-64

PASS: qemuarm64

FAIL: qemumips64

FAIL: qemuarm

FAIL: qemuppc

FAIL: qemuriscv64

FAIL: qemuppc64

FAIL: qemux86

===============

PASSED: 12

FAILED: 10



---

Typical musl build failure log:

Sstate summary: Wanted 62 Local 0 Network 0 Missed 62 Current 142 (0% 
match, 69% complete) 


NOTE: Executing Tasks 
 


ERROR: rust-cross-arm-1.54.0-r0 do_prepare_recipe_sysroot: Error 
executing a python function in exec_python_func() autogenerated: 


 
 


The stack trace of python calls that resulted in this exception/failure 
was: 


File: 'exec_python_func() autogenerated', lineno: 2, function: <module> 
 


      0001: 
 


  *** 0002:extend_recipe_sysroot(d) 
 


      0003: 


File: 
'/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/classes/staging.bbclass', 
lineno: 582, function: extend_recipe_sysroot 


      0578:                    if "/bin/" in l or "/sbin/" in l: 


      0579:                        # defer /*bin/* files until last in 
case they need libs 


      0580:                        binfiles[l] = (targetdir, dest) 
 


      0581:                    else: 
 


  *** 0582:                        staging_copyfile(l, targetdir, dest, 
postinsts, seendirs) 


      0583: 


      0584:    # Handle deferred binfiles 
 


      0585:    for l in binfiles: 


      0586:        (targetdir, dest) = binfiles[l] 
 


File: 
'/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/classes/staging.bbclass', 
lineno: 149, function: staging_copyfile 


      0145:    if os.path.islink(c): 
 


      0146:        linkto = os.readlink(c) 
 


      0147:        if os.path.lexists(dest): 


      0148:            if not os.path.islink(dest): 
 


  *** 0149:                raise OSError(errno.EEXIST, "Link %s already 
exists as a file" % dest, dest) 


      0150:            if os.readlink(dest) == linkto: 
 


      0151:                return dest 
 


      0152:            raise OSError(errno.EEXIST, "Link %s already 
exists to a different location? (%s vs %s)" % (dest, os.readlink(dest), 
linkto), dest)

      0153:        os.symlink(linkto, dest) 
 


Exception: FileExistsError: [Errno 17] Link 
/ala-lpggp31/rmacleod/src/distro/yocto/b/rust-aug-10-master-redo-a/tmp/work/x86_64-linux/rust-cross-arm/1.54.0-r0/recipe-sysroot/usr/include/c++/11.2.0/arm-poky-linux'

 
 


ERROR: Logfile of failure stored in: 
/ala-lpggp31/rmacleod/src/distro/yocto/b/rust-aug-10-master-redo-a/tmp/work/x86_64-linux/rust-cross-arm/1.54.0-r0/temp/log.do_prepare_recipe_sysroot.73161 


ERROR: Task 
(/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_prepare_recipe_sysroot) 
failed with exit code '1'

NOTE: Tasks Summary: Attempted 755 tasks of which 645 didn't need to be 
rerun and 1 failed. 


 
 


Summary: 1 task failed: 
 


 
/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_prepare_recipe_sysroot 
 


Summary: There was 1 ERROR message shown, returning a non-zero exit 
code.

> 
> Thanks,
> 
> ../Randy
> 
> 
> $ git log --stat origin/master..HEAD
> commit 725c11999a38244cc28e1d1fe17a7e05c5bdb7a3
> Author: Randy MacLeod <randy.macleod@windriver.com>
> Date:   Wed Feb 24 20:48:23 2021
> 
>      maintainers: Add myself as maintainer for rust pkgs
>      I'm willing to do the rust package maintenance but
>      if anyone else wants to sign up, that would be welcome.
>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> 
>   meta/conf/distro/include/maintainers.inc | 10 ++++++++++
>   1 file changed, 10 insertions(+)
> 
> commit a658c5c7fac6160f7720bbf30ae35ccc143fcb57
> Author: Randy MacLeod <randy.macleod@windriver.com>
> Date:   Wed Feb 24 20:48:22 2021
> 
>      cargo/rust/rustfmt: exclude from world
>      cargo, rust, and rustfmt can't be built for the targets yet
>      so exclude them from world builds.
>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> 
>   meta/recipes-devtools/cargo/cargo.inc         | 1 +
>   meta/recipes-example/rustfmt/rustfmt_1.4.2.bb | 2 +-
>   2 files changed, 2 insertions(+), 1 deletion(-)
> 
> commit 8860562733d7cce3cede27fc611f984a2d9351d6
> Author: Randy MacLeod <randy.macleod@windriver.com>
> Date:   Wed Feb 24 20:48:20 2021
> 
>      rust: update the README to conform to being in oe-core
>      Provide the full link to the meta-rust issue since
>      the README is no longer part of meta-rust.
>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> 
>   meta/recipes-devtools/rust/README-rust.md | 25 +++++++------------------
>   1 file changed, 7 insertions(+), 18 deletions(-)
> 
> commit 7398219dcfffe746038d36bbbaacbd52265a3fc7
> Author: Randy MacLeod <randy.macleod@windriver.com>
> Date:   Wed Feb 24 20:48:18 2021
> 
>      rust: mv README.md to recipes-devtools/rust/README-rust.md
>      Import the meta-rust/README.md but relocate and rename it.
>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> 
>   meta/recipes-devtools/rust/README-rust.md | 69 
> +++++++++++++++++++++++++++++++
>   1 file changed, 69 insertions(+)
> 
> commit 80586a849e1c725310f58ed9705febf97bc00bda
> Author: Randy MacLeod <Randy.MacLeod@windriver.com>
> Date:   Tue Aug 10 13:52:19 2021
> 
>      rust: initial merge of most of meta-rust
>      In the meta-rust repo at commit:
>         448047c Upgrade to 1.54.0 (#359)
>      Make the required directories:
>        mkdir ../oe-core/meta/recipes-devtools/rust
>        mkdir ../oe-core/meta/recipes-devtools/cargo
>        mkdir ../oe-core/meta/recipes-example
>      and then:
>        cp recipes-devtools/rust/* ../oe-core/meta/recipes-devtools/rust
>        cp recipes-devtools/cargo/* ../oe-core/meta/recipes-devtools/cargo
>        cp lib/crate.py ../oe-core/meta/lib
>        cp recipes-example/* ../oe-core/meta/recipes-example
>        cp conf/distro/include/rust_* ../oe-core/meta/conf/distro/include/
>        cp classes/* ../oe-core/meta/classes/
>        cp recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb 
> ../oe-core/meta/recipes-core/packagegroups
>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> 
>   meta/classes/cargo.bbclass                         |  89 ++
>   meta/classes/cargo_common.bbclass                  | 129 +++
>   meta/classes/crate-fetch.bbclass                   |  13 +
>   meta/classes/rust-bin.bbclass                      | 149 ++++
>   meta/classes/rust-common.bbclass                   | 174 ++++
>   meta/classes/rust.bbclass                          |  45 +
>   meta/conf/distro/include/rust_security_flags.inc   |   7 +
>   meta/conf/distro/include/rust_versions.inc         |  13 +
>   meta/lib/crate.py                                  | 149 ++++
>   .../packagegroup-rust-cross-canadian.bb            |  18 +
>   .../cargo/cargo-1.51.0/0001-Disable-http2.patch    |  28 +
>   .../cargo/cargo-1.51.0/riscv-march.patch           |  73 ++
>   .../cargo/cargo-1.51.0/rv64gc.patch                |  37 +
>   .../cargo/cargo-cross-canadian.inc                 |  74 ++
>   .../cargo/cargo-cross-canadian_1.51.0.bb           |   6 +
>   .../cargo/cargo-cross-canadian_1.54.0.bb           |   6 +
>   meta/recipes-devtools/cargo/cargo.inc              |  50 ++
>   meta/recipes-devtools/cargo/cargo_1.51.0.bb        |   8 +
>   meta/recipes-devtools/cargo/cargo_1.54.0.bb        |   4 +
>   meta/recipes-devtools/rust/files/riscv-march.patch |  73 ++
>   meta/recipes-devtools/rust/files/rv64gc.patch      |  37 +
>   ...001-Add-base-definitions-for-riscv64-musl.patch | 904 
> ++++++++++++++++++++
>   ...-linux-musl-mod.rs-add-riscv64-to-b64-set.patch |  29 +
>   ...3-FIXUP-Correct-definitions-to-match-musl.patch | 740 
> +++++++++++++++++
>   ...pdate-1.51.0-checksums-for-modified-files.patch |  21 +
>   .../0004-Update-checksums-for-modified-files.patch |  21 +
>   ...-definitions-for-riscv64-musl-libc-0.2.93.patch | 905 
> +++++++++++++++++++++
>   ...-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch |  31 +
>   ...ect-definitions-to-match-musl-libc-0.2.93.patch | 741 
> +++++++++++++++++
>   ...ksums-for-modified-files-for-rust-1.54.0-.patch |  23 +
>   meta/recipes-devtools/rust/libstd-rs.inc           |  40 +
>   meta/recipes-devtools/rust/libstd-rs_1.51.0.bb     |  12 +
>   meta/recipes-devtools/rust/libstd-rs_1.54.0.bb     |  11 +
>   meta/recipes-devtools/rust/rust-common.inc         | 346 ++++++++
>   .../rust/rust-cross-canadian-common.inc            |  53 ++
>   meta/recipes-devtools/rust/rust-cross-canadian.inc |  78 ++
>   .../rust/rust-cross-canadian_1.51.0.bb             |   6 +
>   .../rust/rust-cross-canadian_1.54.0.bb             |   6 +
>   meta/recipes-devtools/rust/rust-cross.inc          |  71 ++
>   meta/recipes-devtools/rust/rust-cross_1.51.0.bb    |   2 +
>   meta/recipes-devtools/rust/rust-cross_1.54.0.bb    |   2 +
>   meta/recipes-devtools/rust/rust-llvm.inc           |  63 ++
>   .../rust-llvm/0001-nfc-Fix-missing-include.patch   |  26 +
>   .../0002-llvm-allow-env-override-of-exe-path.patch |  32 +
>   meta/recipes-devtools/rust/rust-llvm_1.51.0.bb     |   7 +
>   meta/recipes-devtools/rust/rust-llvm_1.54.0.bb     |   5 +
>   .../recipes-devtools/rust/rust-snapshot-1.51.0.inc |  18 +
>   .../recipes-devtools/rust/rust-snapshot-1.54.0.inc |  18 +
>   meta/recipes-devtools/rust/rust-snapshot.inc       |   9 +
>   meta/recipes-devtools/rust/rust-source-1.51.0.inc  |   3 +
>   meta/recipes-devtools/rust/rust-source-1.54.0.inc  |   3 +
>   meta/recipes-devtools/rust/rust-source.inc         |   3 +
>   meta/recipes-devtools/rust/rust-target.inc         |  10 +
>   .../rust/rust-tools-cross-canadian.inc             |  38 +
>   .../rust/rust-tools-cross-canadian_1.51.0.bb       |   6 +
>   .../rust/rust-tools-cross-canadian_1.54.0.bb       |   6 +
>   meta/recipes-devtools/rust/rust.inc                | 193 +++++
>   ...t-Fix-dash-vs-underscore-mismatches-in-op.patch |  75 ++
>   meta/recipes-devtools/rust/rust_1.51.0.bb          |  16 +
>   meta/recipes-devtools/rust/rust_1.54.0.bb          |  11 +
>   .../rust-hello-world/0001-enable-LTO.patch         |  23 +
>   .../rust-hello-world/rust-hello-world_git.bb       |  17 +
>   meta/recipes-example/rustfmt/rustfmt_1.4.2.bb      | 171 ++++
>   63 files changed, 5977 insertions(+)
> 
> 
> 


-- 
# Randy MacLeod
# Wind River Linux

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [v3] [RFC] Merge meta-rust to oe-core
  2021-08-11 13:14 ` Randy MacLeod
@ 2021-08-11 15:18   ` Randy MacLeod
  2021-08-13 15:19   ` [OE-core] [v4] " Vinay Kumar
  1 sibling, 0 replies; 23+ messages in thread
From: Randy MacLeod @ 2021-08-11 15:18 UTC (permalink / raw)
  To: Richard Purdie
  Cc: openembedded-core, steven, johan.anderholm, derek, cardoe, dev,
	tylerwhall, Khem Raj, Vinay Kumar, Wold, Saul, Martin Jansa,
	paul

On 2021-08-11 9:14 a.m., Randy MacLeod wrote:
> On 2021-08-10 8:22 p.m., Randy MacLeod wrote:
>>
>> I started working on the merge of meta-rust to oe-core again.
>>
>> CCing widely at the beginning this time.
>> Please reply to me privately if you want to be dropped.
>>
>> I really need other people to sign up as [co-]maintainers!
>>
>> I pushed what I did today to:
>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-10-2021-a 
>>
>>
>> $ git log --stat below.
>>
>> I've only started but so far, what I see is that, as expected, 
>> rust-hello-world works for
>> qemux86-64, qemuarm and likely other targets. I'm doing a 
>> buildall-qemu overnight.
>>
>> The oe-selftests that we had problems with before are still a problem:
>>
>> oe-selftest still has at least three tests failing:
>>
>> 1.
>> oe-selftest -r distrodata.Distrodata.test_maintainers
>>    This is due having two versions of cargo and rust.
>>
>>    --> I'll remove 1.51 unless people object.
>>
>> 2.
>> oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs
>> oe-selftest -r sstatetests.SStateTests.test_sstate_sametune_samesigs
>>
>> I've just started to look at these test failures.
>> $ bitbake-dump-sigs shows a diff like:
>>
>>   List of dependencies for variable BASEDEPENDS is set()
>>   List of dependencies for variable BUILD_AR is {'BUILD_PREFIX'}
>> -List of dependencies for variable BUILD_AS is {'BUILD_PREFIX', 
>> 'BUILD_AS_ARCH'}
>> +List of dependencies for variable BUILD_AS is {'BUILD_AS_ARCH', 
>> 'BUILD_PREFIX'}
>>   List of dependencies for variable BUILD_AS_ARCH is set()
>> -List of dependencies for variable BUILD_CC is {'BUILD_PREFIX', 
>> 'BUILD_CC_ARCH'}
>> -List of dependencies for variable BUILD_CCLD is {'BUILD_PREFIX', 
>> 'BUILD_CC_ARCH'}
>> +List of dependencies for variable BUILD_CC is {'BUILD_CC_ARCH', 
>> 'BUILD_PREFIX'}
>> +List of dependencies for variable BUILD_CCLD is {'BUILD_CC_ARCH', 
>> 'BUILD_PREFIX'}
>>   List of dependencies for variable BUILD_CC_ARCH is set()
>>
>> Tips welcome!
>>
>>
>> Btw, I know that the rust community is working on reproducibility:
>>     https://github.com/rust-lang/rust/labels/A-reproducibility
>> This diffsigs problem may be related but I haven't looked at the 
>> issue long enough yet to tell.
>>
>>
>> 4.
>> I'll run a test on the autobuilder to see if the debian build from 
>> Feb is still a problem:
>>    rust-native doesn't build on debian8:
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/116/builds/40/steps/13/logs/stdio 
>>
>>
>>
>> I'll run buildall-qemu rust-hello-world overnight.
>
> Results below.
>
> Vinay or I will look into glibc/qemuppc64
> if no one else is working on that.
>
> The musl build failures are all alike with the error shown below.
> Has anyone see that before?
>
> ../Randy
>
>
> BUILDALL-QEMU LOG FOR rust-hello-world
>
> START TIME: 2021-08-10_17:23:20
>
> HOSTNAME: ala-lpggp3
>
> HOST OS: Ubuntu 18.04.3 LTS
>
> HOST KERNEL: 5.4.0-80-generic
>
> ===============
>
> BUILD RESULTS:
>
> [glibc]
>
> PASS: qemuriscv32
>
> PASS: qemuarmv5
>
> PASS: qemumips
>
> PASS: qemux86-64
>
> PASS: qemuarm64
>
> PASS: qemumips64
>
> PASS: qemuarm
>
> PASS: qemuppc
>
> PASS: qemuriscv64
>
> FAIL: qemuppc64
>
> PASS: qemux86
>
> [musl]
>
> FAIL: qemuriscv32
>
> FAIL: qemuarmv5
>
> FAIL: qemumips
>
> PASS: qemux86-64
>
> PASS: qemuarm64
>
> FAIL: qemumips64
>
> FAIL: qemuarm
>
> FAIL: qemuppc
>
> FAIL: qemuriscv64
>
> FAIL: qemuppc64
>
> FAIL: qemux86
>
> ===============
>
> PASSED: 12
>
> FAILED: 10


The musl failures seemed odd so I did a build without any
sstate-cache and indeed things are not as bad as last night's runs show.

I get the same results with a second run with the newly generated 
sstate-cache.

$ cat rust-hello-world-buildall.log
BUILDALL-QEMU LOG FOR rust-hello-world
START TIME: 2021-08-11_06:53:10
HOSTNAME: ala-lpggp3
HOST OS: Ubuntu 18.04.3 LTS
HOST KERNEL: 5.4.0-80-generic
===============
BUILD RESULTS:
[musl]
FAIL: qemuriscv32
PASS: qemuarmv5
PASS: qemumips
PASS: qemux86-64
PASS: qemuarm64
PASS: qemumips64
PASS: qemuarm
FAIL: qemuppc
PASS: qemuriscv64
FAIL: qemuppc64
PASS: qemux86
===============
PASSED: 8
FAILED: 3

../Randy


>
>
>
> ---
>
> Typical musl build failure log:
>
> Sstate summary: Wanted 62 Local 0 Network 0 Missed 62 Current 142 (0% 
> match, 69% complete)
>
> NOTE: Executing Tasks
>
>
> ERROR: rust-cross-arm-1.54.0-r0 do_prepare_recipe_sysroot: Error 
> executing a python function in exec_python_func() autogenerated:
>
>
>
>
>
> The stack trace of python calls that resulted in this 
> exception/failure was:
>
> File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
>
>
>      0001:
>
>
>  *** 0002:extend_recipe_sysroot(d)
>
>
>      0003:
>
> File: 
> '/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/classes/staging.bbclass', 
> lineno: 582, function: extend_recipe_sysroot
>
>      0578:                    if "/bin/" in l or "/sbin/" in l:
>
>      0579:                        # defer /*bin/* files until last in 
> case they need libs
>
>      0580:                        binfiles[l] = (targetdir, dest)
>
>
>      0581:                    else:
>
>
>  *** 0582:                        staging_copyfile(l, targetdir, dest, 
> postinsts, seendirs)
>
>      0583:
>
>      0584:    # Handle deferred binfiles
>
>
>      0585:    for l in binfiles:
>
>      0586:        (targetdir, dest) = binfiles[l]
>
>
> File: 
> '/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/classes/staging.bbclass', 
> lineno: 149, function: staging_copyfile
>
>      0145:    if os.path.islink(c):
>
>
>      0146:        linkto = os.readlink(c)
>
>
>      0147:        if os.path.lexists(dest):
>
>      0148:            if not os.path.islink(dest):
>
>
>  *** 0149:                raise OSError(errno.EEXIST, "Link %s already 
> exists as a file" % dest, dest)
>
>      0150:            if os.readlink(dest) == linkto:
>
>
>      0151:                return dest
>
>
>      0152:            raise OSError(errno.EEXIST, "Link %s already 
> exists to a different location? (%s vs %s)" % (dest, 
> os.readlink(dest), linkto), dest)
>
>      0153:        os.symlink(linkto, dest)
>
>
> Exception: FileExistsError: [Errno 17] Link 
> /ala-lpggp31/rmacleod/src/distro/yocto/b/rust-aug-10-master-redo-a/tmp/work/x86_64-linux/rust-cross-arm/1.54.0-r0/recipe-sysroot/usr/include/c++/11.2.0/arm-poky-linux'
>
>
>
>
>
> ERROR: Logfile of failure stored in: 
> /ala-lpggp31/rmacleod/src/distro/yocto/b/rust-aug-10-master-redo-a/tmp/work/x86_64-linux/rust-cross-arm/1.54.0-r0/temp/log.do_prepare_recipe_sysroot.73161 
>
>
> ERROR: Task 
> (/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_prepare_recipe_sysroot) 
> failed with exit code '1'
>
> NOTE: Tasks Summary: Attempted 755 tasks of which 645 didn't need to 
> be rerun and 1 failed.
>
>
>
>
>
> Summary: 1 task failed:
>
>
>
> /ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_prepare_recipe_sysroot 
>
>
>
> Summary: There was 1 ERROR message shown, returning a non-zero exit code.
>
>>
>> Thanks,
>>
>> ../Randy
>>
>>
>> $ git log --stat origin/master..HEAD
>> commit 725c11999a38244cc28e1d1fe17a7e05c5bdb7a3
>> Author: Randy MacLeod <randy.macleod@windriver.com>
>> Date:   Wed Feb 24 20:48:23 2021
>>
>>      maintainers: Add myself as maintainer for rust pkgs
>>      I'm willing to do the rust package maintenance but
>>      if anyone else wants to sign up, that would be welcome.
>>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
>>
>>   meta/conf/distro/include/maintainers.inc | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> commit a658c5c7fac6160f7720bbf30ae35ccc143fcb57
>> Author: Randy MacLeod <randy.macleod@windriver.com>
>> Date:   Wed Feb 24 20:48:22 2021
>>
>>      cargo/rust/rustfmt: exclude from world
>>      cargo, rust, and rustfmt can't be built for the targets yet
>>      so exclude them from world builds.
>>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
>>
>>   meta/recipes-devtools/cargo/cargo.inc         | 1 +
>>   meta/recipes-example/rustfmt/rustfmt_1.4.2.bb | 2 +-
>>   2 files changed, 2 insertions(+), 1 deletion(-)
>>
>> commit 8860562733d7cce3cede27fc611f984a2d9351d6
>> Author: Randy MacLeod <randy.macleod@windriver.com>
>> Date:   Wed Feb 24 20:48:20 2021
>>
>>      rust: update the README to conform to being in oe-core
>>      Provide the full link to the meta-rust issue since
>>      the README is no longer part of meta-rust.
>>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
>>
>>   meta/recipes-devtools/rust/README-rust.md | 25 
>> +++++++------------------
>>   1 file changed, 7 insertions(+), 18 deletions(-)
>>
>> commit 7398219dcfffe746038d36bbbaacbd52265a3fc7
>> Author: Randy MacLeod <randy.macleod@windriver.com>
>> Date:   Wed Feb 24 20:48:18 2021
>>
>>      rust: mv README.md to recipes-devtools/rust/README-rust.md
>>      Import the meta-rust/README.md but relocate and rename it.
>>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
>>
>>   meta/recipes-devtools/rust/README-rust.md | 69 
>> +++++++++++++++++++++++++++++++
>>   1 file changed, 69 insertions(+)
>>
>> commit 80586a849e1c725310f58ed9705febf97bc00bda
>> Author: Randy MacLeod <Randy.MacLeod@windriver.com>
>> Date:   Tue Aug 10 13:52:19 2021
>>
>>      rust: initial merge of most of meta-rust
>>      In the meta-rust repo at commit:
>>         448047c Upgrade to 1.54.0 (#359)
>>      Make the required directories:
>>        mkdir ../oe-core/meta/recipes-devtools/rust
>>        mkdir ../oe-core/meta/recipes-devtools/cargo
>>        mkdir ../oe-core/meta/recipes-example
>>      and then:
>>        cp recipes-devtools/rust/* ../oe-core/meta/recipes-devtools/rust
>>        cp recipes-devtools/cargo/* 
>> ../oe-core/meta/recipes-devtools/cargo
>>        cp lib/crate.py ../oe-core/meta/lib
>>        cp recipes-example/* ../oe-core/meta/recipes-example
>>        cp conf/distro/include/rust_* 
>> ../oe-core/meta/conf/distro/include/
>>        cp classes/* ../oe-core/meta/classes/
>>        cp 
>> recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb 
>> ../oe-core/meta/recipes-core/packagegroups
>>      Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
>>
>>   meta/classes/cargo.bbclass                         |  89 ++
>>   meta/classes/cargo_common.bbclass                  | 129 +++
>>   meta/classes/crate-fetch.bbclass                   |  13 +
>>   meta/classes/rust-bin.bbclass                      | 149 ++++
>>   meta/classes/rust-common.bbclass                   | 174 ++++
>>   meta/classes/rust.bbclass                          |  45 +
>>   meta/conf/distro/include/rust_security_flags.inc   |   7 +
>>   meta/conf/distro/include/rust_versions.inc         |  13 +
>>   meta/lib/crate.py                                  | 149 ++++
>>   .../packagegroup-rust-cross-canadian.bb            |  18 +
>>   .../cargo/cargo-1.51.0/0001-Disable-http2.patch    |  28 +
>>   .../cargo/cargo-1.51.0/riscv-march.patch           |  73 ++
>>   .../cargo/cargo-1.51.0/rv64gc.patch                |  37 +
>>   .../cargo/cargo-cross-canadian.inc                 |  74 ++
>>   .../cargo/cargo-cross-canadian_1.51.0.bb           |   6 +
>>   .../cargo/cargo-cross-canadian_1.54.0.bb           |   6 +
>>   meta/recipes-devtools/cargo/cargo.inc              |  50 ++
>>   meta/recipes-devtools/cargo/cargo_1.51.0.bb        |   8 +
>>   meta/recipes-devtools/cargo/cargo_1.54.0.bb        |   4 +
>>   meta/recipes-devtools/rust/files/riscv-march.patch |  73 ++
>>   meta/recipes-devtools/rust/files/rv64gc.patch      |  37 +
>>   ...001-Add-base-definitions-for-riscv64-musl.patch | 904 
>> ++++++++++++++++++++
>>   ...-linux-musl-mod.rs-add-riscv64-to-b64-set.patch |  29 +
>>   ...3-FIXUP-Correct-definitions-to-match-musl.patch | 740 
>> +++++++++++++++++
>>   ...pdate-1.51.0-checksums-for-modified-files.patch |  21 +
>>   .../0004-Update-checksums-for-modified-files.patch |  21 +
>>   ...-definitions-for-riscv64-musl-libc-0.2.93.patch | 905 
>> +++++++++++++++++++++
>>   ...-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch |  31 +
>>   ...ect-definitions-to-match-musl-libc-0.2.93.patch | 741 
>> +++++++++++++++++
>>   ...ksums-for-modified-files-for-rust-1.54.0-.patch |  23 +
>>   meta/recipes-devtools/rust/libstd-rs.inc           |  40 +
>>   meta/recipes-devtools/rust/libstd-rs_1.51.0.bb     |  12 +
>>   meta/recipes-devtools/rust/libstd-rs_1.54.0.bb     |  11 +
>>   meta/recipes-devtools/rust/rust-common.inc         | 346 ++++++++
>>   .../rust/rust-cross-canadian-common.inc            |  53 ++
>>   meta/recipes-devtools/rust/rust-cross-canadian.inc |  78 ++
>>   .../rust/rust-cross-canadian_1.51.0.bb             |   6 +
>>   .../rust/rust-cross-canadian_1.54.0.bb             |   6 +
>>   meta/recipes-devtools/rust/rust-cross.inc          |  71 ++
>>   meta/recipes-devtools/rust/rust-cross_1.51.0.bb    |   2 +
>>   meta/recipes-devtools/rust/rust-cross_1.54.0.bb    |   2 +
>>   meta/recipes-devtools/rust/rust-llvm.inc           |  63 ++
>>   .../rust-llvm/0001-nfc-Fix-missing-include.patch   |  26 +
>>   .../0002-llvm-allow-env-override-of-exe-path.patch |  32 +
>>   meta/recipes-devtools/rust/rust-llvm_1.51.0.bb     |   7 +
>>   meta/recipes-devtools/rust/rust-llvm_1.54.0.bb     |   5 +
>>   .../recipes-devtools/rust/rust-snapshot-1.51.0.inc |  18 +
>>   .../recipes-devtools/rust/rust-snapshot-1.54.0.inc |  18 +
>>   meta/recipes-devtools/rust/rust-snapshot.inc       |   9 +
>>   meta/recipes-devtools/rust/rust-source-1.51.0.inc  |   3 +
>>   meta/recipes-devtools/rust/rust-source-1.54.0.inc  |   3 +
>>   meta/recipes-devtools/rust/rust-source.inc         |   3 +
>>   meta/recipes-devtools/rust/rust-target.inc         |  10 +
>>   .../rust/rust-tools-cross-canadian.inc             |  38 +
>>   .../rust/rust-tools-cross-canadian_1.51.0.bb       |   6 +
>>   .../rust/rust-tools-cross-canadian_1.54.0.bb       |   6 +
>>   meta/recipes-devtools/rust/rust.inc                | 193 +++++
>>   ...t-Fix-dash-vs-underscore-mismatches-in-op.patch |  75 ++
>>   meta/recipes-devtools/rust/rust_1.51.0.bb          |  16 +
>>   meta/recipes-devtools/rust/rust_1.54.0.bb          |  11 +
>>   .../rust-hello-world/0001-enable-LTO.patch         |  23 +
>>   .../rust-hello-world/rust-hello-world_git.bb       |  17 +
>>   meta/recipes-example/rustfmt/rustfmt_1.4.2.bb      | 171 ++++
>>   63 files changed, 5977 insertions(+)
>>
>>
>>
>
>

-- 
# Randy MacLeod
# Wind River Linux


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [OE-core] [v4] [RFC] Merge meta-rust to oe-core
  2021-08-11 13:14 ` Randy MacLeod
  2021-08-11 15:18   ` Randy MacLeod
@ 2021-08-13 15:19   ` Vinay Kumar
  2021-08-13 15:22     ` Vinay Kumar
  1 sibling, 1 reply; 23+ messages in thread
From: Vinay Kumar @ 2021-08-13 15:19 UTC (permalink / raw)
  To: randy.macleod
  Cc: richard.purdie, openembedded-core, steven, johan.anderholm,
	derek, cardoe, dev, tylerwhall, raj.khem, vinay.kumar, saul.wold,
	martin.jansa, paul, Vinay Kumar

rust-common.inc: Fix build failure with qemuppc64.

The glibc build of "rust-hello-world" throws error in libstd-rs package.
error: unrecognized arch "powerpc64le" in target specification

The same got fixed by changing the arch to "powerpc64".

Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
---
 meta/recipes-devtools/rust/rust-common.inc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
index 350517c723..f574152815 100644
--- a/meta/recipes-devtools/rust/rust-common.inc
+++ b/meta/recipes-devtools/rust/rust-common.inc
@@ -248,6 +248,8 @@ def arch_to_rust_target_arch(arch):
         return "mips64"
     elif arch == "armv7":
         return "arm"
+    elif arch == "powerpc64le":
+        return "powerpc64"
     else:
         return arch
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core
  2021-08-13 15:19   ` [OE-core] [v4] " Vinay Kumar
@ 2021-08-13 15:22     ` Vinay Kumar
  2021-08-17 14:52       ` Randy MacLeod
       [not found]       ` <169C1FA457B99CA0.23238@lists.openembedded.org>
  0 siblings, 2 replies; 23+ messages in thread
From: Vinay Kumar @ 2021-08-13 15:22 UTC (permalink / raw)
  To: Randy MacLeod
  Cc: Richard Purdie, Patches and discussions about the oe-core layer,
	steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul

Hi Randy,

>> Vinay or I will look into glibc/qemuppc64
>> if no one else is working on that.

The failure is due to the below error in libstd-rs package build.
"error: unrecognized arch "powerpc64le" in target specification"

The reason for this is "arch": "powerpc64le" from the below target
specific file.

cat $b2/tmp/work/ppc64p9le-poky-linux/libstd-rs/1.54.0-r0/recipe-sysroot-native/usr/lib/rustlib/powerpc64le-poky-linux.json
{
    "llvm-target": "powerpc64le-unknown-linux-gnu",
    "data-layout": "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512",
    "max-atomic-width": 64,
    "target-pointer-width": "64",
    "target-c-int-width": "64",
    "target-endian": "little",
    "arch": "powerpc64le",
    "os": "linux",
    "env": "gnu",
    "vendor": "unknown",
    "target-family": "unix",
    "linker": "powerpc64le-poky-linux-gcc",
    "ar": "powerpc64le-poky-linux-ar",
    "cpu": "generic",
    "dynamic-linking": true,
    "executables": true,
    "linker-is-gnu": true,
    "linker-flavor": "gcc",
    "has-rpath": true,
    "has-elf-tls": true,
    "position-independent-executables": true,
    "panic-strategy": "unwind"
}

So the "arch" should be "powerpc64" in case of "powerpc64le" fixes the
librstd-rs build failure.

With the above fix,

$cat  rust-hello-world-buildall.log
BUILDALL-QEMU LOG FOR rust-hello-world
START TIME: 2021-08-13_03:11:23
HOSTNAME: ala-lpggp3
HOST OS: Ubuntu 18.04.3 LTS
HOST KERNEL: 5.4.0-80-generic
===============
BUILD RESULTS:
[glibc]
PASS: qemuriscv32
PASS: qemuarmv5
PASS: qemumips
PASS: qemux86-64
PASS: qemuarm64
PASS: qemumips64
PASS: qemuarm
PASS: qemuppc
PASS: qemuriscv64
PASS: qemuppc64
PASS: qemux86
[musl]
FAIL: qemuriscv32
FAIL: qemuarmv5
FAIL: qemumips
FAIL: qemux86-64
FAIL: qemuarm64
FAIL: qemumips64
FAIL: qemuarm
FAIL: qemuppc
FAIL: qemuriscv64
FAIL: qemuppc64
FAIL: qemux86
===============
PASSED: 11
FAILED: 11

Regards,
Vinay

On Fri, Aug 13, 2021 at 8:50 PM Vinay Kumar <vinay.m.engg@gmail.com> wrote:
>
> rust-common.inc: Fix build failure with qemuppc64.
>
> The glibc build of "rust-hello-world" throws error in libstd-rs package.
> error: unrecognized arch "powerpc64le" in target specification
>
> The same got fixed by changing the arch to "powerpc64".
>
> Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
> ---
>  meta/recipes-devtools/rust/rust-common.inc | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
> index 350517c723..f574152815 100644
> --- a/meta/recipes-devtools/rust/rust-common.inc
> +++ b/meta/recipes-devtools/rust/rust-common.inc
> @@ -248,6 +248,8 @@ def arch_to_rust_target_arch(arch):
>          return "mips64"
>      elif arch == "armv7":
>          return "arm"
> +    elif arch == "powerpc64le":
> +        return "powerpc64"
>      else:
>          return arch
>
> --
> 2.31.1
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core
  2021-08-13 15:22     ` Vinay Kumar
@ 2021-08-17 14:52       ` Randy MacLeod
       [not found]       ` <169C1FA457B99CA0.23238@lists.openembedded.org>
  1 sibling, 0 replies; 23+ messages in thread
From: Randy MacLeod @ 2021-08-17 14:52 UTC (permalink / raw)
  To: Vinay Kumar
  Cc: Richard Purdie, Patches and discussions about the oe-core layer,
	steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul

On 2021-08-13 11:22 a.m., Vinay Kumar wrote:
> Hi Randy,
> 
>>> Vinay or I will look into glibc/qemuppc64
>>> if no one else is working on that.
> 
> The failure is due to the below error in libstd-rs package build.
> "error: unrecognized arch "powerpc64le" in target specification"
> 
> The reason for this is "arch": "powerpc64le" from the below target
> specific file.
> 
> cat $b2/tmp/work/ppc64p9le-poky-linux/libstd-rs/1.54.0-r0/recipe-sysroot-native/usr/lib/rustlib/powerpc64le-poky-linux.json
> {
>      "llvm-target": "powerpc64le-unknown-linux-gnu",
>      "data-layout": "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512",
>      "max-atomic-width": 64,
>      "target-pointer-width": "64",
>      "target-c-int-width": "64",
>      "target-endian": "little",
>      "arch": "powerpc64le",
>      "os": "linux",
>      "env": "gnu",
>      "vendor": "unknown",
>      "target-family": "unix",
>      "linker": "powerpc64le-poky-linux-gcc",
>      "ar": "powerpc64le-poky-linux-ar",
>      "cpu": "generic",
>      "dynamic-linking": true,
>      "executables": true,
>      "linker-is-gnu": true,
>      "linker-flavor": "gcc",
>      "has-rpath": true,
>      "has-elf-tls": true,
>      "position-independent-executables": true,
>      "panic-strategy": "unwind"
> }
> 
> So the "arch" should be "powerpc64" in case of "powerpc64le" fixes the
> librstd-rs build failure.
> 
> With the above fix,
> 
> $cat  rust-hello-world-buildall.log
> BUILDALL-QEMU LOG FOR rust-hello-world
> START TIME: 2021-08-13_03:11:23
> HOSTNAME: ala-lpggp3
> HOST OS: Ubuntu 18.04.3 LTS
> HOST KERNEL: 5.4.0-80-generic
> ===============
> BUILD RESULTS:
> [glibc]
> PASS: qemuriscv32
> PASS: qemuarmv5
> PASS: qemumips
> PASS: qemux86-64
> PASS: qemuarm64
> PASS: qemumips64
> PASS: qemuarm
> PASS: qemuppc
> PASS: qemuriscv64
> PASS: qemuppc64
> PASS: qemux86
> [musl]
> FAIL: qemuriscv32
> FAIL: qemuarmv5
> FAIL: qemumips
> FAIL: qemux86-64
> FAIL: qemuarm64
> FAIL: qemumips64
> FAIL: qemuarm
> FAIL: qemuppc
> FAIL: qemuriscv64
> FAIL: qemuppc64
> FAIL: qemux86
> ===============
> PASSED: 11
> FAILED: 11
> 
> Regards,
> Vinay

Thanks Vinay, applied.

I'll push a new branch to poky-contrib later today.

../Randy
> 
> On Fri, Aug 13, 2021 at 8:50 PM Vinay Kumar <vinay.m.engg@gmail.com> wrote:
>>
>> rust-common.inc: Fix build failure with qemuppc64.
>>
>> The glibc build of "rust-hello-world" throws error in libstd-rs package.
>> error: unrecognized arch "powerpc64le" in target specification
>>
>> The same got fixed by changing the arch to "powerpc64".
>>
>> Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
>> ---
>>   meta/recipes-devtools/rust/rust-common.inc | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
>> index 350517c723..f574152815 100644
>> --- a/meta/recipes-devtools/rust/rust-common.inc
>> +++ b/meta/recipes-devtools/rust/rust-common.inc
>> @@ -248,6 +248,8 @@ def arch_to_rust_target_arch(arch):
>>           return "mips64"
>>       elif arch == "armv7":
>>           return "arm"
>> +    elif arch == "powerpc64le":
>> +        return "powerpc64"
>>       else:
>>           return arch
>>
>> --
>> 2.31.1
>>


-- 
# Randy MacLeod
# Wind River Linux

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]       ` <169C1FA457B99CA0.23238@lists.openembedded.org>
@ 2021-08-20 10:06         ` Randy MacLeod
  2021-08-21  2:48           ` Randy MacLeod
       [not found]           ` <169D3274AAECC435.19323@lists.openembedded.org>
  0 siblings, 2 replies; 23+ messages in thread
From: Randy MacLeod @ 2021-08-20 10:06 UTC (permalink / raw)
  To: Vinay Kumar
  Cc: Richard Purdie, Patches and discussions about the oe-core layer,
	steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski

[-- Attachment #1: Type: text/plain, Size: 6472 bytes --]

Added Trevor who may be working on upgrading python-cryptography.
Added Anatol since he was interested last time we worked on merging.

Again, let me know if you want to be dropped by replying privately.
No one from the meta-rust community responded last time so I'm
assuming that y'all are just on vacation! ;-)

On 2021-08-17 10:52 a.m., Randy MacLeod wrote:
> On 2021-08-13 11:22 a.m., Vinay Kumar wrote:
>> Hi Randy,
>>
>>>> Vinay or I will look into glibc/qemuppc64
>>>> if no one else is working on that.
>>
>> The failure is due to the below error in libstd-rs package build.
>> "error: unrecognized arch "powerpc64le" in target specification"
>>
>> The reason for this is "arch": "powerpc64le" from the below target
>> specific file.
>>

,,,

> 
> Thanks Vinay, applied.
> 
> I'll push a new branch to poky-contrib later today.


I fixed and worked-around a few issues and pushed a new branch:

 
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a

1. There are only a few new commits including Vinay's:

    757da4cbf1e rust: remove Rust version 1.51.0 toolchain

    a4808f787ca cargo_common: remove http_proxy

    b6941135c00 rust-common.inc: Fix build failure with qemuppc64.


If anyone wants to help by doing test builds, trying to generate and use

and SDK with rust in it or anything else, that'd be great.



Alex also ran a test build on the Autobuilder:

    https://autobuilder.yoctoproject.org/typhoon/#/builders/83/builds/2439



but I have yet to look at the failed stages in the run.


Testing logs and debugging notes below for those interested.

../Randy



The test:
    oe-selftest -r distrodata.Distrodata.test_maintainers


is fixed by creating maintainer records for all rusty packages
and by removing the older version of the rust toolchain:
    757da4cbf1e rust: remove Rust version 1.51.0 toolchain



I suppose that if the meta-rust users want to keep an older TC
it can live in meta-rust.

Then, these tests:

    oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs

    oe-selftest -r sstatetests.SStateTests.test_sstate_sametune_samesigs


were failing. One issue was fixed by the work-around of:

    a4808f787ca cargo_common: remove http_proxy


Debugging the next step was a challenge since I hadn't worked
with diffsigs before. Then to simplify, I removed all rusty .bb package
    ( by mv foo.bb foo.bb.hide)
until I was down to the first recipe in the dependency tree:

    rust-llvm-native.

and then running:
   oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs \
                  sstatetests.SStateTests.test_sstate_sametune_samesigs \



2021-08-19 17:54:12,878 - oe-selftest - INFO
- Ran 2 tests in 142.010s

- OK

- RESULTS:

- RESULTS - sstatetests.SStateTests.test_sstate_noop_samesigs:
       PASSED (41.45s)

- RESULTS - sstatetests.SStateTests.test_sstate_sametune_samesigs:
       PASSED (98.89s)

- SUMMARY:

- oe-selftest () - Ran 2 tests in 142.012s

- oe-selftest - OK - All required tests passed
     (successes=2, skipped=0, failures=0, errors=0)


adding the next self consistent group of package:
    cargo/cargo-cross-canadian_1.54.0.bb

    cargo/cargo_1.54.0.bb

    rust/libstd-rs_1.54.0.bb

    rust/rust-cross-canadian_1.54.0.bb

    rust/rust-cross_1.54.0.bb

    rust/rust-tools-cross-canadian_1.54.0.bb

    rust/rust_1.54.0.bb



I see another http_proxy failure that seems to require a feature
drop in cargo:
 
https://github.com/rust-lang/cargo/blob/master/src/cargo/ops/registry.rs#L524

Patching out a feature doesn't seem like a good idea but
maybe someone else has a better one?

To see if there were other problems lurking menacingly behind the proxy
error, I disabled the http_proxy test in:
	meta/lib/oeqa/selftest/cases/sstatetests.py


    -http_proxy = "http://example.com/"

    +http_proxy = ""


and ran again to find:

- RESULTS - sstatetests.SStateTests.test_sstate_noop_samesigs:
       PASSED (50.63s)
- RESULTS - sstatetests.SStateTests.test_sstate_sametune_samesigs:
       FAILED (160.05s)

so that's somewhat encouraging but there is still the error:

      File ".../meta/lib/oeqa/selftest/cases/sstatetests.py", line 449,
    in test_sstate_sametune_samesigs

      self.assertCountEqual(files1, files2)

AssertionError: Element counts were not equal:

First has 1, Second has 0:
'/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/\
tmp-sstatesamehash/stamps/x86_64-linux/\
lib32-rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.\
fc54579cc139c777172242c3da3e0'


First has 1, Second has 0:
'/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/\
tmp-sstatesamehash/stamps/x86_64-linux/\
lib32-rust-cross-i686/1.54.0-r0.do_compile.sigdata.\
86cb5a1346b0615cb21fab3c0110cc964ecced'


... lots of similar lines of diffsig info ...


Hacking the test to not clean up and
running bitbake-dumpsigs on the two sig files for the first error,
I get the two files attached. I also attached the
    tmp/log/oe-selftest-results.log file.

That's it for now.


../Randy


> 
> ../Randy
>>
>> On Fri, Aug 13, 2021 at 8:50 PM Vinay Kumar <vinay.m.engg@gmail.com> 
>> wrote:
>>>
>>> rust-common.inc: Fix build failure with qemuppc64.
>>>
>>> The glibc build of "rust-hello-world" throws error in libstd-rs package.
>>> error: unrecognized arch "powerpc64le" in target specification
>>>
>>> The same got fixed by changing the arch to "powerpc64".
>>>
>>> Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
>>> ---
>>>   meta/recipes-devtools/rust/rust-common.inc | 2 ++
>>>   1 file changed, 2 insertions(+)
>>>
>>> diff --git a/meta/recipes-devtools/rust/rust-common.inc 
>>> b/meta/recipes-devtools/rust/rust-common.inc
>>> index 350517c723..f574152815 100644
>>> --- a/meta/recipes-devtools/rust/rust-common.inc
>>> +++ b/meta/recipes-devtools/rust/rust-common.inc
>>> @@ -248,6 +248,8 @@ def arch_to_rust_target_arch(arch):
>>>           return "mips64"
>>>       elif arch == "armv7":
>>>           return "arm"
>>> +    elif arch == "powerpc64le":
>>> +        return "powerpc64"
>>>       else:
>>>           return arch
>>>
>>> -- 
>>> 2.31.1
>>>
> 
> 
> 
> 
> 
> 


-- 
# Randy MacLeod
# Wind River Linux

[-- Attachment #2: lib32-rust-cross-i686--targets.sigdata.1 --]
[-- Type: text/plain, Size: 13581 bytes --]

basewhitelist: {'SDKPKGSUFFIX', 'PWD', 'SSTATE_HASHEQUIV_METHOD', 'BUILD_ARCH', 'DEPLOY_DIR', 'HOME', 'CCACHE', 'OMP_NUM_THREADS', 'USER', 'PSEUDO_IGNORE_PATHS', 'STAMPCLEAN', 'ERROR_QA', 'PRSERV_HOST', 'PRSERV_DUMPFILE', 'PATH', 'COREBASE', 'SOURCE_DATE_EPOCH', 'CCACHE_NOHASHDIR', 'SSTATE_HASHEQUIV_REPORT_TASKDATA', 'SHELL', 'BBPATH', 'SSTATE_PKGARCH', 'LOGNAME', 'SSTATE_HASHEQUIV_OWNER', 'BB_UNIHASH', 'DL_DIR', 'BBSERVER', 'EXTERNAL_TOOLCHAIN', 'BB_LIMITEDDEPS', 'PRSERV_LOCKDOWN', 'CCACHE_DIR', 'STAGING_DIR_HOST', 'LICENSE_PATH', 'SSTATE_DIR', 'FILE_DIRNAME', 'WORKDIR', 'FILESEXTRAPATHS', 'CCACHE_TOP_DIR', 'PARALLEL_MAKE', 'PKGDATA_DIR', 'PRSERV_DUMPDIR', 'FILESPATH', 'BB_HASHSERVE', 'WARN_QA', 'extend_recipe_sysroot', 'STAMPS_DIR', 'STAGING_DIR_TARGET', 'THISDIR', 'BUILDHISTORY_DIR', 'BB_TASKHASH', 'GIT_CEILING_DIRECTORIES', 'TMPDIR', 'FILE', 'BB_WORKERCONTEXT'}
taskwhitelist: None
Task dependencies: ['ARM_THUMB_OPT', 'DEFAULTTUNE', 'MACHINE', 'MACHINEOVERRIDES', 'PACKAGE_ARCH', 'RUST_PANIC_STRATEGY', 'TARGET_ARCH', 'TARGET_CC_ARCH', 'TARGET_FPU', 'TARGET_LLVM_CPU', 'TARGET_LLVM_FEATURES', 'TRANSLATED_TARGET_ARCH', 'TUNE_ARCH', 'TUNE_CCARGS', 'TUNE_FEATURES', 'TUNE_FEATURES:tune-x86', 'X86ARCH32', 'X86ARCH64', 'arch_to_rust_target_arch', 'llvm_cpu', 'llvm_features', 'llvm_features_from_cc_arch', 'llvm_features_from_target_fpu', 'llvm_features_from_tune', 'prefix_for', 'rust_gen_target', 'sys_for', 'target_is_armv7']
basehash: 886c98d08c2f41e80188ac33198a0b4f6c42e3a1694b78fdfc35e6bdfc5c6214
List of dependencies for variable ARM_THUMB_OPT is set()
List of dependencies for variable DEFAULTTUNE is set()
List of dependencies for variable MACHINE is set()
List of dependencies for variable MACHINEOVERRIDES is {'MACHINE'}
List of dependencies for variable PACKAGE_ARCH is set()
List of dependencies for variable RUST_PANIC_STRATEGY is set()
List of dependencies for variable TARGET_ARCH is {'TUNE_ARCH'}
List of dependencies for variable TARGET_CC_ARCH is {'TUNE_CCARGS'}
List of dependencies for variable TARGET_FPU is set()
List of dependencies for variable TARGET_LLVM_CPU is {'llvm_cpu'}
List of dependencies for variable TARGET_LLVM_FEATURES is {'llvm_features'}
List of dependencies for variable TRANSLATED_TARGET_ARCH is {'TARGET_ARCH'}
List of dependencies for variable TUNE_ARCH is {'X86ARCH64', 'X86ARCH32'}
List of dependencies for variable TUNE_CCARGS is set()
List of dependencies for variable TUNE_FEATURES is {'DEFAULTTUNE', 'TUNE_FEATURES:tune-x86'}
List of dependencies for variable TUNE_FEATURES:tune-x86 is set()
List of dependencies for variable X86ARCH32 is set()
List of dependencies for variable X86ARCH64 is set()
List of dependencies for variable arch_to_rust_target_arch is set()
List of dependencies for variable llvm_cpu is {'PACKAGE_ARCH', 'TUNE_FEATURES', 'TRANSLATED_TARGET_ARCH'}
List of dependencies for variable llvm_features is {'llvm_features_from_tune', 'llvm_features_from_target_fpu', 'llvm_features_from_cc_arch'}
List of dependencies for variable llvm_features_from_cc_arch is {'TARGET_CC_ARCH'}
List of dependencies for variable llvm_features_from_target_fpu is {'TARGET_FPU'}
List of dependencies for variable llvm_features_from_tune is {'ARM_THUMB_OPT', 'target_is_armv7', 'TUNE_FEATURES', 'MACHINEOVERRIDES'}
List of dependencies for variable prefix_for is set()
List of dependencies for variable rust_gen_target is {'RUST_PANIC_STRATEGY', 'sys_for', 'prefix_for', 'arch_to_rust_target_arch'}
List of dependencies for variable sys_for is set()
List of dependencies for variable target_is_armv7 is {'TARGET_ARCH', 'TUNE_FEATURES', 'MACHINEOVERRIDES'}
Variable do_rust_gen_targets value is     wd = d.getVar('WORKDIR') + '/targets/'
    # It is important 'TARGET' is last here so that it overrides our less
    # informed choices for BUILD & HOST if TARGET happens to be the same as
    # either of them.
    for thing in ['BUILD', 'HOST', 'TARGET']:
        bb.debug(1, "rust_gen_target for " + thing)
        features = ""
        cpu = "generic"
        arch = d.getVar('{}_ARCH'.format(thing))
        if thing is "TARGET":
            # arm and armv7 have different targets in llvm
            if arch == "arm" and target_is_armv7(d):
                arch = 'armv7'
            features = d.getVar('TARGET_LLVM_FEATURES') or ""
            cpu = d.getVar('TARGET_LLVM_CPU')
        rust_gen_target(d, thing, wd, features, cpu, arch)

Variable ARM_THUMB_OPT value is None
Variable DEFAULTTUNE value is x86
Variable MACHINE value is qemux86
Variable MACHINEOVERRIDES value is ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemuall:${MACHINE}
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{mx32} = Unset
Variable PACKAGE_ARCH value is ${BUILD_ARCH}
Variable RUST_PANIC_STRATEGY value is unwind
Variable TARGET_ARCH value is ${TUNE_ARCH}
Variable TARGET_CC_ARCH value is ${TUNE_CCARGS} --sysroot=${STAGING_DIR_TARGET}
Variable TARGET_FPU value is 
Variable TARGET_LLVM_CPU value is ${@llvm_cpu(d)}
Variable TARGET_LLVM_FEATURES value is ${@llvm_features(d)}
Variable TRANSLATED_TARGET_ARCH value is ${@d.getVar('TARGET_ARCH').replace("_", "-")}
Variable TUNE_ARCH value is ${@bb.utils.contains('TUNE_FEATURES', 'm32', '${X86ARCH32}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'mx32', '${X86ARCH64}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm64', '${X86ARCH64}', '', d)}
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{m64} = Unset
TUNE_FEATURES{mx32} = Unset
Variable TUNE_CCARGS value is  -m32
Variable TUNE_FEATURES value is ${TUNE_FEATURES:tune-${DEFAULTTUNE}}
Variable TUNE_FEATURES:tune-x86 value is m32
Variable X86ARCH32 value is i686
Variable X86ARCH64 value is x86_64
Variable arch_to_rust_target_arch value is def arch_to_rust_target_arch(arch):
    if arch == "i586" or arch == "i686":
        return "x86"
    elif arch == "mipsel":
        return "mips"
    elif arch == "mip64sel":
        return "mips64"
    elif arch == "armv7":
        return "arm"
    elif arch == "powerpc64le":
        return "powerpc64"
    else:
        return arch

# generates our target CPU value
Variable llvm_cpu value is def llvm_cpu(d):
    cpu = d.getVar('PACKAGE_ARCH')
    target = d.getVar('TRANSLATED_TARGET_ARCH')

    trans = {}
    trans['corei7-64'] = "corei7"
    trans['core2-32'] = "core2"
    trans['x86-64'] = "x86-64"
    trans['i686'] = "i686"
    trans['i586'] = "i586"
    trans['powerpc'] = "powerpc"
    trans['mips64'] = "mips64"
    trans['mips64el'] = "mips64"
    trans['riscv64'] = "generic-rv64"
    trans['riscv32'] = "generic-rv32"

    if target in ["mips", "mipsel"]:
        feat = frozenset(d.getVar('TUNE_FEATURES').split())
        if "mips32r2" in feat:
            trans['mipsel'] = "mips32r2"
            trans['mips'] = "mips32r2"
        elif "mips32" in feat:
            trans['mipsel'] = "mips32"
            trans['mips'] = "mips32"

    try:
        return trans[cpu]
    except:
        return trans.get(target, "generic")

Variable llvm_features value is def llvm_features(d):
    return ','.join(llvm_features_from_tune(d) +
                    llvm_features_from_cc_arch(d) +
                    llvm_features_from_target_fpu(d))


## arm-unknown-linux-gnueabihf
Variable llvm_features_from_cc_arch value is def llvm_features_from_cc_arch(d):
    f = []
    feat = d.getVar('TARGET_CC_ARCH')
    if not feat:
        return []
    feat = frozenset(feat.split())

    if '-mmmx' in feat:
        f.append("+mmx")
    if '-msse' in feat:
        f.append("+sse")
    if '-msse2' in feat:
        f.append("+sse2")
    if '-msse3' in feat:
        f.append("+sse3")
    if '-mssse3' in feat:
        f.append("+ssse3")
    if '-msse4.1' in feat:
        f.append("+sse4.1")
    if '-msse4.2' in feat:
        f.append("+sse4.2")
    if '-msse4a' in feat:
        f.append("+sse4a")
    if '-mavx' in feat:
        f.append("+avx")
    if '-mavx2' in feat:
        f.append("+avx2")

    return f

Variable llvm_features_from_target_fpu value is def llvm_features_from_target_fpu(d):
    # TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
    # ABI. There is no option for hard.

    fpu = d.getVar('TARGET_FPU', True)
    return ["+soft-float"] if fpu == "soft" else []

Variable llvm_features_from_tune value is def llvm_features_from_tune(d):
    f = []
    feat = d.getVar('TUNE_FEATURES')
    if not feat:
        return []
    feat = frozenset(feat.split())

    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    if 'vfpv4' in feat:
        f.append("+vfp4")
    if 'vfpv3' in feat:
        f.append("+vfp3")
    if 'vfpv3d16' in feat:
        f.append("+d16")

    if 'vfpv2' in feat or 'vfp' in feat:
        f.append("+vfp2")

    if 'neon' in feat:
        f.append("+neon")

    if 'mips32' in feat:
        f.append("+mips32")

    if 'mips32r2' in feat:
        f.append("+mips32r2")

    if target_is_armv7(d):
        f.append('+v7')

    if ('armv6' in mach_overrides) or ('armv6' in feat):
        f.append("+v6")
    if 'armv5te' in feat:
        f.append("+strict-align")
        f.append("+v5te")
    elif 'armv5' in feat:
        f.append("+strict-align")
        f.append("+v5")

    if ('armv4' in mach_overrides) or ('armv4' in feat):
        f.append("+strict-align")

    if 'dsp' in feat:
        f.append("+dsp")

    if 'thumb' in feat:
        if d.getVar('ARM_THUMB_OPT') == "thumb":
            if target_is_armv7(d):
                f.append('+thumb2')
            f.append("+thumb-mode")

    if 'cortexa5' in feat:
        f.append("+a5")
    if 'cortexa7' in feat:
        f.append("+a7")
    if 'cortexa9' in feat:
        f.append("+a9")
    if 'cortexa15' in feat:
        f.append("+a15")
    if 'cortexa17' in feat:
        f.append("+a17")
    if ('riscv64' in feat) or ('riscv32' in feat):
        f.append("+a,+c,+d,+f,+m")
    return f

# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
Variable prefix_for value is def prefix_for(d, thing):
    return d.getVar('{}_PREFIX'.format(thing))

# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
Variable rust_gen_target value is def rust_gen_target(d, thing, wd, features, cpu, arch):
    import json
    sys = sys_for(d, thing)
    prefix = prefix_for(d, thing)

    features = features or d.getVarFlag('FEATURES', arch) or ""
    features = features.strip()

    # build tspec
    tspec = {}
    tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
    tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
    tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch))
    tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
    tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
    tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
    tspec['arch'] = arch_to_rust_target_arch(arch)
    tspec['os'] = "linux"
    if "musl" in tspec['llvm-target']:
        tspec['env'] = "musl"
    else:
        tspec['env'] = "gnu"
    if "riscv64" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "lp64d"
    if "riscv32" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "ilp32d"
    tspec['vendor'] = "unknown"
    tspec['target-family'] = "unix"
    tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
    tspec['ar'] = "{}ar".format(prefix)
    tspec['cpu'] = cpu
    if features != "":
        tspec['features'] = features
    tspec['dynamic-linking'] = True
    tspec['executables'] = True
    tspec['linker-is-gnu'] = True
    tspec['linker-flavor'] = "gcc"
    tspec['has-rpath'] = True
    tspec['has-elf-tls'] = True
    tspec['position-independent-executables'] = True
    tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")

    # write out the target spec json file
    with open(wd + sys + '.json', 'w') as f:
        json.dump(tspec, f, indent=4)

Variable sys_for value is def sys_for(d, thing):
    return d.getVar('{}_SYS'.format(thing))

Variable target_is_armv7 value is def target_is_armv7(d):
    '''Determine if target is armv7'''
    # TUNE_FEATURES may include arm* even if the target is not arm
    # in the case of *-native packages
    if d.getVar('TARGET_ARCH') != 'arm':
        return False

    feat = d.getVar('TUNE_FEATURES')
    feat = frozenset(feat.split())
    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
    if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
        return False
    else:
        return True

# Responsible for taking Yocto triples and converting it to Rust triples
Tasks this task depends on: ['virtual:multilib:lib32:/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch']
This task depends on the checksums of files: []
Hash for dependent task virtual:multilib:lib32:/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch is 4652ea318cee215a87d8b925b337051f7c70cd4ee6e85d84922925efc979dfa4
Computed base hash is 886c98d08c2f41e80188ac33198a0b4f6c42e3a1694b78fdfc35e6bdfc5c6214 and from file 886c98d08c2f41e80188ac33198a0b4f6c42e3a1694b78fdfc35e6bdfc5c6214
Computed task hash is fc54579cc139c777172242c3da3e095f4308c5ce606b2365a5b86c4371ee4f86

[-- Attachment #3: lib32-rust-cross-i686--targets.sigdata.2 --]
[-- Type: text/plain, Size: 13593 bytes --]

basewhitelist: {'BB_TASKHASH', 'LICENSE_PATH', 'HOME', 'PKGDATA_DIR', 'PSEUDO_IGNORE_PATHS', 'SSTATE_HASHEQUIV_METHOD', 'CCACHE_DIR', 'FILESPATH', 'STAMPCLEAN', 'BB_LIMITEDDEPS', 'FILE', 'STAGING_DIR_HOST', 'TMPDIR', 'FILE_DIRNAME', 'SSTATE_HASHEQUIV_OWNER', 'WORKDIR', 'BBPATH', 'PRSERV_HOST', 'THISDIR', 'DEPLOY_DIR', 'STAMPS_DIR', 'OMP_NUM_THREADS', 'CCACHE_TOP_DIR', 'PRSERV_DUMPDIR', 'LOGNAME', 'GIT_CEILING_DIRECTORIES', 'COREBASE', 'PRSERV_DUMPFILE', 'STAGING_DIR_TARGET', 'BB_WORKERCONTEXT', 'BUILDHISTORY_DIR', 'BUILD_ARCH', 'SSTATE_DIR', 'PARALLEL_MAKE', 'BBSERVER', 'PATH', 'PRSERV_LOCKDOWN', 'FILESEXTRAPATHS', 'CCACHE_NOHASHDIR', 'SHELL', 'WARN_QA', 'SSTATE_HASHEQUIV_REPORT_TASKDATA', 'SDKPKGSUFFIX', 'USER', 'SOURCE_DATE_EPOCH', 'extend_recipe_sysroot', 'EXTERNAL_TOOLCHAIN', 'BB_HASHSERVE', 'CCACHE', 'ERROR_QA', 'BB_UNIHASH', 'SSTATE_PKGARCH', 'PWD', 'DL_DIR'}
taskwhitelist: None
Task dependencies: ['ARM_THUMB_OPT', 'DEFAULTTUNE', 'MACHINE', 'MACHINEOVERRIDES', 'PACKAGE_ARCH', 'RUST_PANIC_STRATEGY', 'TARGET_ARCH', 'TARGET_CC_ARCH', 'TARGET_FPU', 'TARGET_LLVM_CPU', 'TARGET_LLVM_FEATURES', 'TRANSLATED_TARGET_ARCH', 'TUNE_ARCH', 'TUNE_CCARGS', 'TUNE_FEATURES', 'TUNE_FEATURES:tune-x86', 'X86ARCH32', 'X86ARCH64', 'arch_to_rust_target_arch', 'llvm_cpu', 'llvm_features', 'llvm_features_from_cc_arch', 'llvm_features_from_target_fpu', 'llvm_features_from_tune', 'prefix_for', 'rust_gen_target', 'sys_for', 'target_is_armv7']
basehash: a6d3d19d11840aa1a5950cf2bd7a8f6dd249f95f40fd9e56fa77f337e43ae42e
List of dependencies for variable ARM_THUMB_OPT is set()
List of dependencies for variable DEFAULTTUNE is set()
List of dependencies for variable MACHINE is set()
List of dependencies for variable MACHINEOVERRIDES is {'MACHINE'}
List of dependencies for variable PACKAGE_ARCH is set()
List of dependencies for variable RUST_PANIC_STRATEGY is set()
List of dependencies for variable TARGET_ARCH is {'TUNE_ARCH'}
List of dependencies for variable TARGET_CC_ARCH is {'TUNE_CCARGS'}
List of dependencies for variable TARGET_FPU is set()
List of dependencies for variable TARGET_LLVM_CPU is {'llvm_cpu'}
List of dependencies for variable TARGET_LLVM_FEATURES is {'llvm_features'}
List of dependencies for variable TRANSLATED_TARGET_ARCH is {'TARGET_ARCH'}
List of dependencies for variable TUNE_ARCH is {'X86ARCH64', 'X86ARCH32'}
List of dependencies for variable TUNE_CCARGS is set()
List of dependencies for variable TUNE_FEATURES is {'DEFAULTTUNE', 'TUNE_FEATURES:tune-x86'}
List of dependencies for variable TUNE_FEATURES:tune-x86 is set()
List of dependencies for variable X86ARCH32 is set()
List of dependencies for variable X86ARCH64 is set()
List of dependencies for variable arch_to_rust_target_arch is set()
List of dependencies for variable llvm_cpu is {'TRANSLATED_TARGET_ARCH', 'TUNE_FEATURES', 'PACKAGE_ARCH'}
List of dependencies for variable llvm_features is {'llvm_features_from_cc_arch', 'llvm_features_from_tune', 'llvm_features_from_target_fpu'}
List of dependencies for variable llvm_features_from_cc_arch is {'TARGET_CC_ARCH'}
List of dependencies for variable llvm_features_from_target_fpu is {'TARGET_FPU'}
List of dependencies for variable llvm_features_from_tune is {'MACHINEOVERRIDES', 'TUNE_FEATURES', 'target_is_armv7', 'ARM_THUMB_OPT'}
List of dependencies for variable prefix_for is set()
List of dependencies for variable rust_gen_target is {'RUST_PANIC_STRATEGY', 'sys_for', 'prefix_for', 'arch_to_rust_target_arch'}
List of dependencies for variable sys_for is set()
List of dependencies for variable target_is_armv7 is {'MACHINEOVERRIDES', 'TUNE_FEATURES', 'TARGET_ARCH'}
Variable do_rust_gen_targets value is     wd = d.getVar('WORKDIR') + '/targets/'
    # It is important 'TARGET' is last here so that it overrides our less
    # informed choices for BUILD & HOST if TARGET happens to be the same as
    # either of them.
    for thing in ['BUILD', 'HOST', 'TARGET']:
        bb.debug(1, "rust_gen_target for " + thing)
        features = ""
        cpu = "generic"
        arch = d.getVar('{}_ARCH'.format(thing))
        if thing is "TARGET":
            # arm and armv7 have different targets in llvm
            if arch == "arm" and target_is_armv7(d):
                arch = 'armv7'
            features = d.getVar('TARGET_LLVM_FEATURES') or ""
            cpu = d.getVar('TARGET_LLVM_CPU')
        rust_gen_target(d, thing, wd, features, cpu, arch)

Variable ARM_THUMB_OPT value is None
Variable DEFAULTTUNE value is x86
Variable MACHINE value is qemux86copy
Variable MACHINEOVERRIDES value is ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemuall:${MACHINE}:qemux86
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{mx32} = Unset
Variable PACKAGE_ARCH value is ${BUILD_ARCH}
Variable RUST_PANIC_STRATEGY value is unwind
Variable TARGET_ARCH value is ${TUNE_ARCH}
Variable TARGET_CC_ARCH value is ${TUNE_CCARGS} --sysroot=${STAGING_DIR_TARGET}
Variable TARGET_FPU value is 
Variable TARGET_LLVM_CPU value is ${@llvm_cpu(d)}
Variable TARGET_LLVM_FEATURES value is ${@llvm_features(d)}
Variable TRANSLATED_TARGET_ARCH value is ${@d.getVar('TARGET_ARCH').replace("_", "-")}
Variable TUNE_ARCH value is ${@bb.utils.contains('TUNE_FEATURES', 'm32', '${X86ARCH32}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'mx32', '${X86ARCH64}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm64', '${X86ARCH64}', '', d)}
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{m64} = Unset
TUNE_FEATURES{mx32} = Unset
Variable TUNE_CCARGS value is  -m32
Variable TUNE_FEATURES value is ${TUNE_FEATURES:tune-${DEFAULTTUNE}}
Variable TUNE_FEATURES:tune-x86 value is m32
Variable X86ARCH32 value is i686
Variable X86ARCH64 value is x86_64
Variable arch_to_rust_target_arch value is def arch_to_rust_target_arch(arch):
    if arch == "i586" or arch == "i686":
        return "x86"
    elif arch == "mipsel":
        return "mips"
    elif arch == "mip64sel":
        return "mips64"
    elif arch == "armv7":
        return "arm"
    elif arch == "powerpc64le":
        return "powerpc64"
    else:
        return arch

# generates our target CPU value
Variable llvm_cpu value is def llvm_cpu(d):
    cpu = d.getVar('PACKAGE_ARCH')
    target = d.getVar('TRANSLATED_TARGET_ARCH')

    trans = {}
    trans['corei7-64'] = "corei7"
    trans['core2-32'] = "core2"
    trans['x86-64'] = "x86-64"
    trans['i686'] = "i686"
    trans['i586'] = "i586"
    trans['powerpc'] = "powerpc"
    trans['mips64'] = "mips64"
    trans['mips64el'] = "mips64"
    trans['riscv64'] = "generic-rv64"
    trans['riscv32'] = "generic-rv32"

    if target in ["mips", "mipsel"]:
        feat = frozenset(d.getVar('TUNE_FEATURES').split())
        if "mips32r2" in feat:
            trans['mipsel'] = "mips32r2"
            trans['mips'] = "mips32r2"
        elif "mips32" in feat:
            trans['mipsel'] = "mips32"
            trans['mips'] = "mips32"

    try:
        return trans[cpu]
    except:
        return trans.get(target, "generic")

Variable llvm_features value is def llvm_features(d):
    return ','.join(llvm_features_from_tune(d) +
                    llvm_features_from_cc_arch(d) +
                    llvm_features_from_target_fpu(d))


## arm-unknown-linux-gnueabihf
Variable llvm_features_from_cc_arch value is def llvm_features_from_cc_arch(d):
    f = []
    feat = d.getVar('TARGET_CC_ARCH')
    if not feat:
        return []
    feat = frozenset(feat.split())

    if '-mmmx' in feat:
        f.append("+mmx")
    if '-msse' in feat:
        f.append("+sse")
    if '-msse2' in feat:
        f.append("+sse2")
    if '-msse3' in feat:
        f.append("+sse3")
    if '-mssse3' in feat:
        f.append("+ssse3")
    if '-msse4.1' in feat:
        f.append("+sse4.1")
    if '-msse4.2' in feat:
        f.append("+sse4.2")
    if '-msse4a' in feat:
        f.append("+sse4a")
    if '-mavx' in feat:
        f.append("+avx")
    if '-mavx2' in feat:
        f.append("+avx2")

    return f

Variable llvm_features_from_target_fpu value is def llvm_features_from_target_fpu(d):
    # TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
    # ABI. There is no option for hard.

    fpu = d.getVar('TARGET_FPU', True)
    return ["+soft-float"] if fpu == "soft" else []

Variable llvm_features_from_tune value is def llvm_features_from_tune(d):
    f = []
    feat = d.getVar('TUNE_FEATURES')
    if not feat:
        return []
    feat = frozenset(feat.split())

    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    if 'vfpv4' in feat:
        f.append("+vfp4")
    if 'vfpv3' in feat:
        f.append("+vfp3")
    if 'vfpv3d16' in feat:
        f.append("+d16")

    if 'vfpv2' in feat or 'vfp' in feat:
        f.append("+vfp2")

    if 'neon' in feat:
        f.append("+neon")

    if 'mips32' in feat:
        f.append("+mips32")

    if 'mips32r2' in feat:
        f.append("+mips32r2")

    if target_is_armv7(d):
        f.append('+v7')

    if ('armv6' in mach_overrides) or ('armv6' in feat):
        f.append("+v6")
    if 'armv5te' in feat:
        f.append("+strict-align")
        f.append("+v5te")
    elif 'armv5' in feat:
        f.append("+strict-align")
        f.append("+v5")

    if ('armv4' in mach_overrides) or ('armv4' in feat):
        f.append("+strict-align")

    if 'dsp' in feat:
        f.append("+dsp")

    if 'thumb' in feat:
        if d.getVar('ARM_THUMB_OPT') == "thumb":
            if target_is_armv7(d):
                f.append('+thumb2')
            f.append("+thumb-mode")

    if 'cortexa5' in feat:
        f.append("+a5")
    if 'cortexa7' in feat:
        f.append("+a7")
    if 'cortexa9' in feat:
        f.append("+a9")
    if 'cortexa15' in feat:
        f.append("+a15")
    if 'cortexa17' in feat:
        f.append("+a17")
    if ('riscv64' in feat) or ('riscv32' in feat):
        f.append("+a,+c,+d,+f,+m")
    return f

# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
Variable prefix_for value is def prefix_for(d, thing):
    return d.getVar('{}_PREFIX'.format(thing))

# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
Variable rust_gen_target value is def rust_gen_target(d, thing, wd, features, cpu, arch):
    import json
    sys = sys_for(d, thing)
    prefix = prefix_for(d, thing)

    features = features or d.getVarFlag('FEATURES', arch) or ""
    features = features.strip()

    # build tspec
    tspec = {}
    tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
    tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
    tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch))
    tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
    tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
    tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
    tspec['arch'] = arch_to_rust_target_arch(arch)
    tspec['os'] = "linux"
    if "musl" in tspec['llvm-target']:
        tspec['env'] = "musl"
    else:
        tspec['env'] = "gnu"
    if "riscv64" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "lp64d"
    if "riscv32" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "ilp32d"
    tspec['vendor'] = "unknown"
    tspec['target-family'] = "unix"
    tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
    tspec['ar'] = "{}ar".format(prefix)
    tspec['cpu'] = cpu
    if features != "":
        tspec['features'] = features
    tspec['dynamic-linking'] = True
    tspec['executables'] = True
    tspec['linker-is-gnu'] = True
    tspec['linker-flavor'] = "gcc"
    tspec['has-rpath'] = True
    tspec['has-elf-tls'] = True
    tspec['position-independent-executables'] = True
    tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")

    # write out the target spec json file
    with open(wd + sys + '.json', 'w') as f:
        json.dump(tspec, f, indent=4)

Variable sys_for value is def sys_for(d, thing):
    return d.getVar('{}_SYS'.format(thing))

Variable target_is_armv7 value is def target_is_armv7(d):
    '''Determine if target is armv7'''
    # TUNE_FEATURES may include arm* even if the target is not arm
    # in the case of *-native packages
    if d.getVar('TARGET_ARCH') != 'arm':
        return False

    feat = d.getVar('TUNE_FEATURES')
    feat = frozenset(feat.split())
    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
    if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
        return False
    else:
        return True

# Responsible for taking Yocto triples and converting it to Rust triples
Tasks this task depends on: ['virtual:multilib:lib32:/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch']
This task depends on the checksums of files: []
Hash for dependent task virtual:multilib:lib32:/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch is 4652ea318cee215a87d8b925b337051f7c70cd4ee6e85d84922925efc979dfa4
Computed base hash is a6d3d19d11840aa1a5950cf2bd7a8f6dd249f95f40fd9e56fa77f337e43ae42e and from file a6d3d19d11840aa1a5950cf2bd7a8f6dd249f95f40fd9e56fa77f337e43ae42e
Computed task hash is 8ed5b5d7c9a60b44b5097425b26ce5557ec3420cb761c9295c56307d5ddaec22

[-- Attachment #4: oe-selftest-results.log --]
[-- Type: text/x-log, Size: 45317 bytes --]

2021-08-19 19:14:18,686 - oe-selftest - INFO - Adding layer libraries:
2021-08-19 19:14:18,686 - oe-selftest - INFO - 	/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/lib
2021-08-19 19:14:18,687 - oe-selftest - INFO - 	/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta-yocto-bsp/lib
2021-08-19 19:14:18,687 - oe-selftest - INFO - 	/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta-selftest/lib
2021-08-19 19:14:18,688 - oe-selftest - INFO - Running bitbake -e to test the configuration is valid/parsable
2021-08-19 19:14:22,626 - oe-selftest - INFO - Adding: "include selftest.inc" in /ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/conf/local.conf
2021-08-19 19:14:22,627 - oe-selftest - INFO - Adding: "include bblayers.inc" in bblayers.conf
2021-08-19 19:14:22,628 - oe-selftest - INFO - test_sstate_noop_samesigs (sstatetests.SStateTests)
2021-08-19 19:15:13,256 - oe-selftest - INFO -  ... ok
2021-08-19 19:15:13,257 - oe-selftest - INFO - test_sstate_sametune_samesigs (sstatetests.SStateTests)
2021-08-19 19:17:53,301 - oe-selftest - INFO -  ... FAIL
2021-08-19 19:17:53,303 - oe-selftest - INFO - Traceback (most recent call last):
  File "/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/lib/oeqa/selftest/cases/sstatetests.py", line 449, in test_sstate_sametune_samesigs
    self.assertCountEqual(files1, files2)
AssertionError: Element counts were not equal:
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.fc54579cc139c777172242c3da3e095f4308c5ce606b2365a5b86c4371ee4f86'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_compile.sigdata.86cb5a1346b0615cb21fab3c0110cc964eccedbb94b2ccf99546dfd456897cca'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_install.sigdata.a1c0c3ed27e293a2daaa185482dc7fee2ed18490748e5077f8012882091aa2a8'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.a77e66f54b1be8285f4b33bafdd3d15e0a1ea694c0fd18832c61efb8c8fb312a'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_install.sigdata.b5d31a12e244bccafa0e5b8152c051c7d071855da0b638a3479ce7d677f146b5'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.4fd86084264170fb770ca358d1c3efd8dd70e231fe0d2328f98de3732c50a2a7'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.448a8113230a16ac5d606de18989f98b3700edeb3e7956c6f02207aa76a5d4f3'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_compile.sigdata.de7ff2af7f15af3b23a6ceb362ffa91602eebd17e19ed3df7709d81c2c390ce4'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_compile.sigdata.5ed1d5378e69e6ce244174b1becfb5340fb7349d25780cc8f5a7f222b4bf5cde'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_install.sigdata.4fb2c2301f0aca4a4e2add6ca1656d3bf843b88cf31819c70ac4de60cca2b513'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_configure.sigdata.1330164135e31705d4f1120ded68cd49dc32eb8d37945854b8383f7894366f61'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.c92d02429f22ecf3c6bb5c31cd2f4faaca852e6115e549be6a1154ef88e42049'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package.sigdata.8614d96d94145c5a40e074b90ab4d10e2a228c8dd39916213ca67f96632d6133'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_packagedata.sigdata.fdfe6627047063dcf31c49165a716901448863c29235d9cedc5e07ceb73527b1'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_write_rpm.sigdata.7537a5040399eaf51e4eb82b4c4d7a4927bfe40b38ce70ebc67be217b945c3de'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_populate_sysroot.sigdata.31bd54b8811665bd9b0da94add1042a768272b88b3301c916ac3f318db87c508'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_qa.sigdata.13cbaa397a096de35904dd0f8750b19c16419d7d1a2fae0f14c2c7923a308c28'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.9bc0d54595e72e4e4da3980443c1df558581966144ace9f189e526419b7ce2d4'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_qa.sigdata.19d7bc678a149de0d7f4b97f862f9ee271ef5c66c91886a5852335ed916f9e8b'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_install.sigdata.1e8482a852298d971b4640702a5723b3cf472ef802731b7fa4af7ad63b2fd48d'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_compile.sigdata.f149b25486972d08fc27e40653849eab265b3a31800aa8cf81f50a094b3060ac'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_packagedata.sigdata.4e63c49044a74657f9437ea8d75aecb086aa14bead0471e3b4927d975a3101a7'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.cf1734d0d9b1b20bafeb8c59d6bd812147b6ce5edd59e188f27cbc243038dbdf'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.f5feb243311ea6bbf2fcd150821e6bb1e5024b361e37e21c8cac275cd542de25'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_configure.sigdata.87d8770b4dfad359aba60cc05741c8b3cc6de3f27f4d7afdd4409394833f0899'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package.sigdata.0e813eb4208488aa2f444072feb41274c1045f7e285b29298ac9275c76b24ad5'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_packagedata.sigdata.3cc10eb84345704add643a12ddddf290a02d4b3c0482382e7b322192f629af56'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_install.sigdata.df3851ac16cc5fbef4a87ac73a43a54b9914581075b8fdd9ce41d4058c3c6ea1'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.7d6215490248e5b6ebdd13606b0eb5d8afca26574a204f58e73c7880a7360c4a'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.9a8775d578e4e91c87ef0965d09260480b343a7cb586372f5c2f3f46ea7826ea'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package.sigdata.4ee3961f0c45352fe0e2b994dff393489529690dd01875bef5279ef6663f82eb'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_configure.sigdata.c7e1878a5670ac2759ed65c00c7832356aaa3ef8b8b8aac0ffda0fe8fe63c70d'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.869b9a50422604a92d6ed74fe38423f8f6ed6e80ce79255247e77214b5157546'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_compile.sigdata.8bcb4d754f0a6dccf2cea9ea1935a5330697e80a9e83c83749212a4b94a28939'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_qa.sigdata.09aa4c5f61302977f5a89a55a7ccf914f99a71c10f04c77742ceec7008954990'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_qa.sigdata.7f6a8e8e9487d8636bb66616077cf81081086062a24615142e5898a64695a29f'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.de37e9ffbafd6fa03ee163ac594b7b419aacaa7f76e841d5755f8f8c60fc229d'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_write_rpm.sigdata.9bddcac412aa8ee310498f0d7c7a4a06075cc34c0e2592ecff24245b21a4b570'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_install.sigdata.77e14b907df816833644f466be6a219a5dd4ba6a12e18a0bd94b3d2f45febedd'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_compile.sigdata.9cea907c87090b4d9f0cf4460629546297a47db724809fbfd5ee7730401b7574'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_populate_sysroot.sigdata.19fc3d945202f03fe941cdb046886fb934f8267a60e28a7be0f6e2686a479c26'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_packagedata.sigdata.e49c2774170926d3efacc76132e129b5cbdd264971e8087ecc4f307ae8ea4961'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_configure.sigdata.6597ee477731c9440692237db01a70832e473588ab7082751a2f2c9d87c556ae'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package.sigdata.f229bd686fa4d08a7ced7fc54292e959f5b7483734d4aef92f27e9cc1b126f9b'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_compile.sigdata.65f3be30da4dc333a13bbf69d4f0cf418730718936e4f633a01a94f33b8ebef1'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.8ed5b5d7c9a60b44b5097425b26ce5557ec3420cb761c9295c56307d5ddaec22'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.331b2d9bcff9e6e81582074f1cd8587ffb4eeb64c73a1d2cbdfa0e563a1abff3'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_install.sigdata.a8ae893a542660b332a7cd22e9e982c4241135b06ef30125d487cf2ee92b3b91'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_install.sigdata.045bfaf4832974f96447aa7f7c431abd3c32c56d1956d921354b10f2e57aa7ee'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_compile.sigdata.27dddf67e61a73c1c42fbebf2ec5cd58d9c6b18b79ab9d3bbc61f350b393700a'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.83d1a26ebe7e2df3f496024a297ba782e145e6982457e09102d5e7c4fbf1b3b7'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.891d5abc469d187e34b531bf81a1ef742d6b834204af8c43ee0949744f2ea413'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_configure.sigdata.59dc8b0def7802484c734787962400026246f70c2bf48ade3baeac5671d9c47f'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_populate_sysroot.sigdata.7358ba758bc3a8c76d87a45ecb5dc8cb3224b45098f81d3724b226295922c475'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_qa.sigdata.ad013cb428b0fc127583e1ca7a5f39a4cca7cd7fe13fa669ed3cbc4b9ee3332a'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_install.sigdata.88e565d06d7c69e985da195f7752911022a974d6b9e89d82699de274d107f853'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package.sigdata.802365a52628bc0b173556977b135e38fee5fbfc415327bbb0b695ef601a4709'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_packagedata.sigdata.a3c32256c02d42d24d639b04f6fc2073b0c53c840cd008f4b8b788b94977da94'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_compile.sigdata.19d6cef321ed3808d928b6de955b214f1a3444afc6e6fe73b68447060d66cdff'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.16c650c390029ea40a19975d6e9ac1c9e8486cb82ff49607cbb380a771ffe970'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_write_rpm.sigdata.6d745c3a58e4d35933079194d8e83979ea0d032a9d6498c880305b8b283b8412'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_configure.sigdata.149b205adb6a48cb396e6da73dd45fb13c51ece5c0e56e01b4458e32a8bbc21c'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_qa.sigdata.914dc0f062bcc4d4898cafff2b380735b5bfb2343408fb6460046f400f73755b'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_packagedata.sigdata.71beb081559a476e39a0527a8a42b92c9e4ee209dedbf67e82d1ccc03babf9fb'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_compile.sigdata.c2bddf0463e3c501a9ccaf1b1511f322311fb5e8c244e6cff9046db8c65e8f72'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package.sigdata.c6e360d90dae93948f78fdc15d054df8d76fb998bfe8e7d5d194f3dcf24ce30f'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.6f146b8c3d06fd84630198af8e2b8b7d8446c82c0e2f292f5b33043b67c698c9'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.d3afb749ff9f7f41f9a79b6f2d7d00615c3a05435e75d91cad2ebec11843bc92'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_install.sigdata.17e30337464c783f7ae7e2c156bb747ef149606d78d58d1f144a01196d94315a'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.4d760c1f09a402e714c869b5f5f4af5b831e8fc3f0df3c40168387f10cb7c324'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_qa.sigdata.c57da894fee804da21cdadeb46ce4eb4109ca220edb97317e4c1643a43ba9e2d'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_compile.sigdata.29c8e6034e583ae319c6c10f7c4836d1e36dd1958be403909015aef467f9aae4'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.6c4edfb164464b469d13f708c0cec9aef53029579999abfcfcb422986bd12e32'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package.sigdata.5f1e651a667cc88f31cd1aec4957dd8b5ae7fbc23afc2b4c333354d019a662ff'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_configure.sigdata.ec87c5e68c278794e01b1b9c04638282cfd51c49f33cb8edb0fec532c8c82e2c'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_packagedata.sigdata.f0ded7162e6e6e9fcc5f1979ceae387c460572398e2711ec2e72eb8fa35fe714'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.77885fed1ad105f8827d4249a8a708879922b9dddcefdcc56f7bb574b911c9f2'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_install.sigdata.bf859e6a1293873570398b9bb5985cf52fd5063167e41982de7654ab0eaae860'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.1a58b70dc6d5603759317eae619cae800aad6931792369177a104444377cc328'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_write_rpm.sigdata.ff24591a4417413bf286f9e71c84d5c2269f9b96281a07f40549644af42c3d97'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_compile.sigdata.71fef31c7bbce861911f82dd52b09c5a6fc249de935b8367ea20082adef7633f'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_configure.sigdata.f7f84daf9d8df2a85fd595496b99ff1d6d23d51a7d9f0d82bb1f9b0abc9a7b99'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_populate_sysroot.sigdata.b3f362658ce87e7e720f29144364fae73eb8a1eaaf897c5c0e2468ba8f13a6b4'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package.sigdata.b5181478414e28c3dd45ae98b6eab21ed4ef1a15e03cb4de9180e50e1cd3cf00'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.3415af033f8229cb7feed2837e9af07578edddfb21352d467c6ad4a2d80ccee6'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_install.sigdata.92074371f84fc2a53a748fb31021ea4bfe391ea30866ae3fe170c6c608e13a04'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_packagedata.sigdata.03502fab07462a4db1a68ac3ece92c0415bc986397296574397d05b21aee1f1c'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_qa.sigdata.97f781f84907e0c40a014339446dc0098dc89fa8cd0d4f9a681908337e3f1424'

2021-08-19 19:17:53,313 - oe-selftest - INFO - ======================================================================
2021-08-19 19:17:53,313 - oe-selftest - INFO - FAIL: test_sstate_sametune_samesigs (sstatetests.SStateTests)
2021-08-19 19:17:53,313 - oe-selftest - INFO - ----------------------------------------------------------------------
2021-08-19 19:17:53,314 - oe-selftest - INFO - Traceback (most recent call last):
  File "/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/lib/oeqa/selftest/cases/sstatetests.py", line 449, in test_sstate_sametune_samesigs
    self.assertCountEqual(files1, files2)
AssertionError: Element counts were not equal:
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.fc54579cc139c777172242c3da3e095f4308c5ce606b2365a5b86c4371ee4f86'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_compile.sigdata.86cb5a1346b0615cb21fab3c0110cc964eccedbb94b2ccf99546dfd456897cca'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_install.sigdata.a1c0c3ed27e293a2daaa185482dc7fee2ed18490748e5077f8012882091aa2a8'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.a77e66f54b1be8285f4b33bafdd3d15e0a1ea694c0fd18832c61efb8c8fb312a'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_install.sigdata.b5d31a12e244bccafa0e5b8152c051c7d071855da0b638a3479ce7d677f146b5'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.4fd86084264170fb770ca358d1c3efd8dd70e231fe0d2328f98de3732c50a2a7'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.448a8113230a16ac5d606de18989f98b3700edeb3e7956c6f02207aa76a5d4f3'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_compile.sigdata.de7ff2af7f15af3b23a6ceb362ffa91602eebd17e19ed3df7709d81c2c390ce4'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_compile.sigdata.5ed1d5378e69e6ce244174b1becfb5340fb7349d25780cc8f5a7f222b4bf5cde'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_install.sigdata.4fb2c2301f0aca4a4e2add6ca1656d3bf843b88cf31819c70ac4de60cca2b513'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_configure.sigdata.1330164135e31705d4f1120ded68cd49dc32eb8d37945854b8383f7894366f61'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.c92d02429f22ecf3c6bb5c31cd2f4faaca852e6115e549be6a1154ef88e42049'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package.sigdata.8614d96d94145c5a40e074b90ab4d10e2a228c8dd39916213ca67f96632d6133'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_packagedata.sigdata.fdfe6627047063dcf31c49165a716901448863c29235d9cedc5e07ceb73527b1'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_write_rpm.sigdata.7537a5040399eaf51e4eb82b4c4d7a4927bfe40b38ce70ebc67be217b945c3de'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_populate_sysroot.sigdata.31bd54b8811665bd9b0da94add1042a768272b88b3301c916ac3f318db87c508'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_qa.sigdata.13cbaa397a096de35904dd0f8750b19c16419d7d1a2fae0f14c2c7923a308c28'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.9bc0d54595e72e4e4da3980443c1df558581966144ace9f189e526419b7ce2d4'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_qa.sigdata.19d7bc678a149de0d7f4b97f862f9ee271ef5c66c91886a5852335ed916f9e8b'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_install.sigdata.1e8482a852298d971b4640702a5723b3cf472ef802731b7fa4af7ad63b2fd48d'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_compile.sigdata.f149b25486972d08fc27e40653849eab265b3a31800aa8cf81f50a094b3060ac'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_packagedata.sigdata.4e63c49044a74657f9437ea8d75aecb086aa14bead0471e3b4927d975a3101a7'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.cf1734d0d9b1b20bafeb8c59d6bd812147b6ce5edd59e188f27cbc243038dbdf'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.f5feb243311ea6bbf2fcd150821e6bb1e5024b361e37e21c8cac275cd542de25'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_configure.sigdata.87d8770b4dfad359aba60cc05741c8b3cc6de3f27f4d7afdd4409394833f0899'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package.sigdata.0e813eb4208488aa2f444072feb41274c1045f7e285b29298ac9275c76b24ad5'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_packagedata.sigdata.3cc10eb84345704add643a12ddddf290a02d4b3c0482382e7b322192f629af56'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_install.sigdata.df3851ac16cc5fbef4a87ac73a43a54b9914581075b8fdd9ce41d4058c3c6ea1'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.7d6215490248e5b6ebdd13606b0eb5d8afca26574a204f58e73c7880a7360c4a'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.9a8775d578e4e91c87ef0965d09260480b343a7cb586372f5c2f3f46ea7826ea'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package.sigdata.4ee3961f0c45352fe0e2b994dff393489529690dd01875bef5279ef6663f82eb'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_configure.sigdata.c7e1878a5670ac2759ed65c00c7832356aaa3ef8b8b8aac0ffda0fe8fe63c70d'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.869b9a50422604a92d6ed74fe38423f8f6ed6e80ce79255247e77214b5157546'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_compile.sigdata.8bcb4d754f0a6dccf2cea9ea1935a5330697e80a9e83c83749212a4b94a28939'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_qa.sigdata.09aa4c5f61302977f5a89a55a7ccf914f99a71c10f04c77742ceec7008954990'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_qa.sigdata.7f6a8e8e9487d8636bb66616077cf81081086062a24615142e5898a64695a29f'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.de37e9ffbafd6fa03ee163ac594b7b419aacaa7f76e841d5755f8f8c60fc229d'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_write_rpm.sigdata.9bddcac412aa8ee310498f0d7c7a4a06075cc34c0e2592ecff24245b21a4b570'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_install.sigdata.77e14b907df816833644f466be6a219a5dd4ba6a12e18a0bd94b3d2f45febedd'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_compile.sigdata.9cea907c87090b4d9f0cf4460629546297a47db724809fbfd5ee7730401b7574'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_populate_sysroot.sigdata.19fc3d945202f03fe941cdb046886fb934f8267a60e28a7be0f6e2686a479c26'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_packagedata.sigdata.e49c2774170926d3efacc76132e129b5cbdd264971e8087ecc4f307ae8ea4961'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_configure.sigdata.6597ee477731c9440692237db01a70832e473588ab7082751a2f2c9d87c556ae'
First has 1, Second has 0:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package.sigdata.f229bd686fa4d08a7ced7fc54292e959f5b7483734d4aef92f27e9cc1b126f9b'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_compile.sigdata.65f3be30da4dc333a13bbf69d4f0cf418730718936e4f633a01a94f33b8ebef1'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.8ed5b5d7c9a60b44b5097425b26ce5557ec3420cb761c9295c56307d5ddaec22'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.331b2d9bcff9e6e81582074f1cd8587ffb4eeb64c73a1d2cbdfa0e563a1abff3'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/lib32-rust-cross-i686/1.54.0-r0.do_install.sigdata.a8ae893a542660b332a7cd22e9e982c4241135b06ef30125d487cf2ee92b3b91'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_install.sigdata.045bfaf4832974f96447aa7f7c431abd3c32c56d1956d921354b10f2e57aa7ee'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_compile.sigdata.27dddf67e61a73c1c42fbebf2ec5cd58d9c6b18b79ab9d3bbc61f350b393700a'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.83d1a26ebe7e2df3f496024a297ba782e145e6982457e09102d5e7c4fbf1b3b7'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_populate_sysroot.sigdata.891d5abc469d187e34b531bf81a1ef742d6b834204af8c43ee0949744f2ea413'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_configure.sigdata.59dc8b0def7802484c734787962400026246f70c2bf48ade3baeac5671d9c47f'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_populate_sysroot.sigdata.7358ba758bc3a8c76d87a45ecb5dc8cb3224b45098f81d3724b226295922c475'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_qa.sigdata.ad013cb428b0fc127583e1ca7a5f39a4cca7cd7fe13fa669ed3cbc4b9ee3332a'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_install.sigdata.88e565d06d7c69e985da195f7752911022a974d6b9e89d82699de274d107f853'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package.sigdata.802365a52628bc0b173556977b135e38fee5fbfc415327bbb0b695ef601a4709'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_packagedata.sigdata.a3c32256c02d42d24d639b04f6fc2073b0c53c840cd008f4b8b788b94977da94'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_compile.sigdata.19d6cef321ed3808d928b6de955b214f1a3444afc6e6fe73b68447060d66cdff'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.16c650c390029ea40a19975d6e9ac1c9e8486cb82ff49607cbb380a771ffe970'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/rust/1.54.0-r0.do_package_write_rpm.sigdata.6d745c3a58e4d35933079194d8e83979ea0d032a9d6498c880305b8b283b8412'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_configure.sigdata.149b205adb6a48cb396e6da73dd45fb13c51ece5c0e56e01b4458e32a8bbc21c'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_qa.sigdata.914dc0f062bcc4d4898cafff2b380735b5bfb2343408fb6460046f400f73755b'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_packagedata.sigdata.71beb081559a476e39a0527a8a42b92c9e4ee209dedbf67e82d1ccc03babf9fb'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_compile.sigdata.c2bddf0463e3c501a9ccaf1b1511f322311fb5e8c244e6cff9046db8c65e8f72'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package.sigdata.c6e360d90dae93948f78fdc15d054df8d76fb998bfe8e7d5d194f3dcf24ce30f'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.6f146b8c3d06fd84630198af8e2b8b7d8446c82c0e2f292f5b33043b67c698c9'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.d3afb749ff9f7f41f9a79b6f2d7d00615c3a05435e75d91cad2ebec11843bc92'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_install.sigdata.17e30337464c783f7ae7e2c156bb747ef149606d78d58d1f144a01196d94315a'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/core2-32-poky-linux/libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.4d760c1f09a402e714c869b5f5f4af5b831e8fc3f0df3c40168387f10cb7c324'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_qa.sigdata.c57da894fee804da21cdadeb46ce4eb4109ca220edb97317e4c1643a43ba9e2d'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_compile.sigdata.29c8e6034e583ae319c6c10f7c4836d1e36dd1958be403909015aef467f9aae4'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package_write_rpm.sigdata.6c4edfb164464b469d13f708c0cec9aef53029579999abfcfcb422986bd12e32'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_package.sigdata.5f1e651a667cc88f31cd1aec4957dd8b5ae7fbc23afc2b4c333354d019a662ff'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_configure.sigdata.ec87c5e68c278794e01b1b9c04638282cfd51c49f33cb8edb0fec532c8c82e2c'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_packagedata.sigdata.f0ded7162e6e6e9fcc5f1979ceae387c460572398e2711ec2e72eb8fa35fe714'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_populate_sysroot.sigdata.77885fed1ad105f8827d4249a8a708879922b9dddcefdcc56f7bb574b911c9f2'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_install.sigdata.bf859e6a1293873570398b9bb5985cf52fd5063167e41982de7654ab0eaae860'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-libstd-rs/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.1a58b70dc6d5603759317eae619cae800aad6931792369177a104444377cc328'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_write_rpm.sigdata.ff24591a4417413bf286f9e71c84d5c2269f9b96281a07f40549644af42c3d97'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_compile.sigdata.71fef31c7bbce861911f82dd52b09c5a6fc249de935b8367ea20082adef7633f'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_configure.sigdata.f7f84daf9d8df2a85fd595496b99ff1d6d23d51a7d9f0d82bb1f9b0abc9a7b99'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_populate_sysroot.sigdata.b3f362658ce87e7e720f29144364fae73eb8a1eaaf897c5c0e2468ba8f13a6b4'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package.sigdata.b5181478414e28c3dd45ae98b6eab21ed4ef1a15e03cb4de9180e50e1cd3cf00'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_prepare_recipe_sysroot.sigdata.3415af033f8229cb7feed2837e9af07578edddfb21352d467c6ad4a2d80ccee6'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_install.sigdata.92074371f84fc2a53a748fb31021ea4bfe391ea30866ae3fe170c6c608e13a04'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_packagedata.sigdata.03502fab07462a4db1a68ac3ece92c0415bc986397296574397d05b21aee1f1c'
First has 0, Second has 1:  '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/tmp-sstatesamehash/stamps/x86-pokymllib32-linux/lib32-rust/1.54.0-r0.do_package_qa.sigdata.97f781f84907e0c40a014339446dc0098dc89fa8cd0d4f9a681908337e3f1424'

2021-08-19 19:17:53,314 - oe-selftest - INFO - ----------------------------------------------------------------------
2021-08-19 19:17:53,314 - oe-selftest - INFO - Ran 2 tests in 212.678s
2021-08-19 19:17:53,315 - oe-selftest - INFO - FAILED
2021-08-19 19:17:53,315 - oe-selftest - INFO -  (failures=1)
2021-08-19 19:18:00,057 - oe-selftest - INFO - RESULTS:
2021-08-19 19:18:00,058 - oe-selftest - INFO - RESULTS - sstatetests.SStateTests.test_sstate_noop_samesigs: PASSED (50.63s)
2021-08-19 19:18:00,059 - oe-selftest - INFO - RESULTS - sstatetests.SStateTests.test_sstate_sametune_samesigs: FAILED (160.05s)
2021-08-19 19:18:00,062 - oe-selftest - INFO - SUMMARY:
2021-08-19 19:18:00,062 - oe-selftest - INFO - oe-selftest () - Ran 2 tests in 212.680s
2021-08-19 19:18:00,062 - oe-selftest - INFO - oe-selftest - FAIL - Required tests failed (successes=1, skipped=0, failures=1, errors=0)

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-20 10:06         ` [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update Randy MacLeod
@ 2021-08-21  2:48           ` Randy MacLeod
  2021-08-21  8:46             ` Richard Purdie
       [not found]           ` <169D3274AAECC435.19323@lists.openembedded.org>
  1 sibling, 1 reply; 23+ messages in thread
From: Randy MacLeod @ 2021-08-21  2:48 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer, Richard Purdie
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar


[-- Attachment #1.1: Type: text/plain, Size: 12953 bytes --]

On 2021-08-20 6:06 a.m., Randy MacLeod wrote:
> Added Trevor who may be working on upgrading python-cryptography.
> Added Anatol since he was interested last time we worked on merging.
>
> Again, let me know if you want to be dropped by replying privately.
> No one from the meta-rust community responded last time so I'm
> assuming that y'all are just on vacation! ;-)
>
> On 2021-08-17 10:52 a.m., Randy MacLeod wrote:
>> On 2021-08-13 11:22 a.m., Vinay Kumar wrote:
>>> Hi Randy,
>>>
>>>>> Vinay or I will look into glibc/qemuppc64
>>>>> if no one else is working on that.
>>>
>>> The failure is due to the below error in libstd-rs package build.
>>> "error: unrecognized arch "powerpc64le" in target specification"
>>>
>>> The reason for this is "arch": "powerpc64le" from the below target
>>> specific file.
>>>
>
> ,,,
>
>>
>> Thanks Vinay, applied.
>>
>> I'll push a new branch to poky-contrib later today.
>
>
> I fixed and worked-around a few issues and pushed a new branch:
>
>
> http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a 
>
>
> 1. There are only a few new commits including Vinay's:
>
>    757da4cbf1e rust: remove Rust version 1.51.0 toolchain
>
>    a4808f787ca cargo_common: remove http_proxy
>
>    b6941135c00 rust-common.inc: Fix build failure with qemuppc64.
>
>
> If anyone wants to help by doing test builds, trying to generate and use
>
> and SDK with rust in it or anything else, that'd be great.
>
>
>
> Alex also ran a test build on the Autobuilder:
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/83/builds/2439
>
>
>
> but I have yet to look at the failed stages in the run.
>
>
> Testing logs and debugging notes below for those interested.
>
> ../Randy
>
>
>
> The test:
>    oe-selftest -r distrodata.Distrodata.test_maintainers
>
>
> is fixed by creating maintainer records for all rusty packages
> and by removing the older version of the rust toolchain:
>    757da4cbf1e rust: remove Rust version 1.51.0 toolchain
>
>
>
> I suppose that if the meta-rust users want to keep an older TC
> it can live in meta-rust.
>
> Then, these tests:
>
>    oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs
>
>    oe-selftest -r sstatetests.SStateTests.test_sstate_sametune_samesigs
>
>
> were failing. One issue was fixed by the work-around of:
>
>    a4808f787ca cargo_common: remove http_proxy
>
>
> Debugging the next step was a challenge since I hadn't worked
> with diffsigs before. Then to simplify, I removed all rusty .bb package
>    ( by mv foo.bb foo.bb.hide)
> until I was down to the first recipe in the dependency tree:
>
>    rust-llvm-native.
>
> and then running:
>   oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs \
> sstatetests.SStateTests.test_sstate_sametune_samesigs \
>
>
>
> 2021-08-19 17:54:12,878 - oe-selftest - INFO
> - Ran 2 tests in 142.010s
>
> - OK
>
> - RESULTS:
>
> - RESULTS - sstatetests.SStateTests.test_sstate_noop_samesigs:
>       PASSED (41.45s)
>
> - RESULTS - sstatetests.SStateTests.test_sstate_sametune_samesigs:
>       PASSED (98.89s)
>
> - SUMMARY:
>
> - oe-selftest () - Ran 2 tests in 142.012s
>
> - oe-selftest - OK - All required tests passed
>     (successes=2, skipped=0, failures=0, errors=0)
>
>
> adding the next self consistent group of package:
>    cargo/cargo-cross-canadian_1.54.0.bb
>
>    cargo/cargo_1.54.0.bb
>
>    rust/libstd-rs_1.54.0.bb
>
>    rust/rust-cross-canadian_1.54.0.bb
>
>    rust/rust-cross_1.54.0.bb
>
>    rust/rust-tools-cross-canadian_1.54.0.bb
>
>    rust/rust_1.54.0.bb
>
>
>
> I see another http_proxy failure that seems to require a feature
> drop in cargo:
>
> https://github.com/rust-lang/cargo/blob/master/src/cargo/ops/registry.rs#L524 
>
>
> Patching out a feature doesn't seem like a good idea but
> maybe someone else has a better one?
>
> To see if there were other problems lurking menacingly behind the proxy
> error, I disabled the http_proxy test in:
>     meta/lib/oeqa/selftest/cases/sstatetests.py
>
>
>    -http_proxy = "http://example.com/"
>
>    +http_proxy = ""
>
>
> and ran again to find:
>
> - RESULTS - sstatetests.SStateTests.test_sstate_noop_samesigs:
>       PASSED (50.63s)
> - RESULTS - sstatetests.SStateTests.test_sstate_sametune_samesigs:
>       FAILED (160.05s)
>
> so that's somewhat encouraging but there is still the error:
>
>      File ".../meta/lib/oeqa/selftest/cases/sstatetests.py", line 449,
>    in test_sstate_sametune_samesigs
>
>      self.assertCountEqual(files1, files2)
>
> AssertionError: Element counts were not equal:
>
> First has 1, Second has 0:
> '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/\
> tmp-sstatesamehash/stamps/x86_64-linux/\
> lib32-rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.\
> fc54579cc139c777172242c3da3e0'
>
>
> First has 1, Second has 0:
> '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/\
> tmp-sstatesamehash/stamps/x86_64-linux/\
> lib32-rust-cross-i686/1.54.0-r0.do_compile.sigdata.\
> 86cb5a1346b0615cb21fab3c0110cc964ecced'
>
>
> ... lots of similar lines of diffsig info ...
>
>
> Hacking the test to not clean up and
> running bitbake-dumpsigs on the two sig files for the first error,
> I get the two files attached. I also attached the
>    tmp/log/oe-selftest-results.log file.
>
> That's it for now.


I think I've gotten to the bottom of a chain of sigs that differ in part 
due to:
"Hash for dependent task" differing and found that on leaf node is:

stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_target

See below for my notes and my assertion/question about the next step needing
to be deterministically ordering the elements used in rust_gen_target.

../Randy


I did learn a bit about this test code that is failing:

https://git.openembedded.org/openembedded-core/tree/meta/lib/oeqa/selftest/cases/sstatetests.py#n404

as the comment explains:

|

The sstate checksums of two identical machines (using the same tune) 
should be the
same, apart from changes within the machine specific stamps directory. 
We use the
qemux86copy machine to test this. Also include multilibs in the test.|

so the good news is that there are: 23185files being checked and
only 43 are different and if you look at what packages and arches
differ it's:

x86_64-linux/lib32-rust-cross-i686
x86_64-linux/rust-cross-i686
core2-32-poky-linux/rust
core2-32-poky-linux/libstd-rs
x86-pokymllib32-linux/lib32-libstd-rs
x86-pokymllib32-linux/lib32-rust

Note that these are all 32bit multilib builds.
Maybe that's not so important for the initial merge to oe-core... Richard?


Looking at core2-32-poky-linux/rust the stages that have different 
signatures are:

do_configure
do_populate_sysroot
do_package_qa
do_install
do_package
do_packagedata
do_compile
do_prepare_recipe_sysroot
do_package_write_rpm

9 of the 19 stages. Ok so maybe it's not great news after all. ;-)


I'll kept digging down through the tree of dependant diffsigs
since when looking at do_prepare_recipe_sysroot, it was clear
that a key difference in it's signatures was due to:
   "Hash for dependent task ..."
differing. Finally I found a set of signatures that did not have a
diff in the dependent task:

stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_target*

The simplified diff is below and the files are attached.

There are a variety of variables that differ only in order, such as:

-List of dependencies for variable TUNE_FEATURES is 
{'TUNE_FEATURES:tune-core2-32', 'DEFAULTTUNE'}
+List of dependencies for variable TUNE_FEATURES is {'DEFAULTTUNE', 
'TUNE_FEATURES:tune-core2-32'}

I assume the next step is to find out where those variables are produced:
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/tree/meta/recipes-devtools/rust/rust-common.inc?h=rmacleod/rust-redo-aug-10-2021-a#n292

and to introduce deterministic order when building them.

../Randy


diff -Naur x86_64-rust-cross-i686-rust-gen-targets/* | grep "^[+-]" | 
cut -c -166
--- 
x86_64-rust-cross-i686-rust-gen-targets/1.rust-cross-i686.do_rust_gen_target 
2021-08-20 22:19:19.883320107 -0400
+++ 
x86_64-rust-cross-i686-rust-gen-targets/2.rust-cross-i686.do_rust_gen_target 
2021-08-20 22:19:19.651319015 -0400
-basewhitelist: {'CCACHE_TOP_DIR', 'SOURCE_DATE_EPOCH', 'SDKPKGSUFFIX', 
'BB_WORKERCONTEXT', 'FILESEXTRAPATHS', 'HOME', 'OMP_NUM_THREADS', 
'PRSERV_DUMPDIR', 'PRSERV_HO
+basewhitelist: {'PWD', 'SSTATE_HASHEQUIV_OWNER', 'STAMPS_DIR', 
'CCACHE', 'BB_WORKERCONTEXT', 'COREBASE', 'BBPATH', 'HOME', 'TMPDIR', 
'ERROR_QA', 'SSTATE_HASHEQUIV_ME
-basehash: bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab
+basehash: d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b
-List of dependencies for variable TUNE_ARCH is {'X86ARCH32', 'X86ARCH64'}
+List of dependencies for variable TUNE_ARCH is {'X86ARCH64', 'X86ARCH32'}
-List of dependencies for variable TUNE_FEATURES is 
{'TUNE_FEATURES:tune-core2-32', 'DEFAULTTUNE'}
+List of dependencies for variable TUNE_FEATURES is {'DEFAULTTUNE', 
'TUNE_FEATURES:tune-core2-32'}
-List of dependencies for variable llvm_cpu is {'PACKAGE_ARCH', 
'TUNE_FEATURES', 'TRANSLATED_TARGET_ARCH'}
-List of dependencies for variable llvm_features is 
{'llvm_features_from_cc_arch', 'llvm_features_from_tune', 
'llvm_features_from_target_fpu'}
+List of dependencies for variable llvm_cpu is {'PACKAGE_ARCH', 
'TRANSLATED_TARGET_ARCH', 'TUNE_FEATURES'}
+List of dependencies for variable llvm_features is 
{'llvm_features_from_target_fpu', 'llvm_features_from_cc_arch', 
'llvm_features_from_tune'}
-List of dependencies for variable llvm_features_from_tune is 
{'target_is_armv7', 'TUNE_FEATURES', 'ARM_THUMB_OPT', 'MACHINEOVERRIDES'}
+List of dependencies for variable llvm_features_from_tune is 
{'ARM_THUMB_OPT', 'TUNE_FEATURES', 'target_is_armv7', 'MACHINEOVERRIDES'}
-List of dependencies for variable rust_gen_target is {'sys_for', 
'arch_to_rust_target_arch', 'RUST_PANIC_STRATEGY', 'prefix_for'}
+List of dependencies for variable rust_gen_target is {'sys_for', 
'prefix_for', 'arch_to_rust_target_arch', 'RUST_PANIC_STRATEGY'}
-List of dependencies for variable target_is_armv7 is {'TARGET_ARCH', 
'TUNE_FEATURES', 'MACHINEOVERRIDES'}
+List of dependencies for variable target_is_armv7 is {'TUNE_FEATURES', 
'TARGET_ARCH', 'MACHINEOVERRIDES'}
-Variable MACHINE value is qemux86
-Variable MACHINEOVERRIDES value is 
${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', 
d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemua
+Variable MACHINE value is qemux86copy
+Variable MACHINEOVERRIDES value is 
${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', 
d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemua
-Computed base hash is 
bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab and 
from file bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab
-Computed task hash is 
448a8113230a16ac5d606de18989f98b3700edeb3e7956c6f02207aa76a5d4f3
+Computed base hash is 
d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b and 
from file d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b
+Computed task hash is 
83d1a26ebe7e2df3f496024a297ba782e145e6982457e09102d5e7c4fbf1b3b7


>
>
> ../Randy
>
>
>>
>> ../Randy
>>>
>>> On Fri, Aug 13, 2021 at 8:50 PM Vinay Kumar <vinay.m.engg@gmail.com> 
>>> wrote:
>>>>
>>>> rust-common.inc: Fix build failure with qemuppc64.
>>>>
>>>> The glibc build of "rust-hello-world" throws error in libstd-rs 
>>>> package.
>>>> error: unrecognized arch "powerpc64le" in target specification
>>>>
>>>> The same got fixed by changing the arch to "powerpc64".
>>>>
>>>> Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
>>>> ---
>>>>   meta/recipes-devtools/rust/rust-common.inc | 2 ++
>>>>   1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/meta/recipes-devtools/rust/rust-common.inc 
>>>> b/meta/recipes-devtools/rust/rust-common.inc
>>>> index 350517c723..f574152815 100644
>>>> --- a/meta/recipes-devtools/rust/rust-common.inc
>>>> +++ b/meta/recipes-devtools/rust/rust-common.inc
>>>> @@ -248,6 +248,8 @@ def arch_to_rust_target_arch(arch):
>>>>           return "mips64"
>>>>       elif arch == "armv7":
>>>>           return "arm"
>>>> +    elif arch == "powerpc64le":
>>>> +        return "powerpc64"
>>>>       else:
>>>>           return arch
>>>>
>>>> -- 
>>>> 2.31.1
>>>>
>>
>>
>>
>>
>> 
>>
>
>

-- 
# Randy MacLeod
# Wind River Linux


[-- Attachment #1.2: Type: text/html, Size: 20740 bytes --]

[-- Attachment #2: 1.rust-cross-i686.do_rust_gen_target --]
[-- Type: text/plain, Size: 13792 bytes --]

basewhitelist: {'CCACHE_TOP_DIR', 'SOURCE_DATE_EPOCH', 'SDKPKGSUFFIX', 'BB_WORKERCONTEXT', 'FILESEXTRAPATHS', 'HOME', 'OMP_NUM_THREADS', 'PRSERV_DUMPDIR', 'PRSERV_HOST', 'BBSERVER', 'PARALLEL_MAKE', 'BBPATH', 'ERROR_QA', 'FILE_DIRNAME', 'THISDIR', 'BB_HASHSERVE', 'PKGDATA_DIR', 'STAMPS_DIR', 'SSTATE_PKGARCH', 'BB_LIMITEDDEPS', 'STAGING_DIR_TARGET', 'FILE', 'LOGNAME', 'TMPDIR', 'extend_recipe_sysroot', 'GIT_CEILING_DIRECTORIES', 'SSTATE_HASHEQUIV_METHOD', 'BUILD_ARCH', 'SHELL', 'PSEUDO_IGNORE_PATHS', 'STAGING_DIR_HOST', 'WARN_QA', 'PWD', 'BB_TASKHASH', 'PRSERV_LOCKDOWN', 'BB_UNIHASH', 'CCACHE_NOHASHDIR', 'SSTATE_HASHEQUIV_OWNER', 'SSTATE_DIR', 'DL_DIR', 'SSTATE_HASHEQUIV_REPORT_TASKDATA', 'FILESPATH', 'PRSERV_DUMPFILE', 'CCACHE_DIR', 'BUILDHISTORY_DIR', 'PATH', 'EXTERNAL_TOOLCHAIN', 'WORKDIR', 'COREBASE', 'DEPLOY_DIR', 'LICENSE_PATH', 'CCACHE', 'USER', 'STAMPCLEAN'}
taskwhitelist: None
Task dependencies: ['ARM_THUMB_OPT', 'DEFAULTTUNE', 'MACHINE', 'MACHINEOVERRIDES', 'PACKAGE_ARCH', 'RUST_PANIC_STRATEGY', 'TARGET_ARCH', 'TARGET_CC_ARCH', 'TARGET_FPU', 'TARGET_LLVM_CPU', 'TARGET_LLVM_FEATURES', 'TRANSLATED_TARGET_ARCH', 'TUNE_ARCH', 'TUNE_CCARGS', 'TUNE_FEATURES', 'TUNE_FEATURES:tune-core2-32', 'TUNE_FEATURES:tune-x86', 'X86ARCH32', 'X86ARCH64', 'arch_to_rust_target_arch', 'llvm_cpu', 'llvm_features', 'llvm_features_from_cc_arch', 'llvm_features_from_target_fpu', 'llvm_features_from_tune', 'prefix_for', 'rust_gen_target', 'sys_for', 'target_is_armv7']
basehash: bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab
List of dependencies for variable ARM_THUMB_OPT is set()
List of dependencies for variable DEFAULTTUNE is set()
List of dependencies for variable MACHINE is set()
List of dependencies for variable MACHINEOVERRIDES is {'MACHINE'}
List of dependencies for variable PACKAGE_ARCH is set()
List of dependencies for variable RUST_PANIC_STRATEGY is set()
List of dependencies for variable TARGET_ARCH is {'TUNE_ARCH'}
List of dependencies for variable TARGET_CC_ARCH is {'TUNE_CCARGS'}
List of dependencies for variable TARGET_FPU is set()
List of dependencies for variable TARGET_LLVM_CPU is {'llvm_cpu'}
List of dependencies for variable TARGET_LLVM_FEATURES is {'llvm_features'}
List of dependencies for variable TRANSLATED_TARGET_ARCH is {'TARGET_ARCH'}
List of dependencies for variable TUNE_ARCH is {'X86ARCH32', 'X86ARCH64'}
List of dependencies for variable TUNE_CCARGS is set()
List of dependencies for variable TUNE_FEATURES is {'TUNE_FEATURES:tune-core2-32', 'DEFAULTTUNE'}
List of dependencies for variable TUNE_FEATURES:tune-core2-32 is {'TUNE_FEATURES:tune-x86'}
List of dependencies for variable TUNE_FEATURES:tune-x86 is set()
List of dependencies for variable X86ARCH32 is set()
List of dependencies for variable X86ARCH64 is set()
List of dependencies for variable arch_to_rust_target_arch is set()
List of dependencies for variable llvm_cpu is {'PACKAGE_ARCH', 'TUNE_FEATURES', 'TRANSLATED_TARGET_ARCH'}
List of dependencies for variable llvm_features is {'llvm_features_from_cc_arch', 'llvm_features_from_tune', 'llvm_features_from_target_fpu'}
List of dependencies for variable llvm_features_from_cc_arch is {'TARGET_CC_ARCH'}
List of dependencies for variable llvm_features_from_target_fpu is {'TARGET_FPU'}
List of dependencies for variable llvm_features_from_tune is {'target_is_armv7', 'TUNE_FEATURES', 'ARM_THUMB_OPT', 'MACHINEOVERRIDES'}
List of dependencies for variable prefix_for is set()
List of dependencies for variable rust_gen_target is {'sys_for', 'arch_to_rust_target_arch', 'RUST_PANIC_STRATEGY', 'prefix_for'}
List of dependencies for variable sys_for is set()
List of dependencies for variable target_is_armv7 is {'TARGET_ARCH', 'TUNE_FEATURES', 'MACHINEOVERRIDES'}
Variable do_rust_gen_targets value is     wd = d.getVar('WORKDIR') + '/targets/'
    # It is important 'TARGET' is last here so that it overrides our less
    # informed choices for BUILD & HOST if TARGET happens to be the same as
    # either of them.
    for thing in ['BUILD', 'HOST', 'TARGET']:
        bb.debug(1, "rust_gen_target for " + thing)
        features = ""
        cpu = "generic"
        arch = d.getVar('{}_ARCH'.format(thing))
        if thing is "TARGET":
            # arm and armv7 have different targets in llvm
            if arch == "arm" and target_is_armv7(d):
                arch = 'armv7'
            features = d.getVar('TARGET_LLVM_FEATURES') or ""
            cpu = d.getVar('TARGET_LLVM_CPU')
        rust_gen_target(d, thing, wd, features, cpu, arch)

Variable ARM_THUMB_OPT value is None
Variable DEFAULTTUNE value is core2-32
Variable MACHINE value is qemux86
Variable MACHINEOVERRIDES value is ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemuall:${MACHINE}
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{mx32} = Unset
Variable PACKAGE_ARCH value is ${BUILD_ARCH}
Variable RUST_PANIC_STRATEGY value is unwind
Variable TARGET_ARCH value is ${TUNE_ARCH}
Variable TARGET_CC_ARCH value is ${TUNE_CCARGS} --sysroot=${STAGING_DIR_TARGET}
Variable TARGET_FPU value is 
Variable TARGET_LLVM_CPU value is ${@llvm_cpu(d)}
Variable TARGET_LLVM_FEATURES value is ${@llvm_features(d)}
Variable TRANSLATED_TARGET_ARCH value is ${@d.getVar('TARGET_ARCH').replace("_", "-")}
Variable TUNE_ARCH value is ${@bb.utils.contains('TUNE_FEATURES', 'm32', '${X86ARCH32}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'mx32', '${X86ARCH64}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm64', '${X86ARCH64}', '', d)}
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{m64} = Unset
TUNE_FEATURES{mx32} = Unset
Variable TUNE_CCARGS value is  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse
Variable TUNE_FEATURES value is ${TUNE_FEATURES:tune-${DEFAULTTUNE}}
Variable TUNE_FEATURES:tune-core2-32 value is ${TUNE_FEATURES:tune-x86} core2
Variable TUNE_FEATURES:tune-x86 value is m32
Variable X86ARCH32 value is i686
Variable X86ARCH64 value is x86_64
Variable arch_to_rust_target_arch value is def arch_to_rust_target_arch(arch):
    if arch == "i586" or arch == "i686":
        return "x86"
    elif arch == "mipsel":
        return "mips"
    elif arch == "mip64sel":
        return "mips64"
    elif arch == "armv7":
        return "arm"
    elif arch == "powerpc64le":
        return "powerpc64"
    else:
        return arch

# generates our target CPU value
Variable llvm_cpu value is def llvm_cpu(d):
    cpu = d.getVar('PACKAGE_ARCH')
    target = d.getVar('TRANSLATED_TARGET_ARCH')

    trans = {}
    trans['corei7-64'] = "corei7"
    trans['core2-32'] = "core2"
    trans['x86-64'] = "x86-64"
    trans['i686'] = "i686"
    trans['i586'] = "i586"
    trans['powerpc'] = "powerpc"
    trans['mips64'] = "mips64"
    trans['mips64el'] = "mips64"
    trans['riscv64'] = "generic-rv64"
    trans['riscv32'] = "generic-rv32"

    if target in ["mips", "mipsel"]:
        feat = frozenset(d.getVar('TUNE_FEATURES').split())
        if "mips32r2" in feat:
            trans['mipsel'] = "mips32r2"
            trans['mips'] = "mips32r2"
        elif "mips32" in feat:
            trans['mipsel'] = "mips32"
            trans['mips'] = "mips32"

    try:
        return trans[cpu]
    except:
        return trans.get(target, "generic")

Variable llvm_features value is def llvm_features(d):
    return ','.join(llvm_features_from_tune(d) +
                    llvm_features_from_cc_arch(d) +
                    llvm_features_from_target_fpu(d))


## arm-unknown-linux-gnueabihf
Variable llvm_features_from_cc_arch value is def llvm_features_from_cc_arch(d):
    f = []
    feat = d.getVar('TARGET_CC_ARCH')
    if not feat:
        return []
    feat = frozenset(feat.split())

    if '-mmmx' in feat:
        f.append("+mmx")
    if '-msse' in feat:
        f.append("+sse")
    if '-msse2' in feat:
        f.append("+sse2")
    if '-msse3' in feat:
        f.append("+sse3")
    if '-mssse3' in feat:
        f.append("+ssse3")
    if '-msse4.1' in feat:
        f.append("+sse4.1")
    if '-msse4.2' in feat:
        f.append("+sse4.2")
    if '-msse4a' in feat:
        f.append("+sse4a")
    if '-mavx' in feat:
        f.append("+avx")
    if '-mavx2' in feat:
        f.append("+avx2")

    return f

Variable llvm_features_from_target_fpu value is def llvm_features_from_target_fpu(d):
    # TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
    # ABI. There is no option for hard.

    fpu = d.getVar('TARGET_FPU', True)
    return ["+soft-float"] if fpu == "soft" else []

Variable llvm_features_from_tune value is def llvm_features_from_tune(d):
    f = []
    feat = d.getVar('TUNE_FEATURES')
    if not feat:
        return []
    feat = frozenset(feat.split())

    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    if 'vfpv4' in feat:
        f.append("+vfp4")
    if 'vfpv3' in feat:
        f.append("+vfp3")
    if 'vfpv3d16' in feat:
        f.append("+d16")

    if 'vfpv2' in feat or 'vfp' in feat:
        f.append("+vfp2")

    if 'neon' in feat:
        f.append("+neon")

    if 'mips32' in feat:
        f.append("+mips32")

    if 'mips32r2' in feat:
        f.append("+mips32r2")

    if target_is_armv7(d):
        f.append('+v7')

    if ('armv6' in mach_overrides) or ('armv6' in feat):
        f.append("+v6")
    if 'armv5te' in feat:
        f.append("+strict-align")
        f.append("+v5te")
    elif 'armv5' in feat:
        f.append("+strict-align")
        f.append("+v5")

    if ('armv4' in mach_overrides) or ('armv4' in feat):
        f.append("+strict-align")

    if 'dsp' in feat:
        f.append("+dsp")

    if 'thumb' in feat:
        if d.getVar('ARM_THUMB_OPT') == "thumb":
            if target_is_armv7(d):
                f.append('+thumb2')
            f.append("+thumb-mode")

    if 'cortexa5' in feat:
        f.append("+a5")
    if 'cortexa7' in feat:
        f.append("+a7")
    if 'cortexa9' in feat:
        f.append("+a9")
    if 'cortexa15' in feat:
        f.append("+a15")
    if 'cortexa17' in feat:
        f.append("+a17")
    if ('riscv64' in feat) or ('riscv32' in feat):
        f.append("+a,+c,+d,+f,+m")
    return f

# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
Variable prefix_for value is def prefix_for(d, thing):
    return d.getVar('{}_PREFIX'.format(thing))

# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
Variable rust_gen_target value is def rust_gen_target(d, thing, wd, features, cpu, arch):
    import json
    sys = sys_for(d, thing)
    prefix = prefix_for(d, thing)

    features = features or d.getVarFlag('FEATURES', arch) or ""
    features = features.strip()

    # build tspec
    tspec = {}
    tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
    tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
    tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch))
    tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
    tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
    tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
    tspec['arch'] = arch_to_rust_target_arch(arch)
    tspec['os'] = "linux"
    if "musl" in tspec['llvm-target']:
        tspec['env'] = "musl"
    else:
        tspec['env'] = "gnu"
    if "riscv64" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "lp64d"
    if "riscv32" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "ilp32d"
    tspec['vendor'] = "unknown"
    tspec['target-family'] = "unix"
    tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
    tspec['ar'] = "{}ar".format(prefix)
    tspec['cpu'] = cpu
    if features != "":
        tspec['features'] = features
    tspec['dynamic-linking'] = True
    tspec['executables'] = True
    tspec['linker-is-gnu'] = True
    tspec['linker-flavor'] = "gcc"
    tspec['has-rpath'] = True
    tspec['has-elf-tls'] = True
    tspec['position-independent-executables'] = True
    tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")

    # write out the target spec json file
    with open(wd + sys + '.json', 'w') as f:
        json.dump(tspec, f, indent=4)

Variable sys_for value is def sys_for(d, thing):
    return d.getVar('{}_SYS'.format(thing))

Variable target_is_armv7 value is def target_is_armv7(d):
    '''Determine if target is armv7'''
    # TUNE_FEATURES may include arm* even if the target is not arm
    # in the case of *-native packages
    if d.getVar('TARGET_ARCH') != 'arm':
        return False

    feat = d.getVar('TUNE_FEATURES')
    feat = frozenset(feat.split())
    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
    if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
        return False
    else:
        return True

# Responsible for taking Yocto triples and converting it to Rust triples
Tasks this task depends on: ['/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch']
This task depends on the checksums of files: []
Hash for dependent task /ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch is ec4a9ed86df1c8c2b27bb1e422655cb2cedc1d9a36b720fab636b9af9e3cca48
Computed base hash is bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab and from file bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab
Computed task hash is 448a8113230a16ac5d606de18989f98b3700edeb3e7956c6f02207aa76a5d4f3

[-- Attachment #3: 2.rust-cross-i686.do_rust_gen_target --]
[-- Type: text/plain, Size: 13804 bytes --]

basewhitelist: {'PWD', 'SSTATE_HASHEQUIV_OWNER', 'STAMPS_DIR', 'CCACHE', 'BB_WORKERCONTEXT', 'COREBASE', 'BBPATH', 'HOME', 'TMPDIR', 'ERROR_QA', 'SSTATE_HASHEQUIV_METHOD', 'BB_TASKHASH', 'GIT_CEILING_DIRECTORIES', 'SSTATE_HASHEQUIV_REPORT_TASKDATA', 'CCACHE_NOHASHDIR', 'BB_HASHSERVE', 'BUILD_ARCH', 'PRSERV_LOCKDOWN', 'BUILDHISTORY_DIR', 'SDKPKGSUFFIX', 'PATH', 'WORKDIR', 'OMP_NUM_THREADS', 'SHELL', 'EXTERNAL_TOOLCHAIN', 'PARALLEL_MAKE', 'STAGING_DIR_HOST', 'PSEUDO_IGNORE_PATHS', 'USER', 'FILESPATH', 'STAGING_DIR_TARGET', 'BB_UNIHASH', 'LICENSE_PATH', 'DL_DIR', 'SSTATE_DIR', 'SOURCE_DATE_EPOCH', 'CCACHE_TOP_DIR', 'PRSERV_HOST', 'LOGNAME', 'FILESEXTRAPATHS', 'FILE_DIRNAME', 'STAMPCLEAN', 'SSTATE_PKGARCH', 'PKGDATA_DIR', 'PRSERV_DUMPDIR', 'BBSERVER', 'extend_recipe_sysroot', 'PRSERV_DUMPFILE', 'WARN_QA', 'BB_LIMITEDDEPS', 'THISDIR', 'FILE', 'DEPLOY_DIR', 'CCACHE_DIR'}
taskwhitelist: None
Task dependencies: ['ARM_THUMB_OPT', 'DEFAULTTUNE', 'MACHINE', 'MACHINEOVERRIDES', 'PACKAGE_ARCH', 'RUST_PANIC_STRATEGY', 'TARGET_ARCH', 'TARGET_CC_ARCH', 'TARGET_FPU', 'TARGET_LLVM_CPU', 'TARGET_LLVM_FEATURES', 'TRANSLATED_TARGET_ARCH', 'TUNE_ARCH', 'TUNE_CCARGS', 'TUNE_FEATURES', 'TUNE_FEATURES:tune-core2-32', 'TUNE_FEATURES:tune-x86', 'X86ARCH32', 'X86ARCH64', 'arch_to_rust_target_arch', 'llvm_cpu', 'llvm_features', 'llvm_features_from_cc_arch', 'llvm_features_from_target_fpu', 'llvm_features_from_tune', 'prefix_for', 'rust_gen_target', 'sys_for', 'target_is_armv7']
basehash: d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b
List of dependencies for variable ARM_THUMB_OPT is set()
List of dependencies for variable DEFAULTTUNE is set()
List of dependencies for variable MACHINE is set()
List of dependencies for variable MACHINEOVERRIDES is {'MACHINE'}
List of dependencies for variable PACKAGE_ARCH is set()
List of dependencies for variable RUST_PANIC_STRATEGY is set()
List of dependencies for variable TARGET_ARCH is {'TUNE_ARCH'}
List of dependencies for variable TARGET_CC_ARCH is {'TUNE_CCARGS'}
List of dependencies for variable TARGET_FPU is set()
List of dependencies for variable TARGET_LLVM_CPU is {'llvm_cpu'}
List of dependencies for variable TARGET_LLVM_FEATURES is {'llvm_features'}
List of dependencies for variable TRANSLATED_TARGET_ARCH is {'TARGET_ARCH'}
List of dependencies for variable TUNE_ARCH is {'X86ARCH64', 'X86ARCH32'}
List of dependencies for variable TUNE_CCARGS is set()
List of dependencies for variable TUNE_FEATURES is {'DEFAULTTUNE', 'TUNE_FEATURES:tune-core2-32'}
List of dependencies for variable TUNE_FEATURES:tune-core2-32 is {'TUNE_FEATURES:tune-x86'}
List of dependencies for variable TUNE_FEATURES:tune-x86 is set()
List of dependencies for variable X86ARCH32 is set()
List of dependencies for variable X86ARCH64 is set()
List of dependencies for variable arch_to_rust_target_arch is set()
List of dependencies for variable llvm_cpu is {'PACKAGE_ARCH', 'TRANSLATED_TARGET_ARCH', 'TUNE_FEATURES'}
List of dependencies for variable llvm_features is {'llvm_features_from_target_fpu', 'llvm_features_from_cc_arch', 'llvm_features_from_tune'}
List of dependencies for variable llvm_features_from_cc_arch is {'TARGET_CC_ARCH'}
List of dependencies for variable llvm_features_from_target_fpu is {'TARGET_FPU'}
List of dependencies for variable llvm_features_from_tune is {'ARM_THUMB_OPT', 'TUNE_FEATURES', 'target_is_armv7', 'MACHINEOVERRIDES'}
List of dependencies for variable prefix_for is set()
List of dependencies for variable rust_gen_target is {'sys_for', 'prefix_for', 'arch_to_rust_target_arch', 'RUST_PANIC_STRATEGY'}
List of dependencies for variable sys_for is set()
List of dependencies for variable target_is_armv7 is {'TUNE_FEATURES', 'TARGET_ARCH', 'MACHINEOVERRIDES'}
Variable do_rust_gen_targets value is     wd = d.getVar('WORKDIR') + '/targets/'
    # It is important 'TARGET' is last here so that it overrides our less
    # informed choices for BUILD & HOST if TARGET happens to be the same as
    # either of them.
    for thing in ['BUILD', 'HOST', 'TARGET']:
        bb.debug(1, "rust_gen_target for " + thing)
        features = ""
        cpu = "generic"
        arch = d.getVar('{}_ARCH'.format(thing))
        if thing is "TARGET":
            # arm and armv7 have different targets in llvm
            if arch == "arm" and target_is_armv7(d):
                arch = 'armv7'
            features = d.getVar('TARGET_LLVM_FEATURES') or ""
            cpu = d.getVar('TARGET_LLVM_CPU')
        rust_gen_target(d, thing, wd, features, cpu, arch)

Variable ARM_THUMB_OPT value is None
Variable DEFAULTTUNE value is core2-32
Variable MACHINE value is qemux86copy
Variable MACHINEOVERRIDES value is ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemuall:${MACHINE}:qemux86
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{mx32} = Unset
Variable PACKAGE_ARCH value is ${BUILD_ARCH}
Variable RUST_PANIC_STRATEGY value is unwind
Variable TARGET_ARCH value is ${TUNE_ARCH}
Variable TARGET_CC_ARCH value is ${TUNE_CCARGS} --sysroot=${STAGING_DIR_TARGET}
Variable TARGET_FPU value is 
Variable TARGET_LLVM_CPU value is ${@llvm_cpu(d)}
Variable TARGET_LLVM_FEATURES value is ${@llvm_features(d)}
Variable TRANSLATED_TARGET_ARCH value is ${@d.getVar('TARGET_ARCH').replace("_", "-")}
Variable TUNE_ARCH value is ${@bb.utils.contains('TUNE_FEATURES', 'm32', '${X86ARCH32}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'mx32', '${X86ARCH64}', '', d)}${@bb.utils.contains('TUNE_FEATURES', 'm64', '${X86ARCH64}', '', d)}
TUNE_FEATURES{m32} = Set
TUNE_FEATURES{m64} = Unset
TUNE_FEATURES{mx32} = Unset
Variable TUNE_CCARGS value is  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse
Variable TUNE_FEATURES value is ${TUNE_FEATURES:tune-${DEFAULTTUNE}}
Variable TUNE_FEATURES:tune-core2-32 value is ${TUNE_FEATURES:tune-x86} core2
Variable TUNE_FEATURES:tune-x86 value is m32
Variable X86ARCH32 value is i686
Variable X86ARCH64 value is x86_64
Variable arch_to_rust_target_arch value is def arch_to_rust_target_arch(arch):
    if arch == "i586" or arch == "i686":
        return "x86"
    elif arch == "mipsel":
        return "mips"
    elif arch == "mip64sel":
        return "mips64"
    elif arch == "armv7":
        return "arm"
    elif arch == "powerpc64le":
        return "powerpc64"
    else:
        return arch

# generates our target CPU value
Variable llvm_cpu value is def llvm_cpu(d):
    cpu = d.getVar('PACKAGE_ARCH')
    target = d.getVar('TRANSLATED_TARGET_ARCH')

    trans = {}
    trans['corei7-64'] = "corei7"
    trans['core2-32'] = "core2"
    trans['x86-64'] = "x86-64"
    trans['i686'] = "i686"
    trans['i586'] = "i586"
    trans['powerpc'] = "powerpc"
    trans['mips64'] = "mips64"
    trans['mips64el'] = "mips64"
    trans['riscv64'] = "generic-rv64"
    trans['riscv32'] = "generic-rv32"

    if target in ["mips", "mipsel"]:
        feat = frozenset(d.getVar('TUNE_FEATURES').split())
        if "mips32r2" in feat:
            trans['mipsel'] = "mips32r2"
            trans['mips'] = "mips32r2"
        elif "mips32" in feat:
            trans['mipsel'] = "mips32"
            trans['mips'] = "mips32"

    try:
        return trans[cpu]
    except:
        return trans.get(target, "generic")

Variable llvm_features value is def llvm_features(d):
    return ','.join(llvm_features_from_tune(d) +
                    llvm_features_from_cc_arch(d) +
                    llvm_features_from_target_fpu(d))


## arm-unknown-linux-gnueabihf
Variable llvm_features_from_cc_arch value is def llvm_features_from_cc_arch(d):
    f = []
    feat = d.getVar('TARGET_CC_ARCH')
    if not feat:
        return []
    feat = frozenset(feat.split())

    if '-mmmx' in feat:
        f.append("+mmx")
    if '-msse' in feat:
        f.append("+sse")
    if '-msse2' in feat:
        f.append("+sse2")
    if '-msse3' in feat:
        f.append("+sse3")
    if '-mssse3' in feat:
        f.append("+ssse3")
    if '-msse4.1' in feat:
        f.append("+sse4.1")
    if '-msse4.2' in feat:
        f.append("+sse4.2")
    if '-msse4a' in feat:
        f.append("+sse4a")
    if '-mavx' in feat:
        f.append("+avx")
    if '-mavx2' in feat:
        f.append("+avx2")

    return f

Variable llvm_features_from_target_fpu value is def llvm_features_from_target_fpu(d):
    # TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
    # ABI. There is no option for hard.

    fpu = d.getVar('TARGET_FPU', True)
    return ["+soft-float"] if fpu == "soft" else []

Variable llvm_features_from_tune value is def llvm_features_from_tune(d):
    f = []
    feat = d.getVar('TUNE_FEATURES')
    if not feat:
        return []
    feat = frozenset(feat.split())

    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    if 'vfpv4' in feat:
        f.append("+vfp4")
    if 'vfpv3' in feat:
        f.append("+vfp3")
    if 'vfpv3d16' in feat:
        f.append("+d16")

    if 'vfpv2' in feat or 'vfp' in feat:
        f.append("+vfp2")

    if 'neon' in feat:
        f.append("+neon")

    if 'mips32' in feat:
        f.append("+mips32")

    if 'mips32r2' in feat:
        f.append("+mips32r2")

    if target_is_armv7(d):
        f.append('+v7')

    if ('armv6' in mach_overrides) or ('armv6' in feat):
        f.append("+v6")
    if 'armv5te' in feat:
        f.append("+strict-align")
        f.append("+v5te")
    elif 'armv5' in feat:
        f.append("+strict-align")
        f.append("+v5")

    if ('armv4' in mach_overrides) or ('armv4' in feat):
        f.append("+strict-align")

    if 'dsp' in feat:
        f.append("+dsp")

    if 'thumb' in feat:
        if d.getVar('ARM_THUMB_OPT') == "thumb":
            if target_is_armv7(d):
                f.append('+thumb2')
            f.append("+thumb-mode")

    if 'cortexa5' in feat:
        f.append("+a5")
    if 'cortexa7' in feat:
        f.append("+a7")
    if 'cortexa9' in feat:
        f.append("+a9")
    if 'cortexa15' in feat:
        f.append("+a15")
    if 'cortexa17' in feat:
        f.append("+a17")
    if ('riscv64' in feat) or ('riscv32' in feat):
        f.append("+a,+c,+d,+f,+m")
    return f

# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
Variable prefix_for value is def prefix_for(d, thing):
    return d.getVar('{}_PREFIX'.format(thing))

# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
Variable rust_gen_target value is def rust_gen_target(d, thing, wd, features, cpu, arch):
    import json
    sys = sys_for(d, thing)
    prefix = prefix_for(d, thing)

    features = features or d.getVarFlag('FEATURES', arch) or ""
    features = features.strip()

    # build tspec
    tspec = {}
    tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
    tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
    tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch))
    tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
    tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
    tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
    tspec['arch'] = arch_to_rust_target_arch(arch)
    tspec['os'] = "linux"
    if "musl" in tspec['llvm-target']:
        tspec['env'] = "musl"
    else:
        tspec['env'] = "gnu"
    if "riscv64" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "lp64d"
    if "riscv32" in tspec['llvm-target']:
        tspec['llvm-abiname'] = "ilp32d"
    tspec['vendor'] = "unknown"
    tspec['target-family'] = "unix"
    tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
    tspec['ar'] = "{}ar".format(prefix)
    tspec['cpu'] = cpu
    if features != "":
        tspec['features'] = features
    tspec['dynamic-linking'] = True
    tspec['executables'] = True
    tspec['linker-is-gnu'] = True
    tspec['linker-flavor'] = "gcc"
    tspec['has-rpath'] = True
    tspec['has-elf-tls'] = True
    tspec['position-independent-executables'] = True
    tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")

    # write out the target spec json file
    with open(wd + sys + '.json', 'w') as f:
        json.dump(tspec, f, indent=4)

Variable sys_for value is def sys_for(d, thing):
    return d.getVar('{}_SYS'.format(thing))

Variable target_is_armv7 value is def target_is_armv7(d):
    '''Determine if target is armv7'''
    # TUNE_FEATURES may include arm* even if the target is not arm
    # in the case of *-native packages
    if d.getVar('TARGET_ARCH') != 'arm':
        return False

    feat = d.getVar('TUNE_FEATURES')
    feat = frozenset(feat.split())
    mach_overrides = d.getVar('MACHINEOVERRIDES')
    mach_overrides = frozenset(mach_overrides.split(':'))

    v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
    if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
        return False
    else:
        return True

# Responsible for taking Yocto triples and converting it to Rust triples
Tasks this task depends on: ['/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch']
This task depends on the checksums of files: []
Hash for dependent task /ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_patch is ec4a9ed86df1c8c2b27bb1e422655cb2cedc1d9a36b720fab636b9af9e3cca48
Computed base hash is d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b and from file d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b
Computed task hash is 83d1a26ebe7e2df3f496024a297ba782e145e6982457e09102d5e7c4fbf1b3b7

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-21  2:48           ` Randy MacLeod
@ 2021-08-21  8:46             ` Richard Purdie
  0 siblings, 0 replies; 23+ messages in thread
From: Richard Purdie @ 2021-08-21  8:46 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar

I had a look at this. I agree the output from the test isn't great so I:

oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs -j 1

then since you want to pick the earliest difference:

bitbake-diffsigs ../build-st-3665/tmp-sstatesamehash*/stamps/x86_64-linux/cargo-native/1.54.0-r0.do_configure.sigdata.*

since if a -native is differing, you'd start there. That reports:

Hash for dependent task cargo/cargo_1.54.0.bb:do_prepare_recipe_sysroot:virtual:native changed from 0eb4be5c1555696edece016e7497ed4b7a24ed1e601e4625187232b527ee9cbb to 6763576bba0c95e56b40093399df3f96ba386638f0bbe1cb405541f120128a92

so ok:

bitbake-diffsigs ../build-st-3665/tmp-sstatesamehash*/stamps/x86_64-linux/cargo-native/1.54.0-r0.do_prepare*.sigdata.*

Hash for dependent task rust/rust_1.54.0.bb:do_populate_sysroot:virtual:native changed from d0e0b66258d63cf6a75427dc8ee99f365edc2858087dd251924f533ead085237 to 5a7ea7762b43c59386f4f8914b98d17d4381f00f08685e429d22121157e3c58c

So rust-native comes before cargo-native. Lets try the earliest rust-native we can see:

bitbake-diffsigs ../build-st-3665/tmp-sstatesamehash*/stamps/x86_64-linux/rust-native/1.54.0-r0.do_configure*.sigdata.*
NOTE: Starting bitbake server...
basehash changed from d4562518270a3e161b7e4fef4c7b39a66ca6e32e3ae3612f4ae1623501701278 to 01cacaecd08c1d41745eaf981c5f8896d48faf755b596bfca62f52a4c35f4ea7
Variable http_proxy value changed from 'http://example.com/' to ''

So it still thinks http_proxy is an issue. Why?

bitbake-dumpsig ../build-st-3665/tmp-sstatesamehash/stamps/x86_64-linux/rust-native/1.54.0-r0.do_configure*.sigdata.* | grep http

Task dependencies: ['AR', 'AS', 'B', 'BASEDEPENDS', 'BASELIB', 'BUILD_AR',
'BUILD_AS', 'BUILD_AS_ARCH', 'BUILD_CC', 'BUILD_CCLD', 'BUILD_CC_ARCH',
'BUILD_CFLAGS', 'BUILD_CPP', 'BUILD_CPPFLAGS', 'BUILD_CXX', 'BUILD_CXXFLAGS',
'BUILD_FC', 'BUILD_LD', 'BUILD_LDFLAGS', 'BUILD_LD_ARCH', 'BUILD_NM',
'BUILD_OPTIMIZATION', 'BUILD_OS', 'BUILD_PREFIX', 'BUILD_RANLIB', 'BUILD_STRIP',
'BUILD_SYS', 'BUILD_VENDOR', 'CARGO_DISABLE_BITBAKE_VENDORING', 'CARGO_HOME',
'CARGO_RUST_TARGET_CCLD', 'CARGO_VENDORING_DIRECTORY', 'CC', 'CCLD', 'CFLAGS',
'CONFIG_SITE', 'CPP', 'CPPFLAGS', 'CXX', 'CXXFLAGS', 'D', 'DEBUG_BUILD',
'DEPENDS', 'DISABLE_STATIC', 'EXTERNALSRC', 'EXTRA_NATIVE_PKGCONFIG_PATH',
'EXTRA_OECARGO_PATHS', 'EXTRA_OECONF', 'FC', 'FORCE_CRATE_HASH', 'HOST_ARCH',
'HOST_OS', 'HOST_PREFIX', 'HOST_SYS', 'HOST_VENDOR',
'INHIBIT_DEFAULT_RUST_DEPS', 'INSANE_SKIP', 'LC_ALL', 'LD', 'LDFLAGS', 'MAKE',
'MLPREFIX', 'NATIVE_PACKAGE_PATH_SUFFIX', 'NM', 'OBJCOPY', 'OBJDUMP', 'P',
'PACKAGECONFIG', 'PERL_HASH_SEED', 'PKG_CONFIG_ALLOW_CROSS', 'PKG_CONFIG_DIR',
'PKG_CONFIG_DISABLE_UNINSTALLED', 'PKG_CONFIG_LIBDIR', 'PKG_CONFIG_PATH',
'PKG_CONFIG_SYSROOT_DIR', 'PN', 'PSEUDO_DISABLED', 'PV', 'PYTHONHASHSEED',
'QA_LOGFILE', 'QA_SANE', 'RANLIB', 'READELF', 'RECIPE_SYSROOT_NATIVE',
'RUSTSRC', 'RUST_ALTERNATE_EXE_PATH', 'RUST_BUILD_CC', 'RUST_BUILD_CCLD',
'RUST_BUILD_CXX', 'RUST_TARGET_CC', 'RUST_TARGET_CCLD', 'RUST_TARGET_CXX',
'RUST_TARGET_PATH', 'S', 'SNAPSHOT_BUILD_SYS', 'SOURCE_DATE_EPOCH_FALLBACK',
'STAGING_BASE_LIBDIR_NATIVE', 'STAGING_BINDIR_NATIVE', 'STAGING_DATADIR',
'STAGING_DATADIR_NATIVE', 'STAGING_DIR_NATIVE', 'STAGING_ETCDIR_NATIVE',
'STAGING_INCDIR_NATIVE', 'STAGING_LIBDIR', 'STAGING_LIBDIR_NATIVE',
'STAGING_SBINDIR_NATIVE', 'STRINGS', 'STRIP', 'T', 'TARGET_ARCH', 'TARGET_OS',
'TARGET_SYS', 'TARGET_VENDOR', 'TZ', 'UNKNOWN_CONFIGURE_WHITELIST',
'WRAPPER_DIR', 'WRAPPER_TARGET_AR', 'WRAPPER_TARGET_CC', 'WRAPPER_TARGET_CCLD',
'WRAPPER_TARGET_CXX', 'WRAPPER_TARGET_LDFLAGS', 'YOCTO_ALTERNATE_EXE_PATH',
'YOCTO_ALTERNATE_MULTILIB_NAME', 'base_bindir', 'base_libdir',
'base_libdir_native', 'base_prefix', 'base_sbindir', 'bindir', 'bindir_native',
'cargo_common_do_configure', 'datadir', 'datadir_native', 'do_qa_configure',
'docdir', 'exec_prefix', 'http_proxy', 'includedir', 'includedir_native',
'infodir', 'libdir', 'libdir_native', 'libexecdir', 'localstatedir',
'lt_cv_sys_lib_dlsearch_path_spec', 'mandir', 'nonarch_base_libdir',
'nonarch_libdir', 'oldincludedir', 'package_qa_handle_error',
'package_qa_write_error', 'prefix', 'prefix_native', 'root_prefix',
'rust_base_dep', 'rustlibdir', 'sbindir', 'sbindir_native', 'servicedir',
'setup_cargo_environment', 'sharedstatedir', 'sysconfdir', 'sysconfdir_native',
'systemd_system_unitdir', 'systemd_unitdir', 'systemd_user_unitdir']
List of dependencies for variable cargo_common_do_configure is {'mandir',
'PKG_CONFIG_PATH', 'RUST_TARGET_PATH', 'BUILD_CXXFLAGS',
'CARGO_VENDORING_DIRECTORY', 'RANLIB', 'BUILD_LDFLAGS', 'TZ', 'BUILD_FC',
'PERL_HASH_SEED', 'BUILD_CPPFLAGS', 'S', 'base_prefix', 'datadir', 'LD',
'CPPFLAGS', 'SOURCE_DATE_EPOCH_FALLBACK', 'BUILD_CXX', 'libexecdir',
'nonarch_base_libdir', 'CARGO_RUST_TARGET_CCLD',
'CARGO_DISABLE_BITBAKE_VENDORING', 'AR', 'BUILD_CFLAGS',
'PKG_CONFIG_ALLOW_CROSS', 'http_proxy', 'lt_cv_sys_lib_dlsearch_path_spec',
'STAGING_ETCDIR_NATIVE', 'PKG_CONFIG_DIR', 'systemd_unitdir', 'MAKE',
'HOST_SYS', 'CPP', 'WRAPPER_TARGET_CCLD', 'RUST_BUILD_CCLD', 'FC',
'YOCTO_ALTERNATE_MULTILIB_NAME', 'LDFLAGS', 'CXXFLAGS', 'BUILD_LD', 'BUILD_NM',
'prefix', 'BUILD_AR', 'systemd_system_unitdir', 'libdir', 'WRAPPER_TARGET_AR',
'EXTERNALSRC', 'WRAPPER_TARGET_LDFLAGS', 'CONFIG_SITE', 'CFLAGS', 'STRIP',
'oldincludedir', 'base_bindir', 'systemd_user_unitdir', 'infodir', 'READELF',
'BUILD_CC', 'CARGO_HOME', 'WRAPPER_TARGET_CXX', 'CXX', 'BUILD_SYS', 'CC',
'docdir', 'BUILD_CPP', 'BUILD_RANLIB', 'WRAPPER_TARGET_CC', 'NM', 'bindir',
'base_libdir', 'rustlibdir', 'includedir', 'B', 'exec_prefix', 'sbindir',
'LC_ALL', 'OBJDUMP', 'YOCTO_ALTERNATE_EXE_PATH', 'FORCE_CRATE_HASH',
'nonarch_libdir', 'PKG_CONFIG_SYSROOT_DIR', 'PSEUDO_DISABLED', 'BUILD_AS',
'CCLD', 'PKG_CONFIG_LIBDIR', 'EXTRA_OECARGO_PATHS', 'BUILD_STRIP',
'PKG_CONFIG_DISABLE_UNINSTALLED', 'sysconfdir', 'base_sbindir', 'AS',
'sharedstatedir', 'BUILD_CCLD', 'STRINGS', 'localstatedir', 'PYTHONHASHSEED',
'OBJCOPY', 'servicedir'}
List of dependencies for variable http_proxy is set()
	[http]
	# Multiplexing can't be enabled because http2 can't be enabled
	# if [ -n "${http_proxy}" ]; then
	#	echo "proxy = \"${http_proxy}\"" >> ${CARGO_HOME}/config

i.e. the lines you commented out are still there. Bitbake's shell parser isn't
clever enough to know to ignore that.

If you delete the lines, things are much happier!

Cheers,

Richard






^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]           ` <169D3274AAECC435.19323@lists.openembedded.org>
@ 2021-08-22  3:12             ` Randy MacLeod
  2021-08-22 11:19               ` Richard Purdie
       [not found]               ` <169D9CED4738B0BB.18298@lists.openembedded.org>
  0 siblings, 2 replies; 23+ messages in thread
From: Randy MacLeod @ 2021-08-22  3:12 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer, Richard Purdie
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni

[-- Attachment #1: Type: text/plain, Size: 19806 bytes --]

On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
> On 2021-08-20 6:06 a.m., Randy MacLeod wrote:
>> Added Trevor who may be working on upgrading python-cryptography.
>> Added Anatol since he was interested last time we worked on merging.
>>
>> Again, let me know if you want to be dropped by replying privately.
>> No one from the meta-rust community responded last time so I'm
>> assuming that y'all are just on vacation! ;-)
>>
>> On 2021-08-17 10:52 a.m., Randy MacLeod wrote:
>>> On 2021-08-13 11:22 a.m., Vinay Kumar wrote:
>>>> Hi Randy,
>>>>
>>>>>> Vinay or I will look into glibc/qemuppc64
>>>>>> if no one else is working on that.
>>>>
>>>> The failure is due to the below error in libstd-rs package build.
>>>> "error: unrecognized arch "powerpc64le" in target specification"
>>>>
>>>> The reason for this is "arch": "powerpc64le" from the below target
>>>> specific file.
>>>>
>>
>> ,,,
>>
>>>
>>> Thanks Vinay, applied.
>>>
>>> I'll push a new branch to poky-contrib later today.
>>
>>
>> I fixed and worked-around a few issues and pushed a new branch:
>>
>>
>> http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a 
>>
>>
>> 1. There are only a few new commits including Vinay's:
>>
>>    757da4cbf1e rust: remove Rust version 1.51.0 toolchain
>>
>>    a4808f787ca cargo_common: remove http_proxy
>>
>>    b6941135c00 rust-common.inc: Fix build failure with qemuppc64.
>>
>>
>> If anyone wants to help by doing test builds, trying to generate and use
>>
>> and SDK with rust in it or anything else, that'd be great.
>>
>>
>>
>> Alex also ran a test build on the Autobuilder:
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/83/builds/2439
>>
>>
>>
>> but I have yet to look at the failed stages in the run.
>>
>>
>> Testing logs and debugging notes below for those interested.
>>
>> ../Randy
>>
>>
>>
>> The test:
>>    oe-selftest -r distrodata.Distrodata.test_maintainers
>>
>>
>> is fixed by creating maintainer records for all rusty packages
>> and by removing the older version of the rust toolchain:
>>    757da4cbf1e rust: remove Rust version 1.51.0 toolchain
>>
>>
>>
>> I suppose that if the meta-rust users want to keep an older TC
>> it can live in meta-rust.
>>
>> Then, these tests:
>>
>>    oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs
>>
>>    oe-selftest -r sstatetests.SStateTests.test_sstate_sametune_samesigs
>>
>>
>> were failing. One issue was fixed by the work-around of:
>>
>>    a4808f787ca cargo_common: remove http_proxy
>>
>>
>> Debugging the next step was a challenge since I hadn't worked
>> with diffsigs before. Then to simplify, I removed all rusty .bb package
>>    ( by mv foo.bb 
>> <https://urldefense.com/v3/__http://foo.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWpsy_PUvWQ$> 
>> foo.bb.hide)
>> until I was down to the first recipe in the dependency tree:
>>
>>    rust-llvm-native.
>>
>> and then running:
>>   oe-selftest -r sstatetests.SStateTests.test_sstate_noop_samesigs \
>> sstatetests.SStateTests.test_sstate_sametune_samesigs \
>>
>>
>>
>> 2021-08-19 17:54:12,878 - oe-selftest - INFO
>> - Ran 2 tests in 142.010s
>>
>> - OK
>>
>> - RESULTS:
>>
>> - RESULTS - sstatetests.SStateTests.test_sstate_noop_samesigs:
>>       PASSED (41.45s)
>>
>> - RESULTS - sstatetests.SStateTests.test_sstate_sametune_samesigs:
>>       PASSED (98.89s)
>>
>> - SUMMARY:
>>
>> - oe-selftest () - Ran 2 tests in 142.012s
>>
>> - oe-selftest - OK - All required tests passed
>>     (successes=2, skipped=0, failures=0, errors=0)
>>
>>
>> adding the next self consistent group of package:
>>    cargo/cargo-cross-canadian_1.54.0.bb 
>> <https://urldefense.com/v3/__http://cargo-cross-canadian_1.54.0.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWpvCxIrDwA$> 
>>
>>
>>    cargo/cargo_1.54.0.bb 
>> <https://urldefense.com/v3/__http://cargo_1.54.0.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWptRWUAvyA$> 
>>
>>
>>    rust/libstd-rs_1.54.0.bb 
>> <https://urldefense.com/v3/__http://libstd-rs_1.54.0.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWpuNZ1zxTA$> 
>>
>>
>>    rust/rust-cross-canadian_1.54.0.bb 
>> <https://urldefense.com/v3/__http://rust-cross-canadian_1.54.0.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWpvu8Kgohw$> 
>>
>>
>>    rust/rust-cross_1.54.0.bb 
>> <https://urldefense.com/v3/__http://rust-cross_1.54.0.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWpuYvgjUig$> 
>>
>>
>>    rust/rust-tools-cross-canadian_1.54.0.bb 
>> <https://urldefense.com/v3/__http://rust-tools-cross-canadian_1.54.0.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWpv42uDIpQ$> 
>>
>>
>>    rust/rust_1.54.0.bb 
>> <https://urldefense.com/v3/__http://rust_1.54.0.bb__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWps4C8-W7g$> 
>>
>>
>>
>>
>> I see another http_proxy failure that seems to require a feature
>> drop in cargo:
>>
>> https://github.com/rust-lang/cargo/blob/master/src/cargo/ops/registry.rs#L524 
>>
>>
>> Patching out a feature doesn't seem like a good idea but
>> maybe someone else has a better one?
>>
>> To see if there were other problems lurking menacingly behind the proxy
>> error, I disabled the http_proxy test in:
>>     meta/lib/oeqa/selftest/cases/sstatetests.py 
>> <https://urldefense.com/v3/__http://sstatetests.py__;!!AjveYdw8EvQ!IgwYWcWmCub5aQLbkRB6aDq3QRH6tsJ6nak3hdCaB0jy1kp9MmL2hQHzPNhpWptCntmNRQ$> 
>>
>>
>>
>>    -http_proxy = "http://example.com/"
>>
>>    +http_proxy = ""
>>
>>
>> and ran again to find:
>>
>> - RESULTS - sstatetests.SStateTests.test_sstate_noop_samesigs:
>>       PASSED (50.63s)
>> - RESULTS - sstatetests.SStateTests.test_sstate_sametune_samesigs:
>>       FAILED (160.05s)
>>
>> so that's somewhat encouraging but there is still the error:
>>
>>      File ".../meta/lib/oeqa/selftest/cases/sstatetests.py", line 449,
>>    in test_sstate_sametune_samesigs
>>
>>      self.assertCountEqual(files1, files2)
>>
>> AssertionError: Element counts were not equal:
>>
>> First has 1, Second has 0:
>> '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/\
>> tmp-sstatesamehash/stamps/x86_64-linux/\
>> lib32-rust-cross-i686/1.54.0-r0.do_rust_gen_targets.sigdata.\
>> fc54579cc139c777172242c3da3e0'
>>
>>
>> First has 1, Second has 0:
>> '/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a-st/\
>> tmp-sstatesamehash/stamps/x86_64-linux/\
>> lib32-rust-cross-i686/1.54.0-r0.do_compile.sigdata.\
>> 86cb5a1346b0615cb21fab3c0110cc964ecced'
>>
>>
>> ... lots of similar lines of diffsig info ...
>>
>>
>> Hacking the test to not clean up and
>> running bitbake-dumpsigs on the two sig files for the first error,
>> I get the two files attached. I also attached the
>>    tmp/log/oe-selftest-results.log file.
>>
>> That's it for now.
>
>
> I think I've gotten to the bottom of a chain of sigs that differ in 
> part due to:
> "Hash for dependent task" differing and found that on leaf node is:
>
> stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_target
>
> See below for my notes and my assertion/question about the next step 
> needing
> to be deterministically ordering the elements used in rust_gen_target.
>
> ../Randy
>
With a patch from Richard, and the http_proxy check removed,

$ git diff | grep "^[+-]"
--- a/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
-http_proxy = "http://example.com/"
+http_proxy = ""

we have fixed the oe-selftest that was failing.
Any volunteers to stub out the http[s]_proxy code in cargo ?

I've written up a commit log that could use some review and pushed an 
update to:
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a


I starting to work on the YP autobuilder issues.

I can build:
    $ bitbake cargo-cross-canadian-x86-64

Adding this:

require conf/multilib.conf
MULTILIBS = 'multilib:lib32'
DEFAULTTUNE:virtclass-multilib-lib32 = 'x86'

to my local.conf, I see that:

$ bitbake lib32-rust

fails with the error:
---
failed to execute command: 
"/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a/tmp/work/x86-pokymllib32-linux/lib32-rust/1.54.0-r0/lib32-recipe-sysroot/usr/lib/llvm-rust/bin/llvm-config" 
"--bindir"
| error: No such file or directory (os error 2)
---

Khem, a MUSL build fails:

$ TCLIBC=musl  bitbake rust-hello-world
as shown below (1) but I'll see if that's reproducible with a clean build.


I've also rebased to poky master:
   3fd2dff4eb3 (origin/master, origin/HEAD, master) ref-manual: Fix 
reference to bbappend section of dev-manual
and the two key oe-selftests still pass with the http_proxy work-around
as does core-image-minimal+rust-hello-world (2) so I've pushed a new 
branch:

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-21-2021-a


Richard, Alex,

   Is it worth another AB run?

../Randy


1)

$ TCLIBC=musl  bitbake rust-hello-world

ERROR: rust-cross-x86_64-1.54.0-r0 do_prepare_recipe_sysroot: Error 
executing a python function in exec_python_func() autogenerated:

The stack trace of python calls that resulted in this exception/failure 
was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
      0001:
  *** 0002:extend_recipe_sysroot(d)
      0003:
File: 
'/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/classes/staging.bbclass', 
lineno: 582, function: extend_recipe_sysroot
      0578:                    if "/bin/" in l or "/sbin/" in l:
      0579:                        # defer /*bin/* files until last in 
case they need libs
      0580:                        binfiles[l] = (targetdir, dest)
      0581:                    else:
  *** 0582:                        staging_copyfile(l, targetdir, dest, 
postinsts, seendirs)
      0583:
      0584:    # Handle deferred binfiles
      0585:    for l in binfiles:
      0586:        (targetdir, dest) = binfiles[l]
File: 
'/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/classes/staging.bbclass', 
lineno: 149, function: staging_copyfile
      0145:    if os.path.islink(c):
      0146:        linkto = os.readlink(c)
      0147:        if os.path.lexists(dest):
      0148:            if not os.path.islink(dest):
  *** 0149:                raise OSError(errno.EEXIST, "Link %s already 
exists as a file" % dest, dest)
      0150:            if os.readlink(dest) == linkto:
      0151:                return dest
      0152:            raise OSError(errno.EEXIST, "Link %s already 
exists to a different location? (%s vs %s)" % (dest, os.readlink(dest), 
linkto), dest)
      0153:        os.symlink(linkto, dest)
Exception: FileExistsError: [Errno 17] Link 
/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a/tmp/work/x86_64-linux/rust-cross-x86_64/1.54.0-r0/recipe-sysroot/usr/include/c++/11.2.0/x86_64-poky-linux 
already ex'

ERROR: Logfile of failure stored in: 
/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-19-a/tmp/work/x86_64-linux/rust-cross-x86_64/1.54.0-r0/temp/log.do_prepare_recipe_sysroot.192760 

ERROR: Task 
(/ala-lpggp31/rmacleod/src/distro/yocto/poky-contrib.git/meta/recipes-devtools/rust/rust-cross_1.54.0.bb:do_prepare_recipe_sysroot) 
failed with exit code '1'


2) There is a warning for rust-native:

grep WARNING 
tmp/work/x86_64-linux/rust-native/1.54.0-r0/temp/log.do_populate_sysroot 
| fmt
WARNING: File
'/ala-lpggp31/rmacleod/src/distro/yocto/b/aug-21-a/tmp/work/x86_64-linux/rust-native/1.54.0-r0/recipe-sysroot-native/usr/lib/rustlib/x86_64-linux/bin/rust-llvm-dwp' 

from rust-native was already stripped, this will prevent future debugging!


>
> I did learn a bit about this test code that is failing:
>
> https://git.openembedded.org/openembedded-core/tree/meta/lib/oeqa/selftest/cases/sstatetests.py#n404
>
> as the comment explains:
>
> |
> The sstate checksums of two identical machines (using the same tune) 
> should be the
> same, apart from changes within the machine specific stamps directory. 
> We use the
> qemux86copy machine to test this. Also include multilibs in the test.|
>
> so the good news is that there are: 23185files being checked and
> only 43 are different and if you look at what packages and arches
> differ it's:
>
> x86_64-linux/lib32-rust-cross-i686
> x86_64-linux/rust-cross-i686
> core2-32-poky-linux/rust
> core2-32-poky-linux/libstd-rs
> x86-pokymllib32-linux/lib32-libstd-rs
> x86-pokymllib32-linux/lib32-rust
>
> Note that these are all 32bit multilib builds.
> Maybe that's not so important for the initial merge to oe-core... Richard?
>
>
> Looking at core2-32-poky-linux/rust the stages that have different 
> signatures are:
>
> do_configure
> do_populate_sysroot
> do_package_qa
> do_install
> do_package
> do_packagedata
> do_compile
> do_prepare_recipe_sysroot
> do_package_write_rpm
>
> 9 of the 19 stages. Ok so maybe it's not great news after all. ;-)
>
>
> I'll kept digging down through the tree of dependant diffsigs
> since when looking at do_prepare_recipe_sysroot, it was clear
> that a key difference in it's signatures was due to:
>   "Hash for dependent task ..."
> differing. Finally I found a set of signatures that did not have a
> diff in the dependent task:
>
> stamps/x86_64-linux/rust-cross-i686/1.54.0-r0.do_rust_gen_target*
>
> The simplified diff is below and the files are attached.
>
> There are a variety of variables that differ only in order, such as:
>
> -List of dependencies for variable TUNE_FEATURES is 
> {'TUNE_FEATURES:tune-core2-32', 'DEFAULTTUNE'}
> +List of dependencies for variable TUNE_FEATURES is {'DEFAULTTUNE', 
> 'TUNE_FEATURES:tune-core2-32'}
>
> I assume the next step is to find out where those variables are produced:
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/tree/meta/recipes-devtools/rust/rust-common.inc?h=rmacleod/rust-redo-aug-10-2021-a#n292
>
> and to introduce deterministic order when building them.
>
> ../Randy
>
>
> diff -Naur x86_64-rust-cross-i686-rust-gen-targets/* | grep "^[+-]" | 
> cut -c -166
> --- 
> x86_64-rust-cross-i686-rust-gen-targets/1.rust-cross-i686.do_rust_gen_target 
> 2021-08-20 22:19:19.883320107 -0400
> +++ 
> x86_64-rust-cross-i686-rust-gen-targets/2.rust-cross-i686.do_rust_gen_target 
> 2021-08-20 22:19:19.651319015 -0400
> -basewhitelist: {'CCACHE_TOP_DIR', 'SOURCE_DATE_EPOCH', 
> 'SDKPKGSUFFIX', 'BB_WORKERCONTEXT', 'FILESEXTRAPATHS', 'HOME', 
> 'OMP_NUM_THREADS', 'PRSERV_DUMPDIR', 'PRSERV_HO
> +basewhitelist: {'PWD', 'SSTATE_HASHEQUIV_OWNER', 'STAMPS_DIR', 
> 'CCACHE', 'BB_WORKERCONTEXT', 'COREBASE', 'BBPATH', 'HOME', 'TMPDIR', 
> 'ERROR_QA', 'SSTATE_HASHEQUIV_ME
> -basehash: 
> bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab
> +basehash: 
> d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b
> -List of dependencies for variable TUNE_ARCH is {'X86ARCH32', 
> 'X86ARCH64'}
> +List of dependencies for variable TUNE_ARCH is {'X86ARCH64', 
> 'X86ARCH32'}
> -List of dependencies for variable TUNE_FEATURES is 
> {'TUNE_FEATURES:tune-core2-32', 'DEFAULTTUNE'}
> +List of dependencies for variable TUNE_FEATURES is {'DEFAULTTUNE', 
> 'TUNE_FEATURES:tune-core2-32'}
> -List of dependencies for variable llvm_cpu is {'PACKAGE_ARCH', 
> 'TUNE_FEATURES', 'TRANSLATED_TARGET_ARCH'}
> -List of dependencies for variable llvm_features is 
> {'llvm_features_from_cc_arch', 'llvm_features_from_tune', 
> 'llvm_features_from_target_fpu'}
> +List of dependencies for variable llvm_cpu is {'PACKAGE_ARCH', 
> 'TRANSLATED_TARGET_ARCH', 'TUNE_FEATURES'}
> +List of dependencies for variable llvm_features is 
> {'llvm_features_from_target_fpu', 'llvm_features_from_cc_arch', 
> 'llvm_features_from_tune'}
> -List of dependencies for variable llvm_features_from_tune is 
> {'target_is_armv7', 'TUNE_FEATURES', 'ARM_THUMB_OPT', 'MACHINEOVERRIDES'}
> +List of dependencies for variable llvm_features_from_tune is 
> {'ARM_THUMB_OPT', 'TUNE_FEATURES', 'target_is_armv7', 'MACHINEOVERRIDES'}
> -List of dependencies for variable rust_gen_target is {'sys_for', 
> 'arch_to_rust_target_arch', 'RUST_PANIC_STRATEGY', 'prefix_for'}
> +List of dependencies for variable rust_gen_target is {'sys_for', 
> 'prefix_for', 'arch_to_rust_target_arch', 'RUST_PANIC_STRATEGY'}
> -List of dependencies for variable target_is_armv7 is {'TARGET_ARCH', 
> 'TUNE_FEATURES', 'MACHINEOVERRIDES'}
> +List of dependencies for variable target_is_armv7 is 
> {'TUNE_FEATURES', 'TARGET_ARCH', 'MACHINEOVERRIDES'}
> -Variable MACHINE value is qemux86
> -Variable MACHINEOVERRIDES value is 
> ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', 
> d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemua
> +Variable MACHINE value is qemux86copy
> +Variable MACHINEOVERRIDES value is 
> ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', 
> d)}${@bb.utils.contains('TUNE_FEATURES', 'm32', 'x86:', '', d)}qemua
> -Computed base hash is 
> bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab and 
> from file 
> bd66629631e757dcccfc103c13e7de6ac3568677df3ef5ad47dd99e62427caab
> -Computed task hash is 
> 448a8113230a16ac5d606de18989f98b3700edeb3e7956c6f02207aa76a5d4f3
> +Computed base hash is 
> d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b and 
> from file 
> d697cf2cbb5807e83f8b55de8012d5bb9ab8674f4bbf95587fc3ca822a47269b
> +Computed task hash is 
> 83d1a26ebe7e2df3f496024a297ba782e145e6982457e09102d5e7c4fbf1b3b7
>
>
>>
>>
>> ../Randy
>>
>>
>>>
>>> ../Randy
>>>>
>>>> On Fri, Aug 13, 2021 at 8:50 PM Vinay Kumar 
>>>> <vinay.m.engg@gmail.com> wrote:
>>>>>
>>>>> rust-common.inc: Fix build failure with qemuppc64.
>>>>>
>>>>> The glibc build of "rust-hello-world" throws error in libstd-rs 
>>>>> package.
>>>>> error: unrecognized arch "powerpc64le" in target specification
>>>>>
>>>>> The same got fixed by changing the arch to "powerpc64".
>>>>>
>>>>> Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
>>>>> ---
>>>>>   meta/recipes-devtools/rust/rust-common.inc | 2 ++
>>>>>   1 file changed, 2 insertions(+)
>>>>>
>>>>> diff --git a/meta/recipes-devtools/rust/rust-common.inc 
>>>>> b/meta/recipes-devtools/rust/rust-common.inc
>>>>> index 350517c723..f574152815 100644
>>>>> --- a/meta/recipes-devtools/rust/rust-common.inc
>>>>> +++ b/meta/recipes-devtools/rust/rust-common.inc
>>>>> @@ -248,6 +248,8 @@ def arch_to_rust_target_arch(arch):
>>>>>           return "mips64"
>>>>>       elif arch == "armv7":
>>>>>           return "arm"
>>>>> +    elif arch == "powerpc64le":
>>>>> +        return "powerpc64"
>>>>>       else:
>>>>>           return arch
>>>>>
>>>>> -- 
>>>>> 2.31.1
>>>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>
> -- 
> # Randy MacLeod
> # Wind River Linux
>
> 
>

-- 
# Randy MacLeod
# Wind River Linux


[-- Attachment #2: Type: text/html, Size: 32197 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-22  3:12             ` Randy MacLeod
@ 2021-08-22 11:19               ` Richard Purdie
  2021-08-22 12:45                 ` Randy MacLeod
       [not found]               ` <169D9CED4738B0BB.18298@lists.openembedded.org>
  1 sibling, 1 reply; 23+ messages in thread
From: Richard Purdie @ 2021-08-22 11:19 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni

On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
> On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
> With a patch from Richard, and the http_proxy check removed,
> $ git diff | grep "^[+-]"
>  --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
>  +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
>  -http_proxy = "http://example.com/"
>  +http_proxy = ""
>  
> we have fixed the oe-selftest that was failing.
>  Any volunteers to stub out the http[s]_proxy code in cargo ?
> I've written up a commit log that could use some review and pushed an update
> to:
>    
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a
> 


I'm not sure you need to change cargo, I think if you remove the bit in the
bbclass that injects http_proxy, the tests are ok. That will perhaps break
anyone using proxies but for now, I think that is a reasonable step of getting
this moved forward?

I think there is one selftest issue left which is a multilib one.

Cheers,

Richard



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]               ` <169D9CED4738B0BB.18298@lists.openembedded.org>
@ 2021-08-22 12:38                 ` Richard Purdie
  0 siblings, 0 replies; 23+ messages in thread
From: Richard Purdie @ 2021-08-22 12:38 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni

On Sun, 2021-08-22 at 12:19 +0100, Richard Purdie via lists.openembedded.org
wrote:
> On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
> > On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
> > With a patch from Richard, and the http_proxy check removed,
> > $ git diff | grep "^[+-]"
> >  --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
> >  +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
> >  -http_proxy = "http://example.com/"
> >  +http_proxy = ""
> >  
> > we have fixed the oe-selftest that was failing.
> >  Any volunteers to stub out the http[s]_proxy code in cargo ?
> > I've written up a commit log that could use some review and pushed an update
> > to:
> >    
> > http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a
> > 
> 
> 
> I'm not sure you need to change cargo, I think if you remove the bit in the
> bbclass that injects http_proxy, the tests are ok. That will perhaps break
> anyone using proxies but for now, I think that is a reasonable step of getting
> this moved forward?
> 
> I think there is one selftest issue left which is a multilib one.

Ignore me on this last bit, its other local stuff corrupting my test, sorry for
the noise.

Cheers.

Richard


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-22 11:19               ` Richard Purdie
@ 2021-08-22 12:45                 ` Randy MacLeod
  2021-08-23  9:21                   ` Richard Purdie
  0 siblings, 1 reply; 23+ messages in thread
From: Randy MacLeod @ 2021-08-22 12:45 UTC (permalink / raw)
  To: Richard Purdie, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni

On 2021-08-22 7:19 a.m., Richard Purdie wrote:
> On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
>> On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
>> With a patch from Richard, and the http_proxy check removed,
>> $ git diff | grep "^[+-]"
>>   --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
>>   +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
>>   -http_proxy = "http://example.com/"
>>   +http_proxy = ""
>>   
>> we have fixed the oe-selftest that was failing.
>>   Any volunteers to stub out the http[s]_proxy code in cargo ?
>> I've written up a commit log that could use some review and pushed an update
>> to:
>>     
>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a
>>
> 
> 
> I'm not sure you need to change cargo, I think if you remove the bit in the
> bbclass that injects http_proxy, the tests are ok. That will perhaps break
> anyone using proxies but for now, I think that is a reasonable step of getting
> this moved forward?

That's what I hoped for as well but not what my testing showed.

I removed (commented out actually) the http_proxy injection here:
 
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=rmacleod/rust-redo-aug-17-2021-a&id=a4808f787caf8d0b44cf3946cf204164f24f91d4

but the test still fails unless I mangle the test:

    meta/lib/oeqa/selftest/cases/sstatetests.py


    -http_proxy = "http://example.com/"


    +http_proxy = ""

../Randy

> 
> I think there is one selftest issue left which is a multilib one.
> 
> Cheers,
> 
> Richard
> 
> 


-- 
# Randy MacLeod
# Wind River Linux

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-22 12:45                 ` Randy MacLeod
@ 2021-08-23  9:21                   ` Richard Purdie
  2021-08-24 16:48                     ` Randy MacLeod
       [not found]                     ` <169E4C0C80951608.1595@lists.openembedded.org>
  0 siblings, 2 replies; 23+ messages in thread
From: Richard Purdie @ 2021-08-23  9:21 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni

On Sun, 2021-08-22 at 08:45 -0400, Randy MacLeod wrote:
> On 2021-08-22 7:19 a.m., Richard Purdie wrote:
> > On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
> > > On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
> > > With a patch from Richard, and the http_proxy check removed,
> > > $ git diff | grep "^[+-]"
> > >   --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
> > >   +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
> > >   -http_proxy = "http://example.com/"
> > >   +http_proxy = ""
> > >   
> > > we have fixed the oe-selftest that was failing.
> > >   Any volunteers to stub out the http[s]_proxy code in cargo ?
> > > I've written up a commit log that could use some review and pushed an update
> > > to:
> > >     
> > > http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a
> > > 
> > 
> > 
> > I'm not sure you need to change cargo, I think if you remove the bit in the
> > bbclass that injects http_proxy, the tests are ok. That will perhaps break
> > anyone using proxies but for now, I think that is a reasonable step of getting
> > this moved forward?
> 
> That's what I hoped for as well but not what my testing showed.
> 
> I removed (commented out actually) the http_proxy injection here:
>  
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=rmacleod/rust-redo-aug-17-2021-a&id=a4808f787caf8d0b44cf3946cf204164f24f91d4
> 
> but the test still fails unless I mangle the test:
> 
>     meta/lib/oeqa/selftest/cases/sstatetests.py
> 
> 
>     -http_proxy = "http://example.com/"
> 
> 
>     +http_proxy = ""

Right, my point is that doesn't remove it. You need to delete it, not comment it
out.

The issue is that bitbake does variable expansion on the scripts before running
them.

It can't tell that this is a comment, just that the script differs after
variable expansion.

Cheers,

Richard




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-23  9:21                   ` Richard Purdie
@ 2021-08-24 16:48                     ` Randy MacLeod
       [not found]                     ` <169E4C0C80951608.1595@lists.openembedded.org>
  1 sibling, 0 replies; 23+ messages in thread
From: Randy MacLeod @ 2021-08-24 16:48 UTC (permalink / raw)
  To: Richard Purdie, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni, steven

Add Steven Walter in hopes that he or someone else
who uses meta-rust will help out.

On 2021-08-23 5:21 a.m., Richard Purdie wrote:
> On Sun, 2021-08-22 at 08:45 -0400, Randy MacLeod wrote:
>> On 2021-08-22 7:19 a.m., Richard Purdie wrote:
>>> On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
>>>> On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
>>>> With a patch from Richard, and the http_proxy check removed,
>>>> $ git diff | grep "^[+-]"
>>>>    --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
>>>>    +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
>>>>    -http_proxy = "http://example.com/"
>>>>    +http_proxy = ""
>>>>    
>>>> we have fixed the oe-selftest that was failing.
>>>>    Any volunteers to stub out the http[s]_proxy code in cargo ?
>>>> I've written up a commit log that could use some review and pushed an update
>>>> to:
>>>>      
>>>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a
>>>>
>>>
>>> I'm not sure you need to change cargo, I think if you remove the bit in the
>>> bbclass that injects http_proxy, the tests are ok. That will perhaps break
>>> anyone using proxies but for now, I think that is a reasonable step of getting
>>> this moved forward?
>> That's what I hoped for as well but not what my testing showed.
>>
>> I removed (commented out actually) the http_proxy injection here:
>>   
>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=rmacleod/rust-redo-aug-17-2021-a&id=a4808f787caf8d0b44cf3946cf204164f24f91d4
>>
>> but the test still fails unless I mangle the test:
>>
>>      meta/lib/oeqa/selftest/cases/sstatetests.py
>>
>>
>>      -http_proxy = "http://example.com/"
>>
>>
>>      +http_proxy = ""
> Right, my point is that doesn't remove it. You need to delete it, not comment it
> out.
>
> The issue is that bitbake does variable expansion on the scripts before running
> them.
>
> It can't tell that this is a comment, just that the script differs after
> variable expansion.
>
> Cheers,
>
> Richard
>
>
>
Richard has fixed several new issues and is testing this in master-next:
http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=master-next

using the YP autobuilder.

We're seeing some odd intermittent build failures especially when using
the uninative class (used by default in poky) perhaps on older hosts but
we're not 100% sure of that correlation yet. See below and:

https://autobuilder.yoctoproject.org/typhoon/#/builders/116/builds/581/steps/13/logs/stdio

If we can't get this fixed in the next day or two, we'll miss the fall 
release.

../Randy


error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found 
(required by 
/home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/build/bootstrap/debug/deps/libproc_macro_error_attr-9c7a09885c50c72e.so) 

     --> 
/home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/vendor/proc-macro-error/src/lib.rs:284:9 

  284 | pub use proc_macro_error_attr::proc_macro_error;
      |         ^^^^^^^^^^^^^^^^^^^^^

  error: aborting due to previous error
  error: could not compile `proc-macro-error`







-- 
# Randy MacLeod
# Wind River Linux


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]                     ` <169E4C0C80951608.1595@lists.openembedded.org>
@ 2021-08-27  4:05                       ` Randy MacLeod
  2021-08-27  9:03                         ` Richard Purdie
                                           ` (3 more replies)
  0 siblings, 4 replies; 23+ messages in thread
From: Randy MacLeod @ 2021-08-27  4:05 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni,
	Richard Purdie, Orling, Timothy T

On 2021-08-24 12:48 p.m., Randy MacLeod wrote:
> Add Steven Walter in hopes that he or someone else
> who uses meta-rust will help out.
> 
> On 2021-08-23 5:21 a.m., Richard Purdie wrote:
>> On Sun, 2021-08-22 at 08:45 -0400, Randy MacLeod wrote:
>>> On 2021-08-22 7:19 a.m., Richard Purdie wrote:
>>>> On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
>>>>> On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
>>>>> With a patch from Richard, and the http_proxy check removed,
>>>>> $ git diff | grep "^[+-]"
>>>>>    --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
>>>>>    +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
>>>>>    -http_proxy = "http://example.com/"
>>>>>    +http_proxy = ""
>>>>> we have fixed the oe-selftest that was failing.
>>>>>    Any volunteers to stub out the http[s]_proxy code in cargo ?
>>>>> I've written up a commit log that could use some review and pushed 
>>>>> an update
>>>>> to:
>>>>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a 
>>>>>
>>>>>
>>>>
>>>> I'm not sure you need to change cargo, I think if you remove the bit 
>>>> in the
>>>> bbclass that injects http_proxy, the tests are ok. That will perhaps 
>>>> break
>>>> anyone using proxies but for now, I think that is a reasonable step 
>>>> of getting
>>>> this moved forward?
>>> That's what I hoped for as well but not what my testing showed.
>>>
>>> I removed (commented out actually) the http_proxy injection here:
>>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=rmacleod/rust-redo-aug-17-2021-a&id=a4808f787caf8d0b44cf3946cf204164f24f91d4 
>>>
>>>
>>> but the test still fails unless I mangle the test:
>>>
>>>      meta/lib/oeqa/selftest/cases/sstatetests.py
>>>
>>>
>>>      -http_proxy = "http://example.com/"
>>>
>>>
>>>      +http_proxy = ""
>> Right, my point is that doesn't remove it. You need to delete it, not 
>> comment it
>> out.
>>
>> The issue is that bitbake does variable expansion on the scripts 
>> before running
>> them.
>>
>> It can't tell that this is a comment, just that the script differs after
>> variable expansion.
>>
>> Cheers,
>>
>> Richard
>>
>>
>>
> Richard has fixed several new issues and is testing this in master-next:
> http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=master-next
> 
> using the YP autobuilder.
> 
> We're seeing some odd intermittent build failures especially when using
> the uninative class (used by default in poky) perhaps on older hosts but
> we're not 100% sure of that correlation yet. See below and:
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/116/builds/581/steps/13/logs/stdio 
> 
> 
> If we can't get this fixed in the next day or two, we'll miss the fall 
> release.
> 
> ../Randy


Thanks to Richard's dogged determination and Herculean efforts,
the Rust recipes are now merged to the oe-core master branch.

    https://git.openembedded.org/openembedded-core/log/?qt=range&q=master


There are still some known problems, such as:

1. Tim Orling finding that Rust fails to build python-cryptography:

 
https://git.openembedded.org/meta-openembedded-contrib/log/?h=timo/rust_python3-cryptography

Tim says that this change helps:
 
https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/rustc-print-cfg-fix


and:

2. a reproducible build failure on CentOS-7:

    https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597

where, we see:
    = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
    not found (required by \
    /home/pokybuild/yocto-worker/reproducible-centos/build/\
    build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
    1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)





    error: linking with `\
    /home/pokybuild/yocto-worker/reproducible-centos/build/\
    build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
    1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1


---


Please test, send patches and/or let me know about any other problems by
email or by opening  a defect in the YP bugzilla:
    https://bugzilla.yoctoproject.org/


I'll work on a commit for meta-rust to remove the components
that have been moved to oe-core. I'm not sure what the
meta-rust developers and users want to do as far as what will
remain in meta-rust but the short list that I have so far is:
1. scripts
2. Jenkins tests
3. Rust version 1.51.0 ?


../Randy

> 
> 
> error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found 
> (required by 
> /home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/build/bootstrap/debug/deps/libproc_macro_error_attr-9c7a09885c50c72e.so) 
> 
>      --> 
> /home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/vendor/proc-macro-error/src/lib.rs:284:9 
> 
>   284 | pub use proc_macro_error_attr::proc_macro_error;
>       |         ^^^^^^^^^^^^^^^^^^^^^
> 
>   error: aborting due to previous error
>   error: could not compile `proc-macro-error`
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 


-- 
# Randy MacLeod
# Wind River Linux

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-27  4:05                       ` Randy MacLeod
@ 2021-08-27  9:03                         ` Richard Purdie
       [not found]                           ` <7A95231E-0879-46D6-8653-85338E9BDDFA@amazon.com>
       [not found]                         ` <169F1E62C63E8EDC.31425@lists.openembedded.org>
                                           ` (2 subsequent siblings)
  3 siblings, 1 reply; 23+ messages in thread
From: Richard Purdie @ 2021-08-27  9:03 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni, Orling,
	Timothy T, Richard Elberger, Kuber, Esteban

On Fri, 2021-08-27 at 00:05 -0400, Randy MacLeod wrote:
> Thanks to Richard's dogged determination and Herculean efforts,
> the Rust recipes are now merged to the oe-core master branch.
> 
>     https://git.openembedded.org/openembedded-core/log/?qt=range&q=master
> 
> 
> There are still some known problems, such as:
> 
> 1. Tim Orling finding that Rust fails to build python-cryptography:
> 
>  
> https://git.openembedded.org/meta-openembedded-contrib/log/?h=timo/rust_python3-cryptography
> 
> Tim says that this change helps:
>  
> https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/rustc-print-cfg-fix
> 
> 
> and:
> 
> 2. a reproducible build failure on CentOS-7:
> 
>     https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
> 
> where, we see:
>     = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
>     not found (required by \
>     /home/pokybuild/yocto-worker/reproducible-centos/build/\
>     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>     1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
> 
> 
> 
> 
> 
>     error: linking with `\
>     /home/pokybuild/yocto-worker/reproducible-centos/build/\
>     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>     1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
> 

I had a quick look at this. It reproduces if you build cargo-native on a centos7
machine with our M2 buildtools tarball in the environment of the build.

Adding the uninative relocation hack to the cargo snapshot binary with:

 do_cargo_setup_snapshot () {
        ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
+       # Need to use uninative's loader if enabled/present since the library paths
+       # are used internally by rust and result in symbol mismatches if we don't
+       if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
+               patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
+       fi
 }

didn't help.

Running the command it mentions failing by hand in the same toolchain enabled
shell works. It therefore seems likely that something rust is putting into the
environment is breaking things. What that is, I don't know, I'm out of time to
debug further.

It looks to me like it is using the ld from the host instead of the buildtools
tarball. I did change tmp/work/x86_64-linux/cargo-native/1.54.0-
r0/wrapper/target-rust-ccld to a full path to gcc and messed with PATH to ensure
it would find "our" ld first but that didn't help.

In the error output is some:

Usage: which [options] [--] COMMAND [...]
Write the full path of COMMAND(s) to standard output.

suggesting some which call might not be compatible with centos7?

Cheers,

Richard




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]                         ` <169F1E62C63E8EDC.31425@lists.openembedded.org>
@ 2021-08-27 12:04                           ` Richard Purdie
       [not found]                           ` <169F2844BF9C5B85.31425@lists.openembedded.org>
  1 sibling, 0 replies; 23+ messages in thread
From: Richard Purdie @ 2021-08-27 12:04 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni, Orling,
	Timothy T, Richard Elberger, Kuber, Esteban

On Fri, 2021-08-27 at 10:03 +0100, Richard Purdie via lists.openembedded.org
wrote:
> On Fri, 2021-08-27 at 00:05 -0400, Randy MacLeod wrote:
> > Thanks to Richard's dogged determination and Herculean efforts,
> > the Rust recipes are now merged to the oe-core master branch.
> > 
> >     https://git.openembedded.org/openembedded-core/log/?qt=range&q=master
> > 
> > 
> > There are still some known problems, such as:
> > 
> > 1. Tim Orling finding that Rust fails to build python-cryptography:
> > 
> >  
> > https://git.openembedded.org/meta-openembedded-contrib/log/?h=timo/rust_python3-cryptography
> > 
> > Tim says that this change helps:
> >  
> > https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/rustc-print-cfg-fix
> > 
> > 
> > and:
> > 
> > 2. a reproducible build failure on CentOS-7:
> > 
> >     https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
> > 
> > where, we see:
> >     = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
> >     not found (required by \
> >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
> >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> >     1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
> > 
> > 
> > 
> > 
> > 
> >     error: linking with `\
> >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
> >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> >     1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
> > 
> 
> I had a quick look at this. It reproduces if you build cargo-native on a centos7
> machine with our M2 buildtools tarball in the environment of the build.
> 
> Adding the uninative relocation hack to the cargo snapshot binary with:
> 
>  do_cargo_setup_snapshot () {
>         ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
> +       # Need to use uninative's loader if enabled/present since the library paths
> +       # are used internally by rust and result in symbol mismatches if we don't
> +       if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
> +               patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
> +       fi
>  }
> 
> didn't help.
> 
> Running the command it mentions failing by hand in the same toolchain enabled
> shell works. It therefore seems likely that something rust is putting into the
> environment is breaking things. What that is, I don't know, I'm out of time to
> debug further.
> 
> It looks to me like it is using the ld from the host instead of the buildtools
> tarball. I did change tmp/work/x86_64-linux/cargo-native/1.54.0-
> r0/wrapper/target-rust-ccld to a full path to gcc and messed with PATH to ensure
> it would find "our" ld first but that didn't help.
> 
> In the error output is some:
> 
> Usage: which [options] [--] COMMAND [...]
> Write the full path of COMMAND(s) to standard output.
> 
> suggesting some which call might not be compatible with centos7?

temp/run.do_compile:	bbnote "cargo = $(which /home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp2/work/x86_64-linux/cargo-native/1.54.0-r0/cargo-1.53.0-x86_64-unknown-linux-gnu/bin/cargo)"
temp/run.do_compile:	bbnote "rustc = $(which ${RUSTC})"

so probably not important.

Cheers,

Richard



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-27  4:05                       ` Randy MacLeod
  2021-08-27  9:03                         ` Richard Purdie
       [not found]                         ` <169F1E62C63E8EDC.31425@lists.openembedded.org>
@ 2021-08-27 14:31                         ` Armin Kuster
  2021-08-27 20:09                         ` Tim Orling
  3 siblings, 0 replies; 23+ messages in thread
From: Armin Kuster @ 2021-08-27 14:31 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni,
	Richard Purdie, Orling, Timothy T



On 8/26/21 9:05 PM, Randy MacLeod wrote:
> On 2021-08-24 12:48 p.m., Randy MacLeod wrote:
>> Add Steven Walter in hopes that he or someone else
>> who uses meta-rust will help out.
>>
>> On 2021-08-23 5:21 a.m., Richard Purdie wrote:
>>> On Sun, 2021-08-22 at 08:45 -0400, Randy MacLeod wrote:
>>>> On 2021-08-22 7:19 a.m., Richard Purdie wrote:
>>>>> On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
>>>>>> On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
>>>>>> With a patch from Richard, and the http_proxy check removed,
>>>>>> $ git diff | grep "^[+-]"
>>>>>>    --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
>>>>>>    +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
>>>>>>    -http_proxy = "http://example.com/"
>>>>>>    +http_proxy = ""
>>>>>> we have fixed the oe-selftest that was failing.
>>>>>>    Any volunteers to stub out the http[s]_proxy code in cargo ?
>>>>>> I've written up a commit log that could use some review and
>>>>>> pushed an update
>>>>>> to:
>>>>>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a
>>>>>>
>>>>>>
>>>>>
>>>>> I'm not sure you need to change cargo, I think if you remove the
>>>>> bit in the
>>>>> bbclass that injects http_proxy, the tests are ok. That will
>>>>> perhaps break
>>>>> anyone using proxies but for now, I think that is a reasonable
>>>>> step of getting
>>>>> this moved forward?
>>>> That's what I hoped for as well but not what my testing showed.
>>>>
>>>> I removed (commented out actually) the http_proxy injection here:
>>>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=rmacleod/rust-redo-aug-17-2021-a&id=a4808f787caf8d0b44cf3946cf204164f24f91d4
>>>>
>>>>
>>>> but the test still fails unless I mangle the test:
>>>>
>>>>      meta/lib/oeqa/selftest/cases/sstatetests.py
>>>>
>>>>
>>>>      -http_proxy = "http://example.com/"
>>>>
>>>>
>>>>      +http_proxy = ""
>>> Right, my point is that doesn't remove it. You need to delete it,
>>> not comment it
>>> out.
>>>
>>> The issue is that bitbake does variable expansion on the scripts
>>> before running
>>> them.
>>>
>>> It can't tell that this is a comment, just that the script differs
>>> after
>>> variable expansion.
>>>

Thanks all for getting Rust in Core.

- Armin
>>> Cheers,
>>>
>>> Richard
>>>
>>>
>>>
>> Richard has fixed several new issues and is testing this in master-next:
>> http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=master-next
>>
>> using the YP autobuilder.
>>
>> We're seeing some odd intermittent build failures especially when using
>> the uninative class (used by default in poky) perhaps on older hosts but
>> we're not 100% sure of that correlation yet. See below and:
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/116/builds/581/steps/13/logs/stdio
>>
>>
>> If we can't get this fixed in the next day or two, we'll miss the
>> fall release.
>>
>> ../Randy
>
>
> Thanks to Richard's dogged determination and Herculean efforts,
> the Rust recipes are now merged to the oe-core master branch.
>
>    https://git.openembedded.org/openembedded-core/log/?qt=range&q=master
>
>
> There are still some known problems, such as:
>
> 1. Tim Orling finding that Rust fails to build python-cryptography:
>
>
> https://git.openembedded.org/meta-openembedded-contrib/log/?h=timo/rust_python3-cryptography
>
>
> Tim says that this change helps:
>
> https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/rustc-print-cfg-fix
>
>
>
> and:
>
> 2. a reproducible build failure on CentOS-7:
>
>    https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
>
> where, we see:
>    = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
>    not found (required by \
>    /home/pokybuild/yocto-worker/reproducible-centos/build/\
>    build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>    1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
>
>
>
>
>
>    error: linking with `\
>    /home/pokybuild/yocto-worker/reproducible-centos/build/\
>    build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>    1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
>
>
> ---
>
>
> Please test, send patches and/or let me know about any other problems by
> email or by opening  a defect in the YP bugzilla:
>    https://bugzilla.yoctoproject.org/
>
>
> I'll work on a commit for meta-rust to remove the components
> that have been moved to oe-core. I'm not sure what the
> meta-rust developers and users want to do as far as what will
> remain in meta-rust but the short list that I have so far is:
> 1. scripts
> 2. Jenkins tests
> 3. Rust version 1.51.0 ?
>
>
> ../Randy
>
>>
>>
>> error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not
>> found (required by
>> /home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/build/bootstrap/debug/deps/libproc_macro_error_attr-9c7a09885c50c72e.so)
>>
>>      -->
>> /home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/vendor/proc-macro-error/src/lib.rs:284:9
>>
>>   284 | pub use proc_macro_error_attr::proc_macro_error;
>>       |         ^^^^^^^^^^^^^^^^^^^^^
>>
>>   error: aborting due to previous error
>>   error: could not compile `proc-macro-error`
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>
> 
>


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
  2021-08-27  4:05                       ` Randy MacLeod
                                           ` (2 preceding siblings ...)
  2021-08-27 14:31                         ` Armin Kuster
@ 2021-08-27 20:09                         ` Tim Orling
  3 siblings, 0 replies; 23+ messages in thread
From: Tim Orling @ 2021-08-27 20:09 UTC (permalink / raw)
  To: Randy MacLeod
  Cc: Alexandre Belloni, Khem Raj, Orling, Timothy T,
	Patches and discussions about the oe-core layer, Richard Purdie,
	Trevor Gamblin, Vinay Kumar, anbelski, cardoe, derek, dev,
	johan.anderholm, martin.jansa, paul, saul.wold, steven,
	tylerwhall, vinay.kumar

[-- Attachment #1: Type: text/plain, Size: 6248 bytes --]

On Thu, Aug 26, 2021 at 9:05 PM Randy MacLeod <randy.macleod@windriver.com>
wrote:

> On 2021-08-24 12:48 p.m., Randy MacLeod wrote:
> > Add Steven Walter in hopes that he or someone else
> > who uses meta-rust will help out.
> >
> > On 2021-08-23 5:21 a.m., Richard Purdie wrote:
> >> On Sun, 2021-08-22 at 08:45 -0400, Randy MacLeod wrote:
> >>> On 2021-08-22 7:19 a.m., Richard Purdie wrote:
> >>>> On Sat, 2021-08-21 at 23:12 -0400, Randy MacLeod wrote:
> >>>>> On 2021-08-20 10:48 p.m., Randy MacLeod wrote:
> >>>>> With a patch from Richard, and the http_proxy check removed,
> >>>>> $ git diff | grep "^[+-]"
> >>>>>    --- a/meta/lib/oeqa/selftest/cases/sstatetests.py
> >>>>>    +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
> >>>>>    -http_proxy = "http://example.com/"
> >>>>>    +http_proxy = ""
> >>>>> we have fixed the oe-selftest that was failing.
> >>>>>    Any volunteers to stub out the http[s]_proxy code in cargo ?
> >>>>> I've written up a commit log that could use some review and pushed
> >>>>> an update
> >>>>> to:
> >>>>>
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=rmacleod/rust-redo-aug-17-2021-a
> >>>>>
> >>>>>
> >>>>
> >>>> I'm not sure you need to change cargo, I think if you remove the bit
> >>>> in the
> >>>> bbclass that injects http_proxy, the tests are ok. That will perhaps
> >>>> break
> >>>> anyone using proxies but for now, I think that is a reasonable step
> >>>> of getting
> >>>> this moved forward?
> >>> That's what I hoped for as well but not what my testing showed.
> >>>
> >>> I removed (commented out actually) the http_proxy injection here:
> >>>
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=rmacleod/rust-redo-aug-17-2021-a&id=a4808f787caf8d0b44cf3946cf204164f24f91d4
> >>>
> >>>
> >>> but the test still fails unless I mangle the test:
> >>>
> >>>      meta/lib/oeqa/selftest/cases/sstatetests.py
> >>>
> >>>
> >>>      -http_proxy = "http://example.com/"
> >>>
> >>>
> >>>      +http_proxy = ""
> >> Right, my point is that doesn't remove it. You need to delete it, not
> >> comment it
> >> out.
> >>
> >> The issue is that bitbake does variable expansion on the scripts
> >> before running
> >> them.
> >>
> >> It can't tell that this is a comment, just that the script differs after
> >> variable expansion.
> >>
> >> Cheers,
> >>
> >> Richard
> >>
> >>
> >>
> > Richard has fixed several new issues and is testing this in master-next:
> > http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=master-next
> >
> > using the YP autobuilder.
> >
> > We're seeing some odd intermittent build failures especially when using
> > the uninative class (used by default in poky) perhaps on older hosts but
> > we're not 100% sure of that correlation yet. See below and:
> >
> >
> https://autobuilder.yoctoproject.org/typhoon/#/builders/116/builds/581/steps/13/logs/stdio
> >
> >
> > If we can't get this fixed in the next day or two, we'll miss the fall
> > release.
> >
> > ../Randy
>
>
> Thanks to Richard's dogged determination and Herculean efforts,
> the Rust recipes are now merged to the oe-core master branch.
>
>     https://git.openembedded.org/openembedded-core/log/?qt=range&q=master
>

Thank you Richard, Randy and everyone else involved.

>
>
> There are still some known problems, such as:
>
> 1. Tim Orling finding that Rust fails to build python-cryptography:
>
>
>
> https://git.openembedded.org/meta-openembedded-contrib/log/?h=timo/rust_python3-cryptography
>

With the patch below, this branch now builds the latest
pyhton3-cryptography 3.4.8. There are some ptest warnings and errors that
are still in progress. Also the recipes in this branch need a final scrub
before submitting.

Happy to have anyone test the branch if you use python3-cryptography.

>
> Tim says that this change helps:
>
>
> https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/rustc-print-cfg-fix


Patch sent to ML for this.

<https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/rustc-print-cfg-fix>


>
> and:
>
> 2. a reproducible build failure on CentOS-7:
>
>     https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
>
> where, we see:
>     = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
>     not found (required by \
>     /home/pokybuild/yocto-worker/reproducible-centos/build/\
>     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>     1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
>
>
>
>
>
>     error: linking with `\
>     /home/pokybuild/yocto-worker/reproducible-centos/build/\
>     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>     1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
>
>
> ---
>
>
> Please test, send patches and/or let me know about any other problems by
> email or by opening  a defect in the YP bugzilla:
>     https://bugzilla.yoctoproject.org/
>
>
> I'll work on a commit for meta-rust to remove the components
> that have been moved to oe-core. I'm not sure what the
> meta-rust developers and users want to do as far as what will
> remain in meta-rust but the short list that I have so far is:
> 1. scripts
> 2. Jenkins tests
> 3. Rust version 1.51.0 ?
>
>
> ../Randy
>
> >
> >
> > error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found
> > (required by
> >
> /home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/build/bootstrap/debug/deps/libproc_macro_error_attr-9c7a09885c50c72e.so)
>
> >
> >      -->
> >
> /home/pokybuild/yocto-worker/reproducible-debian/build/build-st/reproducibleA/tmp/work/x86_64-linux/rust-native/1.54.0-r0/rustc-1.54.0-src/vendor/proc-macro-error/src/lib.rs:284:9
>
> >
> >   284 | pub use proc_macro_error_attr::proc_macro_error;
> >       |         ^^^^^^^^^^^^^^^^^^^^^
> >
> >   error: aborting due to previous error
> >   error: could not compile `proc-macro-error`
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> --
> # Randy MacLeod
> # Wind River Linux
>
> 
>
>

[-- Attachment #2: Type: text/html, Size: 9826 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]                           ` <169F2844BF9C5B85.31425@lists.openembedded.org>
@ 2021-09-01  8:38                             ` Richard Purdie
  0 siblings, 0 replies; 23+ messages in thread
From: Richard Purdie @ 2021-09-01  8:38 UTC (permalink / raw)
  To: Randy MacLeod, Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni, Orling,
	Timothy T, Richard Elberger, Kuber, Esteban

On Fri, 2021-08-27 at 13:04 +0100, Richard Purdie via lists.openembedded.org
wrote:
> On Fri, 2021-08-27 at 10:03 +0100, Richard Purdie via lists.openembedded.org
> wrote:
> > On Fri, 2021-08-27 at 00:05 -0400, Randy MacLeod wrote:
> > > 2. a reproducible build failure on CentOS-7:
> > > 
> > >     https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
> > > 
> > > where, we see:
> > >     = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
> > >     not found (required by \
> > >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
> > >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> > >     1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
> > > 
> > > 
> > > 
> > > 
> > > 
> > >     error: linking with `\
> > >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
> > >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> > >     1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
> > > 
> > 
> > I had a quick look at this. It reproduces if you build cargo-native on a centos7
> > machine with our M2 buildtools tarball in the environment of the build.
> > 
> > Adding the uninative relocation hack to the cargo snapshot binary with:
> > 
> >  do_cargo_setup_snapshot () {
> >         ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
> > +       # Need to use uninative's loader if enabled/present since the library paths
> > +       # are used internally by rust and result in symbol mismatches if we don't
> > +       if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
> > +               patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
> > +       fi
> >  }
> > 
> > didn't help.
> > 
> > Running the command it mentions failing by hand in the same toolchain enabled
> > shell works. It therefore seems likely that something rust is putting into the
> > environment is breaking things. What that is, I don't know, I'm out of time to
> > debug further.
> > 
> > It looks to me like it is using the ld from the host instead of the buildtools
> > tarball. I did change tmp/work/x86_64-linux/cargo-native/1.54.0-
> > r0/wrapper/target-rust-ccld to a full path to gcc and messed with PATH to ensure
> > it would find "our" ld first but that didn't help.
> > 
> > In the error output is some:
> > 
> > Usage: which [options] [--] COMMAND [...]
> > Write the full path of COMMAND(s) to standard output.
> > 
> > suggesting some which call might not be compatible with centos7?
> 
> temp/run.do_compile:	bbnote "cargo = $(which /home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp2/work/x86_64-linux/cargo-native/1.54.0-r0/cargo-1.53.0-x86_64-unknown-linux-gnu/bin/cargo)"
> temp/run.do_compile:	bbnote "rustc = $(which ${RUSTC})"
> 
> so probably not important.
> 

Distilling through all the noise, we reach this test case:

where you:

a) install buildtools-tarball and source the buildtools env
b) build cargo-native

then the failure can be reproduced with something like:

[pokybuild@centos7-ty-4 build-st]$ LD_LIBRARY_PATH=/home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp/work/x86_64-linux/cargo-native/1.54.0-r0/recipe-sysroot-native/usr/lib /home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp/work/x86_64-linux/cargo-native/1.54.0-r0/wrapper/target-rust-ccld
/bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by /home/pokybuild/yocto-worker/reproducible-centos/build/build-st/tmp/work/x86_64-linux/cargo-native/1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)

which is because /bin/sh comes from the host and links against libtinfo,
LD_LIBRARY_PATH is set by cargo to the recipe sysroot, it finds our libtinfo
rather than the host one and it is incompatible with the libc/loader being used
by /bin/sh.

I did find this is documented in: 

https://doc.rust-lang.org/cargo/reference/environment-variables.html#dynamic-library-paths

and I suspect this is because it is adding "the rustc sysroot library path".

This also explains why running the reported ccld command by hand works since the
LD_LIBRARY_PATH is no longer set.

How to fix this? No idea.

Could/should we make rust use a different sysroot location?

Cheers,

Richard



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]                           ` <7A95231E-0879-46D6-8653-85338E9BDDFA@amazon.com>
@ 2021-09-01  8:44                             ` Richard Purdie
       [not found]                             ` <16A0A6483A22DE64.7229@lists.openembedded.org>
  1 sibling, 0 replies; 23+ messages in thread
From: Richard Purdie @ 2021-09-01  8:44 UTC (permalink / raw)
  To: Kuber, Esteban, Randy MacLeod,
	Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni, Orling,
	Timothy T, Elberger, Richard

Hi Esteban,

On Fri, 2021-08-27 at 15:18 +0000, Kuber, Esteban wrote:
> On 2021/8/27, 2:03 AM, "Richard Purdie" <richard.purdie@linuxfoundation.org> wrote:
>     > and:
>     >
>     > 2. a reproducible build failure on CentOS-7:
>     >
>     >     https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
>     >
>     > where, we see:
>     >     = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
>     >     not found (required by \
>     >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
>     >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>     >     1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
>     >
>     >
>     >
>     >
>     >
>     >     error: linking with `\
>     >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
>     >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
>     >     1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
>    
> 
>     I had a quick look at this. It reproduces if you build cargo-native on a centos7
>     machine with our M2 buildtools tarball in the environment of the build.
> 
>     Adding the uninative relocation hack to the cargo snapshot binary with:
> 
>      do_cargo_setup_snapshot () {
>             ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
>     +       # Need to use uninative's loader if enabled/present since the library paths
>     +       # are used internally by rust and result in symbol mismatches if we don't
>     +       if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
>     +               patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
>     +       fi
>      }
> 
>     didn't help.
> 
>     Running the command it mentions failing by hand in the same toolchain enabled
>     shell works. It therefore seems likely that something rust is putting into the
>     environment is breaking things. What that is, I don't know, I'm out of time to
>     debug further.
> 
> I'm looking at what that could be. If I can't give you the actual list (from the
> code), I can give you a patch to print out to stderr *everything* that rustc is
> setting during builds. We currently have a `-v` verbose  flag in cargo that
> gives out the full command with wich rustc in invoked, but as you say, the
> problem is likely the environment variables at play.

With some further debugging as I mentioned in my other reply, it is the
LD_LIBRARY_PATH setting which is confusing things. Probably as a result of:

https://doc.rust-lang.org/cargo/reference/environment-variables.html#dynamic-library-paths

>     It looks to me like it is using the ld from the host instead of the buildtools
>     tarball. I did change tmp/work/x86_64-linux/cargo-native/1.54.0-
>     r0/wrapper/target-rust-ccld to a full path to gcc and messed with PATH to ensure
>     it would find "our" ld first but that didn't help.
> 
> This is making me wonder, could it be that we are defaulting to a linker that is
> not supplied in the buildtools tar.gz? That would explain why it ends up picking
> up the system's even when changing the $PATH.

It is a bit more subtle than that. The ccld script has /bin/sh as the
interpreter which uses the host libc and host libtinfo. The LD_LIBRARY_PATH
injected by cargo causes it to find the libtinfo in the recipe-sysroot-native
which is incompatible with it and things then fail :(.

> 
>     In the error output is some:
> 
>     Usage: which [options] [--] COMMAND [...]
>     Write the full path of COMMAND(s) to standard output.
> 
>     suggesting some which call might not be compatible with centos7?
> 
>     Cheers,
> 
>     Richard
> 
> One clarification I would like to have is, is this the *first* time you are 
> trying to build rustc in this configuration, or is this a *recent* problem 
> introduced in 1.54? Just want to make sure that my understanding that we are 
> dealing with the former is correct.

This is the first time we've tried this as far as I know.

It is a horrible mix of different host tools and libcs from uninative,
buildtools and the host all conflicting when LD_LIBRARY_PATH is set :(.

I'm not sure how to go about resolving this.

Cheers,

Richard






^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
       [not found]                             ` <16A0A6483A22DE64.7229@lists.openembedded.org>
@ 2021-09-01  9:15                               ` Richard Purdie
  0 siblings, 0 replies; 23+ messages in thread
From: Richard Purdie @ 2021-09-01  9:15 UTC (permalink / raw)
  To: Kuber, Esteban, Randy MacLeod,
	Patches and discussions about the oe-core layer
  Cc: steven, johan.anderholm, derek, cardoe, dev, tylerwhall,
	Khem Raj, vinay.kumar, saul.wold, martin.jansa, paul,
	Trevor Gamblin, anbelski, Vinay Kumar, Alexandre Belloni, Orling,
	Timothy T, Elberger, Richard

On Wed, 2021-09-01 at 09:44 +0100, Richard Purdie via lists.openembedded.org
wrote:
> Hi Esteban,
> 
> On Fri, 2021-08-27 at 15:18 +0000, Kuber, Esteban wrote:
> > On 2021/8/27, 2:03 AM, "Richard Purdie" <richard.purdie@linuxfoundation.org> wrote:
> >     > and:
> >     >
> >     > 2. a reproducible build failure on CentOS-7:
> >     >
> >     >     https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/597
> >     >
> >     > where, we see:
> >     >     = note: /bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' \
> >     >     not found (required by \
> >     >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
> >     >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> >     >     1.54.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5)
> >     >
> >     >
> >     >
> >     >
> >     >
> >     >     error: linking with `\
> >     >     /home/pokybuild/yocto-worker/reproducible-centos/build/\
> >     >     build-st/reproducibleB/tmp/work/x86_64-linux/cargo-native/\
> >     >     1.54.0-r0/wrapper/target-rust-ccld` failed: exit status: 1
> >    
> > 
> >     I had a quick look at this. It reproduces if you build cargo-native on a centos7
> >     machine with our M2 buildtools tarball in the environment of the build.
> > 
> >     Adding the uninative relocation hack to the cargo snapshot binary with:
> > 
> >      do_cargo_setup_snapshot () {
> >             ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
> >     +       # Need to use uninative's loader if enabled/present since the library paths
> >     +       # are used internally by rust and result in symbol mismatches if we don't
> >     +       if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
> >     +               patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
> >     +       fi
> >      }
> > 
> >     didn't help.
> > 
> >     Running the command it mentions failing by hand in the same toolchain enabled
> >     shell works. It therefore seems likely that something rust is putting into the
> >     environment is breaking things. What that is, I don't know, I'm out of time to
> >     debug further.
> > 
> > I'm looking at what that could be. If I can't give you the actual list (from the
> > code), I can give you a patch to print out to stderr *everything* that rustc is
> > setting during builds. We currently have a `-v` verbose  flag in cargo that
> > gives out the full command with wich rustc in invoked, but as you say, the
> > problem is likely the environment variables at play.
> 
> With some further debugging as I mentioned in my other reply, it is the
> LD_LIBRARY_PATH setting which is confusing things. Probably as a result of:
> 
> https://doc.rust-lang.org/cargo/reference/environment-variables.html#dynamic-library-paths
> 
> >     It looks to me like it is using the ld from the host instead of the buildtools
> >     tarball. I did change tmp/work/x86_64-linux/cargo-native/1.54.0-
> >     r0/wrapper/target-rust-ccld to a full path to gcc and messed with PATH to ensure
> >     it would find "our" ld first but that didn't help.
> > 
> > This is making me wonder, could it be that we are defaulting to a linker that is
> > not supplied in the buildtools tar.gz? That would explain why it ends up picking
> > up the system's even when changing the $PATH.
> 
> It is a bit more subtle than that. The ccld script has /bin/sh as the
> interpreter which uses the host libc and host libtinfo. The LD_LIBRARY_PATH
> injected by cargo causes it to find the libtinfo in the recipe-sysroot-native
> which is incompatible with it and things then fail :(.
> 
> > 
> >     In the error output is some:
> > 
> >     Usage: which [options] [--] COMMAND [...]
> >     Write the full path of COMMAND(s) to standard output.
> > 
> >     suggesting some which call might not be compatible with centos7?
> > 
> >     Cheers,
> > 
> >     Richard
> > 
> > One clarification I would like to have is, is this the *first* time you are 
> > trying to build rustc in this configuration, or is this a *recent* problem 
> > introduced in 1.54? Just want to make sure that my understanding that we are 
> > dealing with the former is correct.
> 
> This is the first time we've tried this as far as I know.
> 
> It is a horrible mix of different host tools and libcs from uninative,
> buildtools and the host all conflicting when LD_LIBRARY_PATH is set :(.
> 
> I'm not sure how to go about resolving this.

I noticed some code in cargo. I think the code is where the sysroot path is
injected. Since rust figures out its own paths to everything it is a little
surprising this is needed and the comment suggests the author had similar
thoughts. I therefore tried the following patch:

Index: cargo/src/cargo/core/compiler/compilation.rs
===================================================================
--- cargo.orig/src/cargo/core/compiler/compilation.rs
+++ cargo/src/cargo/core/compiler/compilation.rs
@@ -273,13 +273,6 @@ impl<'cfg> Compilation<'cfg> {
             ));
             search_path.push(self.deps_output[&kind].clone());
             search_path.push(self.root_output[&kind].clone());
-            // For build-std, we don't want to accidentally pull in any shared
-            // libs from the sysroot that ships with rustc. This may not be
-            // required (at least I cannot craft a situation where it
-            // matters), but is here to be safe.
-            if self.config.cli_unstable().build_std.is_none() {
-                search_path.push(self.sysroot_target_libdir[&kind].clone());
-            }
         }
 
         let dylib_path = paths::dylib_path();

however since I think we're running a prebuilt binary rather than the one we're
building, this does work. I'm therefore not sure how we can fix this. Is this
code something upstream might consider removing?

Cheers,

Richard



^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2021-09-01  9:15 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-11  0:22 [v3] [RFC] Merge meta-rust to oe-core Randy MacLeod
2021-08-11 13:14 ` Randy MacLeod
2021-08-11 15:18   ` Randy MacLeod
2021-08-13 15:19   ` [OE-core] [v4] " Vinay Kumar
2021-08-13 15:22     ` Vinay Kumar
2021-08-17 14:52       ` Randy MacLeod
     [not found]       ` <169C1FA457B99CA0.23238@lists.openembedded.org>
2021-08-20 10:06         ` [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update Randy MacLeod
2021-08-21  2:48           ` Randy MacLeod
2021-08-21  8:46             ` Richard Purdie
     [not found]           ` <169D3274AAECC435.19323@lists.openembedded.org>
2021-08-22  3:12             ` Randy MacLeod
2021-08-22 11:19               ` Richard Purdie
2021-08-22 12:45                 ` Randy MacLeod
2021-08-23  9:21                   ` Richard Purdie
2021-08-24 16:48                     ` Randy MacLeod
     [not found]                     ` <169E4C0C80951608.1595@lists.openembedded.org>
2021-08-27  4:05                       ` Randy MacLeod
2021-08-27  9:03                         ` Richard Purdie
     [not found]                           ` <7A95231E-0879-46D6-8653-85338E9BDDFA@amazon.com>
2021-09-01  8:44                             ` Richard Purdie
     [not found]                             ` <16A0A6483A22DE64.7229@lists.openembedded.org>
2021-09-01  9:15                               ` Richard Purdie
     [not found]                         ` <169F1E62C63E8EDC.31425@lists.openembedded.org>
2021-08-27 12:04                           ` Richard Purdie
     [not found]                           ` <169F2844BF9C5B85.31425@lists.openembedded.org>
2021-09-01  8:38                             ` Richard Purdie
2021-08-27 14:31                         ` Armin Kuster
2021-08-27 20:09                         ` Tim Orling
     [not found]               ` <169D9CED4738B0BB.18298@lists.openembedded.org>
2021-08-22 12:38                 ` Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.