Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools
@ 2020-06-17 23:07 Christopher Clark
  2020-06-17 23:12 ` [OE-core] " Richard Purdie
  0 siblings, 1 reply; 6+ messages in thread
From: Christopher Clark @ 2020-06-17 23:07 UTC (permalink / raw)
  To: openembedded-core

Both grub-native and grub-efi-native included packaging for the
grub-mkimage and grub-editenv tools, which prevented concurrent
installation of both the grub-native and grub-efi-native packages.
This caused errors on image generation with wic when populating
partitions with both legacy and efi boot support, so resolve this by
removing the duplicated tools from grub-efi-native and add a
runtime dependency from it to grub-native.

Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
---
 meta/recipes-bsp/grub/grub-efi_2.04.bb | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-bsp/grub/grub-efi_2.04.bb b/meta/recipes-bsp/grub/grub-efi_2.04.bb
index b9d6225d27..ed43dee152 100644
--- a/meta/recipes-bsp/grub/grub-efi_2.04.bb
+++ b/meta/recipes-bsp/grub/grub-efi_2.04.bb
@@ -6,6 +6,7 @@ GRUBPLATFORM = "efi"
 
 DEPENDS_append_class-target = " grub-efi-native"
 RDEPENDS_${PN}_class-target = "grub-common virtual/grub-bootconf"
+RDEPENDS_${PN}_class-native = "grub-native"
 
 SRC_URI += " \
            file://cfg \
@@ -61,9 +62,7 @@ do_install_append_class-target() {
 }
 
 do_install_class-native() {
-	install -d ${D}${bindir}
-	install -m 755 grub-mkimage ${D}${bindir}
-	install -m 755 grub-editenv ${D}${bindir}
+	:
 }
 
 do_install_class-target() {
-- 
2.17.1


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

* Re: [OE-core] [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools
  2020-06-17 23:07 [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools Christopher Clark
@ 2020-06-17 23:12 ` Richard Purdie
  2020-06-18  8:27   ` Jacob Kroon
  0 siblings, 1 reply; 6+ messages in thread
From: Richard Purdie @ 2020-06-17 23:12 UTC (permalink / raw)
  To: Christopher Clark, openembedded-core

On Wed, 2020-06-17 at 16:07 -0700, Christopher Clark wrote:
> Both grub-native and grub-efi-native included packaging for the
> grub-mkimage and grub-editenv tools, which prevented concurrent
> installation of both the grub-native and grub-efi-native packages.
> This caused errors on image generation with wic when populating
> partitions with both legacy and efi boot support, so resolve this by
> removing the duplicated tools from grub-efi-native and add a
> runtime dependency from it to grub-native.
> 
> Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
> ---
>  meta/recipes-bsp/grub/grub-efi_2.04.bb | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/recipes-bsp/grub/grub-efi_2.04.bb b/meta/recipes-
> bsp/grub/grub-efi_2.04.bb
> index b9d6225d27..ed43dee152 100644
> --- a/meta/recipes-bsp/grub/grub-efi_2.04.bb
> +++ b/meta/recipes-bsp/grub/grub-efi_2.04.bb
> @@ -6,6 +6,7 @@ GRUBPLATFORM = "efi"
>  
>  DEPENDS_append_class-target = " grub-efi-native"
>  RDEPENDS_${PN}_class-target = "grub-common virtual/grub-bootconf"
> +RDEPENDS_${PN}_class-native = "grub-native"
>  
>  SRC_URI += " \
>             file://cfg \
> @@ -61,9 +62,7 @@ do_install_append_class-target() {
>  }
>  
>  do_install_class-native() {
> -	install -d ${D}${bindir}
> -	install -m 755 grub-mkimage ${D}${bindir}
> -	install -m 755 grub-editenv ${D}${bindir}
> +	:
>  }
>  
>  do_install_class-target() {

I think we want to PROVIDES_append_class-native = " grub-efi-native" in
grub and then drop the BBCLASSEXTEND from grub-efi?

Cheers,

Richard


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

* Re: [OE-core] [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools
  2020-06-17 23:12 ` [OE-core] " Richard Purdie
