public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [V2][oe][master][PATCH] packagegroup-cross-canadian: repackage when multilibs gcc gdb binutils changes
@ 2020-12-08  1:58 Jiping Ma
  2020-12-24  7:03 ` [OE-core] " Chen Qi
  0 siblings, 1 reply; 4+ messages in thread
From: Jiping Ma @ 2020-12-08  1:58 UTC (permalink / raw)
  To: openembedded-core, yue.tao, jiping.ma2

1. Build SDK without "MULTILIBS = """ in local.conf.
2. Build SDK again with "MULTILIBS = """ in local.conf, build will fail with the error info.
Error:
 Problem: conflicting requests
  - nothing provides binutils-cross-canadian-arm needed by packagegroup-cross-canadian-nxp-ls1028-1.0-r0.x86_64_nativesdk
  - ......

Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
---
 .../packagegroups/packagegroup-cross-canadian.bb  | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
index 3b430c0814..b6b3e5235f 100644
--- a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
@@ -17,8 +17,13 @@ RDEPENDS_${PN} = "\
     meta-environment-${MACHINE} \
     "
 
-# When TUNE_ARCH changes but MACHINE does not (for example when a machine definition is updated), 
-# cross-canadian.bbclass prevents variable dependency propagation to TRANSLATED_TARGET_ARCH
-# This will result in erroneous reuse of previous sstate packages. The following line
-# establishes a direct dependency instead.
-do_package[vardeps] += "TUNE_ARCH"
+# When TUNE_ARCH, GCC, GDB, BINUTILS changes but MACHINE does not (for example when a machine 
+# definition is updated), cross-canadian.bbclass prevents variable dependency propagation to 
+# TRANSLATED_TARGET_ARCH This will result in erroneous reuse of previous sstate packages. The
+# following line establishes a direct dependency instead.
+do_package[vardeps] += "\
+    ${@all_multilib_tune_values(d, 'BINUTILS')} \
+    ${@all_multilib_tune_values(d, 'GDB')} \
+    ${@all_multilib_tune_values(d, 'GCC')} \
+    TUNE_ARCH \
+    "
-- 
2.23.0


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

* Re: [OE-core] [V2][oe][master][PATCH] packagegroup-cross-canadian: repackage when multilibs gcc gdb binutils changes
  2020-12-08  1:58 [V2][oe][master][PATCH] packagegroup-cross-canadian: repackage when multilibs gcc gdb binutils changes Jiping Ma
@ 2020-12-24  7:03 ` Chen Qi
  2021-01-04 21:00   ` Randy MacLeod
  0 siblings, 1 reply; 4+ messages in thread
From: Chen Qi @ 2020-12-24  7:03 UTC (permalink / raw)
  To: openembedded-core

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

ping

On 12/08/2020 09:58 AM, Jiping Ma wrote:
> 1. Build SDK without "MULTILIBS = """ in local.conf.
> 2. Build SDK again with "MULTILIBS = """ in local.conf, build will fail with the error info.
> Error:
>   Problem: conflicting requests
>    - nothing provides binutils-cross-canadian-arm needed by packagegroup-cross-canadian-nxp-ls1028-1.0-r0.x86_64_nativesdk
>    - ......
>
> Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
> ---
>   .../packagegroups/packagegroup-cross-canadian.bb  | 15 ++++++++++-----
>   1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
> index 3b430c0814..b6b3e5235f 100644
> --- a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
> +++ b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
> @@ -17,8 +17,13 @@ RDEPENDS_${PN} = "\
>       meta-environment-${MACHINE} \
>       "
>   
> -# When TUNE_ARCH changes but MACHINE does not (for example when a machine definition is updated),
> -# cross-canadian.bbclass prevents variable dependency propagation to TRANSLATED_TARGET_ARCH
> -# This will result in erroneous reuse of previous sstate packages. The following line
> -# establishes a direct dependency instead.
> -do_package[vardeps] += "TUNE_ARCH"
> +# When TUNE_ARCH, GCC, GDB, BINUTILS changes but MACHINE does not (for example when a machine
> +# definition is updated), cross-canadian.bbclass prevents variable dependency propagation to
> +# TRANSLATED_TARGET_ARCH This will result in erroneous reuse of previous sstate packages. The
> +# following line establishes a direct dependency instead.
> +do_package[vardeps] += "\
> +    ${@all_multilib_tune_values(d, 'BINUTILS')} \
> +    ${@all_multilib_tune_values(d, 'GDB')} \
> +    ${@all_multilib_tune_values(d, 'GCC')} \
> +    TUNE_ARCH \
> +    "
>
>
> 
>


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

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

* Re: [OE-core] [V2][oe][master][PATCH] packagegroup-cross-canadian: repackage when multilibs gcc gdb binutils changes
  2020-12-24  7:03 ` [OE-core] " Chen Qi
