Message ID | 20221220112459.1734179-1-Anton.Antonov@arm.com |
---|---|
State | New |
Headers | show |
Series | [langdale,master,v3] rust: Do not use default compiler flags defined in CC crate | expand |
Hello, this fails on the autobuilders: https://autobuilder.yoctoproject.org/typhoon/#/builders/64/builds/6362/steps/11/logs/stdio https://autobuilder.yoctoproject.org/typhoon/#/builders/52/builds/6274/steps/12/logs/stdio On 20/12/2022 11:24:59+0000, Anton Antonov wrote: > Rust crates build dependecy C libraries using "CC" crate. > This crate adds some default compiler parameters depending on target arch. > For some target archs these parameters conflict with the parameters defined by OE. > > Warnings/errors like this can be seen in the case: > > cc1: error: switch '-mcpu=cortex-a15' conflicts with switch '-march=armv7-a+fp' [-Werror] > > Lets use only the OE parameters by exporting CRATE_CC_NO_DEFAULTS. > https://github.com/rust-lang/cc-rs#external-configuration-via-environment-variables > > This patch fixes https://bugzilla.yoctoproject.org/show_bug.cgi?id=14947 > > Signed-off-by: Anton Antonov <Anton.Antonov@arm.com> > --- > meta/classes-recipe/rust-target-config.bbclass | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass > index 2710b4325d..5685897462 100644 > --- a/meta/classes-recipe/rust-target-config.bbclass > +++ b/meta/classes-recipe/rust-target-config.bbclass > @@ -401,3 +401,16 @@ python do_rust_gen_targets () { > addtask rust_gen_targets after do_patch before do_compile > do_rust_gen_targets[dirs] += "${RUST_TARGETS_DIR}" > > +# For building C dependecies use only compiler parameters defined in OE-core > +# and ignore the default parameters defined in the CC crate. > +# https://github.com/rust-lang/cc-rs#external-configuration-via-environment-variables > + > +# The CC crate checks for CRATE_CC_NO_DEFAULTS existence not value. > +# Even empty CRATE_CC_NO_DEFAULTS will be taken into account. > +# For rust native recipes we still rely on the CC crate parameters. > +# Currently it's not possible to export a variable conditionally, > +# so, let's export it for class-target only > + > +do_compile:prepend:class-target() { > + export CRATE_CC_NO_DEFAULTS=1 > +} > -- > 2.25.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#174846): https://lists.openembedded.org/g/openembedded-core/message/174846 > Mute This Topic: https://lists.openembedded.org/mt/95783763/3617179 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com] > -=-=-=-=-=-=-=-=-=-=-=- >
Hi Alexandre, It looks like in rust classes we don't define compiler parameter not only for native recipes, but for x86 targets also. I need to think about a different approach to fix the issue. Cheers, Anton
diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass index 2710b4325d..5685897462 100644 --- a/meta/classes-recipe/rust-target-config.bbclass +++ b/meta/classes-recipe/rust-target-config.bbclass @@ -401,3 +401,16 @@ python do_rust_gen_targets () { addtask rust_gen_targets after do_patch before do_compile do_rust_gen_targets[dirs] += "${RUST_TARGETS_DIR}" +# For building C dependecies use only compiler parameters defined in OE-core +# and ignore the default parameters defined in the CC crate. +# https://github.com/rust-lang/cc-rs#external-configuration-via-environment-variables + +# The CC crate checks for CRATE_CC_NO_DEFAULTS existence not value. +# Even empty CRATE_CC_NO_DEFAULTS will be taken into account. +# For rust native recipes we still rely on the CC crate parameters. +# Currently it's not possible to export a variable conditionally, +# so, let's export it for class-target only + +do_compile:prepend:class-target() { + export CRATE_CC_NO_DEFAULTS=1 +}
Rust crates build dependecy C libraries using "CC" crate. This crate adds some default compiler parameters depending on target arch. For some target archs these parameters conflict with the parameters defined by OE. Warnings/errors like this can be seen in the case: cc1: error: switch '-mcpu=cortex-a15' conflicts with switch '-march=armv7-a+fp' [-Werror] Lets use only the OE parameters by exporting CRATE_CC_NO_DEFAULTS. https://github.com/rust-lang/cc-rs#external-configuration-via-environment-variables This patch fixes https://bugzilla.yoctoproject.org/show_bug.cgi?id=14947 Signed-off-by: Anton Antonov <Anton.Antonov@arm.com> --- meta/classes-recipe/rust-target-config.bbclass | 13 +++++++++++++ 1 file changed, 13 insertions(+)