@ 2020-06-18  8:27   ` Jacob Kroon
  2020-06-18 21:58     ` Christopher Clark
  0 siblings, 1 reply; 6+ messages in thread
From: Jacob Kroon @ 2020-06-18  8:27 UTC (permalink / raw)
  To: Richard Purdie, Christopher Clark, openembedded-core

On 6/18/20 1:12 AM, Richard Purdie wrote:
> On Wed, 2020-06-17 at 16:07 -0700, Christopher Clark wrote:
>> Both grub-native and grub-efi-native included packaging for the
>> grub-mkimage and grub-editenv tools, which prevented concurrent
>> installation of both the grub-native and grub-efi-native packages.
>> This caused errors on image generation with wic when populating
>> partitions with both legacy and efi boot support, so resolve this by
>> removing the duplicated tools from grub-efi-native and add a
>> runtime dependency from it to grub-native.
>>
>> Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
>> ---
>>   meta/recipes-bsp/grub/grub-efi_2.04.bb | 5 ++---
>>   1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/meta/recipes-bsp/grub/grub-efi_2.04.bb b/meta/recipes-
>> bsp/grub/grub-efi_2.04.bb
>> index b9d6225d27..ed43dee152 100644
>> --- a/meta/recipes-bsp/grub/grub-efi_2.04.bb
>> +++ b/meta/recipes-bsp/grub/grub-efi_2.04.bb
>> @@ -6,6 +6,7 @@ GRUBPLATFORM = "efi"
>>   
>>   DEPENDS_append_class-target = " grub-efi-native"
>>   RDEPENDS_${PN}_class-target = "grub-common virtual/grub-bootconf"
>> +RDEPENDS_${PN}_class-native = "grub-native"
>>   
>>   SRC_URI += " \
>>              file://cfg \
>> @@ -61,9 +62,7 @@ do_install_append_class-target() {
>>   }
>>   
>>   do_install_class-native() {
>> -	install -d ${D}${bindir}
>> -	install -m 755 grub-mkimage ${D}${bindir}
>> -	install -m 755 grub-editenv ${D}${bindir}
>> +	:
>>   }
>>   
>>   do_install_class-target() {
> 
> I think we want to PROVIDES_append_class-native = " grub-efi-native" in
> grub and then drop the BBCLASSEXTEND from grub-efi?
> 

Just for the record, I tested building grub-native (x86-64) both with 
platform "pc" and "efi", and in the same build directory, and all tools 
in ${bindir} were binary identical. Asking in #grub on freenode also 
confirmed this, apparently Debian packaging also assumes this.

So no grub-efi-native required, and we can remove that 
_class_target/_class_native special handling as well.

Jacob

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

* Re: [OE-core] [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools
  2020-06-18  8:27   ` Jacob Kroon
@ 2020-06-18 21:58     ` Christopher Clark
  2020-06-19 19:35       ` Jacob Kroon
  0 siblings, 1 reply; 6+ messages in thread
From: Christopher Clark @ 2020-06-18 21:58 UTC (permalink / raw)
  To: Jacob Kroon; +Cc: Richard Purdie, OE-core

On Thu, Jun 18, 2020 at 1:27 AM Jacob Kroon <jacob.kroon@gmail.com> wrote:
>
> On 6/18/20 1:12 AM, Richard Purdie wrote:
> > On Wed, 2020-06-17 at 16:07 -0700, Christopher Clark wrote:
> >> Both grub-native and grub-efi-native included packaging for the
> >> grub-mkimage and grub-editenv tools, which prevented concurrent
> >> installation of both the grub-native and grub-efi-native packages.
> >> This caused errors on image generation with wic when populating
> >> partitions with both legacy and efi boot support, so resolve this by
> >> removing the duplicated tools from grub-efi-native and add a
> >> runtime dependency from it to grub-native.> >>
> >
> > I think we want to PROVIDES_append_class-native = " grub-efi-native" in
> > grub and then drop the BBCLASSEXTEND from grub-efi?
>
> Just for the record, I tested building grub-native (x86-64) both with
> platform "pc" and "efi", and in the same build directory, and all tools
> in ${bindir} were binary identical. Asking in #grub on freenode also
> confirmed this, apparently Debian packaging also assumes this.
>
> So no grub-efi-native required, and we can remove that
> _class_target/_class_native special handling as well.

I'm not as confident as I was about the results of the binary
comparison that I did, since objdump definitely wasn't showing the
strings differences that were clearly present between those binaries.
I think that proposing this change was a mistake since there could
well be other layers that depend on core having separate packages with
behaviour specific to those that is needed. Sorry for the noise.

Christopher

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

* Re: [OE-core] [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools
  2020-06-18 21:58     ` Christopher Clark
@ 2020-06-19 19:35       ` Jacob Kroon
  2020-06-19 23:03         ` Christopher Clark
  0 siblings, 1 reply; 6+ messages in thread
From: Jacob Kroon @ 2020-06-19 19:35 UTC (permalink / raw)
  To: Christopher Clark; +Cc: Richard Purdie, OE-core

On 6/18/20 11:58 PM, Christopher Clark wrote:
> On Thu, Jun 18, 2020 at 1:27 AM Jacob Kroon <jacob.kroon@gmail.com> wrote:
>>
>> On 6/18/20 1:12 AM, Richard Purdie wrote:
>>> On Wed, 2020-06-17 at 16:07 -0700, Christopher Clark wrote:
>>>> Both grub-native and grub-efi-native included packaging for the
>>>> grub-mkimage and grub-editenv tools, which prevented concurrent
>>>> installation of both the grub-native and grub-efi-native packages.
>>>> This caused errors on image generation with wic when populating
>>>> partitions with both legacy and efi boot support, so resolve this by
>>>> removing the duplicated tools from grub-efi-native and add a
>>>> runtime dependency from it to grub-native.> >>
>>>
>>> I think we want to PROVIDES_append_class-native = " grub-efi-native" in
>>> grub and then drop the BBCLASSEXTEND from grub-efi?
>>
>> Just for the record, I tested building grub-native (x86-64) both with
>> platform "pc" and "efi", and in the same build directory, and all tools
>> in ${bindir} were binary identical. Asking in #grub on freenode also
>> confirmed this, apparently Debian packaging also assumes this.
>>
>> So no grub-efi-native required, and we can remove that
>> _class_target/_class_native special handling as well.
> 
> I'm not as confident as I was about the results of the binary
> comparison that I did, since objdump definitely wasn't showing the
> strings differences that were clearly present between those binaries.
> I think that proposing this change was a mistake since there could
> well be other layers that depend on core having separate packages with
> behaviour specific to those that is needed. Sorry for the noise.
> 

I dug some more into this. That GRUB_PKGLIBDIR define which references 
the recipe specific install sysroot is actually unused and could be 
removed. But there are 3 other values that contain the install sysroot 
being encoding in the binaries:

GRUB_DATADIR = 
$TMPDIR/work/x86_64-linux/grub-native/2.04-r0/recipe-sysroot-native/usr/share

GRUB_LIBDIR = 
$TMPDIR/work/x86_64-linux/grub-native/2.04-r0/recipe-sysroot-native/usr/lib

GRUB_SYSCONFDIR = 
$TMPDIR/work/x86_64-linux/grub-native/2.04-r0/recipe-sysroot-native/etc

But all three values refer to directories that are not expected to 
exists at the time they are executed, right ? At least not for me using 
rm_work.bbclass. Where grub-mkimage is used in the efi recipe, -d is 
passed to override the libdir.

So I'd still vote for removing grub-efi-native.

Jacob

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

* Re: [OE-core] [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools
  2020-06-19 19:35       ` Jacob Kroon
@ 2020-06-19 23:03         ` Christopher Clark
  0 siblings, 0 replies; 6+ messages in thread
From: Christopher Clark @ 2020-06-19 23:03 UTC (permalink / raw)
  To: Jacob Kroon; +Cc: Richard Purdie, OE-core

On Fri, Jun 19, 2020 at 12:35 PM Jacob Kroon <jacob.kroon@gmail.com> wrote:
>
> On 6/18/20 11:58 PM, Christopher Clark wrote:
> > On Thu, Jun 18, 2020 at 1:27 AM Jacob Kroon <jacob.kroon@gmail.com> wrote:
> >>
> >> On 6/18/20 1:12 AM, Richard Purdie wrote:
> >>> On Wed, 2020-06-17 at 16:07 -0700, Christopher Clark wrote:
> >>>> Both grub-native and grub-efi-native included packaging for the
> >>>> grub-mkimage and grub-editenv tools, which prevented concurrent
> >>>> installation of both the grub-native and grub-efi-native packages.
> >>>> This caused errors on image generation with wic when populating
> >>>> partitions with both legacy and efi boot support, so resolve this by
> >>>> removing the duplicated tools from grub-efi-native and add a
> >>>> runtime dependency from it to grub-native.> >>
> >>>
> >>> I think we want to PROVIDES_append_class-native = " grub-efi-native" in
> >>> grub and then drop the BBCLASSEXTEND from grub-efi?
> >>
> >> Just for the record, I tested building grub-native (x86-64) both with
> >> platform "pc" and "efi", and in the same build directory, and all tools
> >> in ${bindir} were binary identical. Asking in #grub on freenode also
> >> confirmed this, apparently Debian packaging also assumes this.
> >>
> >> So no grub-efi-native required, and we can remove that
> >> _class_target/_class_native special handling as well.
> >
> > I'm not as confident as I was about the results of the binary
> > comparison that I did, since objdump definitely wasn't showing the
> > strings differences that were clearly present between those binaries.
> > I think that proposing this change was a mistake since there could
> > well be other layers that depend on core having separate packages with
> > behaviour specific to those that is needed. Sorry for the noise.
> >
>
> I dug some more into this. That GRUB_PKGLIBDIR define which references
> the recipe specific install sysroot is actually unused and could be
> removed. But there are 3 other values that contain the install sysroot
> being encoding in the binaries:
>
> GRUB_DATADIR =
> $TMPDIR/work/x86_64-linux/grub-native/2.04-r0/recipe-sysroot-native/usr/share
>
> GRUB_LIBDIR =
> $TMPDIR/work/x86_64-linux/grub-native/2.04-r0/recipe-sysroot-native/usr/lib
>
> GRUB_SYSCONFDIR =
> $TMPDIR/work/x86_64-linux/grub-native/2.04-r0/recipe-sysroot-native/etc
>
> But all three values refer to directories that are not expected to
> exists at the time they are executed, right ? At least not for me using
> rm_work.bbclass. Where grub-mkimage is used in the efi recipe, -d is
> passed to override the libdir.

grub and grub-efi are separate packages because they build different
software to build systems that boot differently, and are packaged that
way in multiple distros. It allows for one version of one tool to be
used and a different version of the other to be used in building the
same system, via Yocto/OE's flexible layer architecture. The same is
true when they are used natively during a build.

I don't know of a case where installing the native version of a
package would instead slipstream in the tools from the other in this
way, and I don't think it's right to do so: it would be
counterintuitive, and so potentially time-consuming to diagnose any
issues arising.

> So I'd still vote for removing grub-efi-native.

Please don't.

Christopher

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

end of thread, other threads:[~2020-06-19 23:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-17 23:07 [PATCH] grub-efi-native: use RDEPENDS on grub-native instead of duplicating tools Christopher Clark
2020-06-17 23:12 ` [OE-core] " Richard Purdie
2020-06-18  8:27   ` Jacob Kroon
2020-06-18 21:58     ` Christopher Clark
2020-06-19 19:35       ` Jacob Kroon
2020-06-19 23:03         ` Christopher Clark

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