All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Randy MacLeod" <randy.macleod@windriver.com>
To: Patches and discussions about the oe-core layer
	<openembedded-core@lists.openembedded.org>,
	Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: steven@stevenwalter.org, johan.anderholm@gmail.com,
	derek@asterius.io, cardoe@cardoe.com, dev@codyps.com,
	tylerwhall@gmail.com, Khem Raj <raj.khem@gmail.com>,
	vinay.kumar@blackfigtech.com, saul.wold@windriver.com,
	martin.jansa@gmail.com, paul@pbarker.dev,
	Trevor Gamblin <trevor.gamblin@windriver.com>,
	anbelski@linux.microsoft.com,
	Vinay Kumar <vinay.m.engg@gmail.com>
Subject: Re: [OE-core] [v4] [RFC] Merge meta-rust to oe-core - Aug 19 update
Date: Fri, 20 Aug 2021 22:48:26 -0400	[thread overview]
Message-ID: <56e32f4e-3a48-fa45-1b6e-bb1dc549a8e4@windriver.com> (raw)
In-Reply-To: <15a0f2e3-dbad-2512-3e5e-f2b84c946964@windriver.com>


[-- 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

  reply	other threads:[~2021-08-21  2:48 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56e32f4e-3a48-fa45-1b6e-bb1dc549a8e4@windriver.com \
    --to=randy.macleod@windriver.com \
    --cc=anbelski@linux.microsoft.com \
    --cc=cardoe@cardoe.com \
    --cc=derek@asterius.io \
    --cc=dev@codyps.com \
    --cc=johan.anderholm@gmail.com \
    --cc=martin.jansa@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=paul@pbarker.dev \
    --cc=raj.khem@gmail.com \
    --cc=richard.purdie@linuxfoundation.org \
    --cc=saul.wold@windriver.com \
    --cc=steven@stevenwalter.org \
    --cc=trevor.gamblin@windriver.com \
    --cc=tylerwhall@gmail.com \
    --cc=vinay.kumar@blackfigtech.com \
    --cc=vinay.m.engg@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.