@ 2021-01-04 21:00   ` Randy MacLeod
  2021-01-04 21:17     ` Richard Purdie
  0 siblings, 1 reply; 4+ messages in thread
From: Randy MacLeod @ 2021-01-04 21:00 UTC (permalink / raw)
  To: Chen Qi, openembedded-core, Richard Purdie

On 2020-12-24 2:03 a.m., Chen Qi wrote:
> ping

Ping v2.

Is there a problem with this solution or
do you think we shouldn't handle the use case for some reason?

../Randy
> 
> On 12/08/2020 09:58 AM, Jiping Ma wrote:
>> 1. Build SDK without "MULTILIBS = """ in local.conf.
>> 2. Build SDK again with "MULTILIBS = """ in local.conf, build will fail with the error info.
>> Error:
>>   Problem: conflicting requests
>>    - nothing provides binutils-cross-canadian-arm needed by packagegroup-cross-canadian-nxp-ls1028-1.0-r0.x86_64_nativesdk
>>    - ......
>>
>> Signed-off-by: Jiping Ma<jiping.ma2@windriver.com>
>> ---
>>   .../packagegroups/packagegroup-cross-canadian.bb  | 15 ++++++++++-----
>>   1 file changed, 10 insertions(+), 5 deletions(-)
>>
>> diff --git a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
>> index 3b430c0814..b6b3e5235f 100644
>> --- a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
>> +++ b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
>> @@ -17,8 +17,13 @@ RDEPENDS_${PN} = "\
>>       meta-environment-${MACHINE} \
>>       "
>>   
>> -# When TUNE_ARCH changes but MACHINE does not (for example when a machine definition is updated),
>> -# cross-canadian.bbclass prevents variable dependency propagation to TRANSLATED_TARGET_ARCH
>> -# This will result in erroneous reuse of previous sstate packages. The following line
>> -# establishes a direct dependency instead.
>> -do_package[vardeps] += "TUNE_ARCH"
>> +# When TUNE_ARCH, GCC, GDB, BINUTILS changes but MACHINE does not (for example when a machine
>> +# definition is updated), cross-canadian.bbclass prevents variable dependency propagation to
>> +# TRANSLATED_TARGET_ARCH This will result in erroneous reuse of previous sstate packages. The
>> +# following line establishes a direct dependency instead.
>> +do_package[vardeps] += "\
>> +    ${@all_multilib_tune_values(d, 'BINUTILS')} \
>> +    ${@all_multilib_tune_values(d, 'GDB')} \
>> +    ${@all_multilib_tune_values(d, 'GCC')} \
>> +    TUNE_ARCH \
>> +    "
>>
>>
> 
> 
> 
> 
> 


-- 
# Randy MacLeod
# Wind River Linux

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

* Re: [OE-core] [V2][oe][master][PATCH] packagegroup-cross-canadian: repackage when multilibs gcc gdb binutils changes
  2021-01-04 21:00   ` Randy MacLeod
@ 2021-01-04 21:17     ` Richard Purdie
  0 siblings, 0 replies; 4+ messages in thread
From: Richard Purdie @ 2021-01-04 21:17 UTC (permalink / raw)
  To: Randy MacLeod, Chen Qi, openembedded-core

On Mon, 2021-01-04 at 16:00 -0500, Randy MacLeod wrote:
> On 2020-12-24 2:03 a.m., Chen Qi wrote:
> > ping
> 
> Ping v2.
> 
> Is there a problem with this solution or
> do you think we shouldn't handle the use case for some reason?
> 
> ../Randy
> > 
> > On 12/08/2020 09:58 AM, Jiping Ma wrote:
> > > 1. Build SDK without "MULTILIBS = """ in local.conf.
> > > 2. Build SDK again with "MULTILIBS = """ in local.conf, build
> > > will fail with the error info.
> > > Error:
> > >   Problem: conflicting requests
> > >    - nothing provides binutils-cross-canadian-arm needed by
> > > packagegroup-cross-canadian-nxp-ls1028-1.0-r0.x86_64_nativesdk
> > >    - ......
> > > diff --git a/meta/recipes-core/packagegroups/packagegroup-cross-
> > > canadian.bb b/meta/recipes-core/packagegroups/packagegroup-cross-
> > > canadian.bb
> > > index 3b430c0814..b6b3e5235f 100644
> > > --- a/meta/recipes-core/packagegroups/packagegroup-cross-
> > > canadian.bb
> > > +++ b/meta/recipes-core/packagegroups/packagegroup-cross-
> > > canadian.bb
> > > @@ -17,8 +17,13 @@ RDEPENDS_${PN} = "\
> > >       meta-environment-${MACHINE} \
> > >       "
> > >   
> > > -# When TUNE_ARCH changes but MACHINE does not (for example when
> > > a machine definition is updated),
> > > -# cross-canadian.bbclass prevents variable dependency
> > > propagation to TRANSLATED_TARGET_ARCH
> > > -# This will result in erroneous reuse of previous sstate
> > > packages. The following line
> > > -# establishes a direct dependency instead.
> > > -do_package[vardeps] += "TUNE_ARCH"
> > > +# When TUNE_ARCH, GCC, GDB, BINUTILS changes but MACHINE does
> > > not (for example when a machine
> > > +# definition is updated), cross-canadian.bbclass prevents
> > > variable dependency propagation to
> > > +# TRANSLATED_TARGET_ARCH This will result in erroneous reuse of
> > > previous sstate packages. The
> > > +# following line establishes a direct dependency instead.
> > > +do_package[vardeps] += "\
> > > +    ${@all_multilib_tune_values(d, 'BINUTILS')} \
> > > +    ${@all_multilib_tune_values(d, 'GDB')} \
> > > +    ${@all_multilib_tune_values(d, 'GCC')} \
> > > +    TUNE_ARCH \
> > > +    "

I keep putting off reviewing this as its wrong in several different
ways and its hard to explain. In particular:

a) vardeps takes names of variables yet all_multilib_tune_values()
returns values, not variable names. This alone makes it incorrect.

b) BINUTILS, GCC and GDB are artificial constructs which change with
TRANSLATED_TARGET_ARCH only so listing three values here is 
suboptimal, we just need to worry about TRANSLATED_TARGET_ARCH.

So really you want a way to say "depend on all the multilib versions of
TUNE_ARCH" but there is no way to express such a thing as a list of
variables.

You could put ${@all_multilib_tune_values(d, 'TRANSLATED_TARGET_ARCH')}
replacing TUNE_ARCH and it would probably work just as well as the
above but is also technically incorrect due to a).

I don't know how to fix this properly, except perhaps constructing an
artifical variable which does contain the expanded values of
TRANSLATED_TARGET_ARCH as vardepvalues?

Cheers,

Richard


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

end of thread, other threads:[~2021-01-04 21:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-08  1:58 [V2][oe][master][PATCH] packagegroup-cross-canadian: repackage when multilibs gcc gdb binutils changes Jiping Ma
2020-12-24  7:03 ` [OE-core] " Chen Qi
2021-01-04 21:00   ` Randy MacLeod
2021-01-04 21:17     ` Richard Purdie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox