public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix u-boot-script packages conflict
@ 2022-01-11  9:36 Anton Mikanovich
  2022-01-11  9:36 ` [PATCH 1/2] dpkg: Allow parallel build of different package versions Anton Mikanovich
  2022-01-11  9:36 ` [PATCH 2/2] u-boot-script: Split packages by kernel Anton Mikanovich
  0 siblings, 2 replies; 12+ messages in thread
From: Anton Mikanovich @ 2022-01-11  9:36 UTC (permalink / raw)
  To: isar-users; +Cc: Anton Mikanovich

When trying to execute do_prepare_build task of u-boot-script package
for some targets 'multiple execution' occurs:

$ bitbake mc:bananapi-buster:u-boot-script:do_prepare_build mc:de0-nano-soc-buster:u-boot-script:do_prepare_build
ERROR: Detect multiple executions of do_prepare_build in /build/tmp/work/debian-buster-armhf/u-boot-script/1.1-r0
ERROR: Rerun a clean build with empty STAMPCLEAN and compare the sigdata files

This is caused by different u-boot-script packages building in the same
directory. The difference between those two output debs is dependency on
linux-image-${KERNEL_NAME}, so we need to separate them and fix Isar to
allow parallel building.

Anton Mikanovich (2):
  dpkg: Allow parallel build of different package versions
  u-boot-script: Split packages by kernel

 meta/classes/dpkg-base.bbclass                      | 7 +++++--
 meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb | 3 +++
 2 files changed, 8 insertions(+), 2 deletions(-)

-- 
2.25.1


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

* [PATCH 1/2] dpkg: Allow parallel build of different package versions
  2022-01-11  9:36 [PATCH 0/2] Fix u-boot-script packages conflict Anton Mikanovich
@ 2022-01-11  9:36 ` Anton Mikanovich
  2022-01-11  9:48   ` Henning Schild
  2022-01-11  9:36 ` [PATCH 2/2] u-boot-script: Split packages by kernel Anton Mikanovich
  1 sibling, 1 reply; 12+ messages in thread
From: Anton Mikanovich @ 2022-01-11  9:36 UTC (permalink / raw)
  To: isar-users; +Cc: Anton Mikanovich

To be able to use different versions of the same package for the
different machines/multiconfigs we need to split workdir mount points
and sstate manifests based on package version.

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
 meta/classes/dpkg-base.bbclass | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index cb5ce4a..8850544 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -158,8 +158,8 @@ def get_package_srcdir(d):
     return s
 
 # Each package should have its own unique build folder, so use
-# recipe name as identifier
-PP = "/home/builder/${PN}"
+# recipe name and version as identifier
+PP = "/home/builder/${P}"
 PPS ?= "${@get_package_srcdir(d)}"
 
 # Empty do_prepare_build() implementation, to be overwritten if needed
@@ -221,6 +221,9 @@ do_dpkg_build[cleandirs] += "${DPKG_SSTATE}"
 do_dpkg_build[sstate-plaindirs] = "${DPKG_SSTATE}"
 do_dpkg_build[sstate-interceptfuncs] = "dpkg_build_sstate_prepare"
 
+# Allow parallel build of different versions
+SSTATE_MANFILEPREFIX .= "-${PV}"
+
 dpkg_build_sstate_prepare() {
     test -n "$(find ${S}/.. -maxdepth 1 -name '*.deb' -print -quit)" &&
         ln -f ${S}/../*.deb -t ${DPKG_SSTATE}
-- 
2.25.1


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

* [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-11  9:36 [PATCH 0/2] Fix u-boot-script packages conflict Anton Mikanovich
  2022-01-11  9:36 ` [PATCH 1/2] dpkg: Allow parallel build of different package versions Anton Mikanovich
@ 2022-01-11  9:36 ` Anton Mikanovich
  2022-01-11  9:50   ` Henning Schild
  2022-01-11 12:03   ` Jan Kiszka
  1 sibling, 2 replies; 12+ messages in thread
From: Anton Mikanovich @ 2022-01-11  9:36 UTC (permalink / raw)
  To: isar-users; +Cc: Anton Mikanovich

u-boot-script package depends on linux-image which is different for the
machines with different KERNEL_NAME. In case of the same distro and
arch those u-boot-script packages will conflict, so we need to set
different versions (based on machine) to allow building in parallel.

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
 meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb b/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb
index e07deee..33ed70f 100644
--- a/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb
+++ b/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb
@@ -16,6 +16,9 @@ SRC_URI = " \
 
 DEBIAN_DEPENDS = "u-boot-tools, linux-image-${KERNEL_NAME}"
 
+# Package version should be machine specific to separate kernel deps
+PV .= "-${MACHINE}"
+
 do_install() {
 	install -v -d ${D}/usr/sbin
 	install -v -m 755 ${WORKDIR}/update-u-boot-script ${D}/usr/sbin/
-- 
2.25.1


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

* Re: [PATCH 1/2] dpkg: Allow parallel build of different package versions
  2022-01-11  9:36 ` [PATCH 1/2] dpkg: Allow parallel build of different package versions Anton Mikanovich
@ 2022-01-11  9:48   ` Henning Schild
  0 siblings, 0 replies; 12+ messages in thread
From: Henning Schild @ 2022-01-11  9:48 UTC (permalink / raw)
  To: Anton Mikanovich; +Cc: isar-users

Am Tue, 11 Jan 2022 12:36:55 +0300
schrieb Anton Mikanovich <amikan@ilbers.de>:

> To be able to use different versions of the same package for the
> different machines/multiconfigs we need to split workdir mount points
> and sstate manifests based on package version.
> 
> Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
> ---
>  meta/classes/dpkg-base.bbclass | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/classes/dpkg-base.bbclass
> b/meta/classes/dpkg-base.bbclass index cb5ce4a..8850544 100644
> --- a/meta/classes/dpkg-base.bbclass
> +++ b/meta/classes/dpkg-base.bbclass
> @@ -158,8 +158,8 @@ def get_package_srcdir(d):
>      return s
>  
>  # Each package should have its own unique build folder, so use
> -# recipe name as identifier
> -PP = "/home/builder/${PN}"
> +# recipe name and version as identifier
> +PP = "/home/builder/${P}"

Better go directly for PF to also cover PR

>  PPS ?= "${@get_package_srcdir(d)}"
>  
>  # Empty do_prepare_build() implementation, to be overwritten if
> needed @@ -221,6 +221,9 @@ do_dpkg_build[cleandirs] +=
> "${DPKG_SSTATE}" do_dpkg_build[sstate-plaindirs] = "${DPKG_SSTATE}"
>  do_dpkg_build[sstate-interceptfuncs] = "dpkg_build_sstate_prepare"
>  
> +# Allow parallel build of different versions
> +SSTATE_MANFILEPREFIX .= "-${PV}"

I guess it should be
SSTATE_MANFILEPREFIX = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-${PF}
or .= "${PV}-${PR}"

Henning

>  dpkg_build_sstate_prepare() {
>      test -n "$(find ${S}/.. -maxdepth 1 -name '*.deb' -print -quit)"
> && ln -f ${S}/../*.deb -t ${DPKG_SSTATE}


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

* Re: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-11  9:36 ` [PATCH 2/2] u-boot-script: Split packages by kernel Anton Mikanovich
@ 2022-01-11  9:50   ` Henning Schild
  2022-01-11 12:03   ` Jan Kiszka
  1 sibling, 0 replies; 12+ messages in thread
From: Henning Schild @ 2022-01-11  9:50 UTC (permalink / raw)
  To: Anton Mikanovich; +Cc: isar-users

Am Tue, 11 Jan 2022 12:36:56 +0300
schrieb Anton Mikanovich <amikan@ilbers.de>:

> u-boot-script package depends on linux-image which is different for
> the machines with different KERNEL_NAME. In case of the same distro
> and arch those u-boot-script packages will conflict, so we need to set
> different versions (based on machine) to allow building in parallel.
> 
> Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
> ---
>  meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb
> b/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb index
> e07deee..33ed70f 100644 ---
> a/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb +++
> b/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb @@ -16,6 +16,9
> @@ SRC_URI = " \ 
>  DEBIAN_DEPENDS = "u-boot-tools, linux-image-${KERNEL_NAME}"
>  
> +# Package version should be machine specific to separate kernel deps
> +PV .= "-${MACHINE}"

Doing this in PV is strange, it should be done in PN .. maybe with
KERNEL_NAME and not MACHINE

Henning

>  do_install() {
>  	install -v -d ${D}/usr/sbin
>  	install -v -m 755 ${WORKDIR}/update-u-boot-script
> ${D}/usr/sbin/


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

* Re: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-11  9:36 ` [PATCH 2/2] u-boot-script: Split packages by kernel Anton Mikanovich
  2022-01-11  9:50   ` Henning Schild
@ 2022-01-11 12:03   ` Jan Kiszka
  2022-01-11 15:05     ` Anton Mikanovich
  1 sibling, 1 reply; 12+ messages in thread
From: Jan Kiszka @ 2022-01-11 12:03 UTC (permalink / raw)
  To: Anton Mikanovich, isar-users

On 11.01.22 10:36, Anton Mikanovich wrote:
> u-boot-script package depends on linux-image which is different for the
> machines with different KERNEL_NAME. In case of the same distro and
> arch those u-boot-script packages will conflict, so we need to set
> different versions (based on machine) to allow building in parallel.
> 

It makes no sense to build the same package with the same content 
multiple times. We likely rather need to make it depend on a generic 
kernel package / create a generic kernel package name.

Jan

> Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
> ---
>   meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb b/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb
> index e07deee..33ed70f 100644
> --- a/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb
> +++ b/meta/recipes-bsp/u-boot-script/u-boot-script_1.1.bb
> @@ -16,6 +16,9 @@ SRC_URI = " \
>   
>   DEBIAN_DEPENDS = "u-boot-tools, linux-image-${KERNEL_NAME}"
>   
> +# Package version should be machine specific to separate kernel deps
> +PV .= "-${MACHINE}"
> +
>   do_install() {
>   	install -v -d ${D}/usr/sbin
>   	install -v -m 755 ${WORKDIR}/update-u-boot-script ${D}/usr/sbin/

-- 
Siemens AG, Technology
Competence Center Embedded Linux

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

* Re: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-11 12:03   ` Jan Kiszka
@ 2022-01-11 15:05     ` Anton Mikanovich
  2022-01-11 15:56       ` Jan Kiszka
  0 siblings, 1 reply; 12+ messages in thread
From: Anton Mikanovich @ 2022-01-11 15:05 UTC (permalink / raw)
  To: Jan Kiszka, isar-users

11.01.2022 15:03, Jan Kiszka wrote:
> It makes no sense to build the same package with the same content 
> multiple times. We likely rather need to make it depend on a generic 
> kernel package / create a generic kernel package name.
>
> Jan

I'm afraid it will not help - moving this dependency into another 
package will also move the issue into this new package.


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

* Re: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-11 15:05     ` Anton Mikanovich
@ 2022-01-11 15:56       ` Jan Kiszka
  2022-01-12 13:34         ` Anton Mikanovich
  0 siblings, 1 reply; 12+ messages in thread
From: Jan Kiszka @ 2022-01-11 15:56 UTC (permalink / raw)
  To: Anton Mikanovich, isar-users

On 11.01.22 16:05, Anton Mikanovich wrote:
> 11.01.2022 15:03, Jan Kiszka wrote:
>> It makes no sense to build the same package with the same content 
>> multiple times. We likely rather need to make it depend on a generic 
>> kernel package / create a generic kernel package name.
>>
>> Jan
> 
> I'm afraid it will not help - moving this dependency into another 
> package will also move the issue into this new package.
> 

It will. We just have to make u-boot-script depend on a generic kernel 
so that this package is only installed after some kernel - no matter 
which one - is already installed on the target image. There is NO 
dependency on the concrete kernel in this packages, just study it.

Jan

-- 
Siemens AG, Technology
Competence Center Embedded Linux

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

* Re: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-11 15:56       ` Jan Kiszka
@ 2022-01-12 13:34         ` Anton Mikanovich
  2022-01-12 13:51           ` Schmidt, Adriaan
  2022-01-12 13:58           ` Jan Kiszka
  0 siblings, 2 replies; 12+ messages in thread
From: Anton Mikanovich @ 2022-01-12 13:34 UTC (permalink / raw)
  To: Jan Kiszka, isar-users

11.01.2022 18:56, Jan Kiszka wrote:
> On 11.01.22 16:05, Anton Mikanovich wrote:
>> 11.01.2022 15:03, Jan Kiszka wrote:
>>> It makes no sense to build the same package with the same content 
>>> multiple times. We likely rather need to make it depend on a generic 
>>> kernel package / create a generic kernel package name.
>>>
>>> Jan
>>
>> I'm afraid it will not help - moving this dependency into another 
>> package will also move the issue into this new package.
>>
>
> It will. We just have to make u-boot-script depend on a generic kernel 
> so that this package is only installed after some kernel - no matter 
> which one - is already installed on the target image. There is NO 
> dependency on the concrete kernel in this packages, just study it.
>
> Jan

Can you please provide any details about how it can be implemented?
We have linux-image-generic package in Ubuntu, but not in Debian. And we 
can't just create it, because of the same deps conflict issue in Isar.
I understood u-boot-script depends on any kernel, but we need to declare 
this 'any' somehow.


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

* RE: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-12 13:34         ` Anton Mikanovich
@ 2022-01-12 13:51           ` Schmidt, Adriaan
  2022-01-12 13:59             ` Jan Kiszka
  2022-01-12 13:58           ` Jan Kiszka
  1 sibling, 1 reply; 12+ messages in thread
From: Schmidt, Adriaan @ 2022-01-12 13:51 UTC (permalink / raw)
  To: Anton Mikanovich, jan.kiszka, isar-users

Anton Mikanovich, Mittwoch, 12. Januar 2022 14:35:
> 11.01.2022 18:56, Jan Kiszka wrote:
> > On 11.01.22 16:05, Anton Mikanovich wrote:
> >> 11.01.2022 15:03, Jan Kiszka wrote:
> >>> It makes no sense to build the same package with the same content
> >>> multiple times. We likely rather need to make it depend on a generic
> >>> kernel package / create a generic kernel package name.
> >>>
> >>> Jan
> >>
> >> I'm afraid it will not help - moving this dependency into another
> >> package will also move the issue into this new package.
> >>
> >
> > It will. We just have to make u-boot-script depend on a generic kernel
> > so that this package is only installed after some kernel - no matter
> > which one - is already installed on the target image. There is NO
> > dependency on the concrete kernel in this packages, just study it.
> >
> > Jan
> 
> Can you please provide any details about how it can be implemented?
> We have linux-image-generic package in Ubuntu, but not in Debian. And we
> can't just create it, because of the same deps conflict issue in Isar.
> I understood u-boot-script depends on any kernel, but we need to declare
> this 'any' somehow.

OE has the concept of virtual providers:
https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#metadata-virtual-providers
And it looks like the PREFERRED_PROVIDER_* variables are a bitbake feature, so it shouldn't be too hard to do something like this in Isar.

@Jan: I assume this is what you had in mind?

Adriaan




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

* Re: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-12 13:34         ` Anton Mikanovich
  2022-01-12 13:51           ` Schmidt, Adriaan
@ 2022-01-12 13:58           ` Jan Kiszka
  1 sibling, 0 replies; 12+ messages in thread
From: Jan Kiszka @ 2022-01-12 13:58 UTC (permalink / raw)
  To: Anton Mikanovich, isar-users

On 12.01.22 14:34, Anton Mikanovich wrote:
> 11.01.2022 18:56, Jan Kiszka wrote:
>> On 11.01.22 16:05, Anton Mikanovich wrote:
>>> 11.01.2022 15:03, Jan Kiszka wrote:
>>>> It makes no sense to build the same package with the same content 
>>>> multiple times. We likely rather need to make it depend on a generic 
>>>> kernel package / create a generic kernel package name.
>>>>
>>>> Jan
>>>
>>> I'm afraid it will not help - moving this dependency into another 
>>> package will also move the issue into this new package.
>>>
>>
>> It will. We just have to make u-boot-script depend on a generic kernel 
>> so that this package is only installed after some kernel - no matter 
>> which one - is already installed on the target image. There is NO 
>> dependency on the concrete kernel in this packages, just study it.
>>
>> Jan
> 
> Can you please provide any details about how it can be implemented?
> We have linux-image-generic package in Ubuntu, but not in Debian. And we 
> can't just create it, because of the same deps conflict issue in Isar.
> I understood u-boot-script depends on any kernel, but we need to declare 
> this 'any' somehow.
> 

Two directions to resolve that:

1. make it depend on some linux-image-custom (to-be-added "Provides:" of
    our kernels) | linux-image-<list of distro kernels>

2. clarify if a kernel actually has to be installed prior to
    u-boot-script or if the kernel script hook isn't enough (or can be
    made enough)

Jan

-- 
Siemens AG, Technology
Competence Center Embedded Linux

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

* Re: [PATCH 2/2] u-boot-script: Split packages by kernel
  2022-01-12 13:51           ` Schmidt, Adriaan
@ 2022-01-12 13:59             ` Jan Kiszka
  0 siblings, 0 replies; 12+ messages in thread
From: Jan Kiszka @ 2022-01-12 13:59 UTC (permalink / raw)
  To: Schmidt, Adriaan (T CED SES-DE), Anton Mikanovich, isar-users

On 12.01.22 14:51, Schmidt, Adriaan (T CED SES-DE) wrote:
> Anton Mikanovich, Mittwoch, 12. Januar 2022 14:35:
>> 11.01.2022 18:56, Jan Kiszka wrote:
>>> On 11.01.22 16:05, Anton Mikanovich wrote:
>>>> 11.01.2022 15:03, Jan Kiszka wrote:
>>>>> It makes no sense to build the same package with the same content
>>>>> multiple times. We likely rather need to make it depend on a generic
>>>>> kernel package / create a generic kernel package name.
>>>>>
>>>>> Jan
>>>>
>>>> I'm afraid it will not help - moving this dependency into another
>>>> package will also move the issue into this new package.
>>>>
>>>
>>> It will. We just have to make u-boot-script depend on a generic kernel
>>> so that this package is only installed after some kernel - no matter
>>> which one - is already installed on the target image. There is NO
>>> dependency on the concrete kernel in this packages, just study it.
>>>
>>> Jan
>>
>> Can you please provide any details about how it can be implemented?
>> We have linux-image-generic package in Ubuntu, but not in Debian. And we
>> can't just create it, because of the same deps conflict issue in Isar.
>> I understood u-boot-script depends on any kernel, but we need to declare
>> this 'any' somehow.
> 
> OE has the concept of virtual providers:
> https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#metadata-virtual-providers
> And it looks like the PREFERRED_PROVIDER_* variables are a bitbake feature, so it shouldn't be too hard to do something like this in Isar.
> 
> @Jan: I assume this is what you had in mind?

Yes and no: Yes, we would need just a provider, no, his won't help us as 
we need it as runtime dependency, and Debian kernel do not expose that. 
See my other reply.

Jan

-- 
Siemens AG, Technology
Competence Center Embedded Linux

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

end of thread, other threads:[~2022-01-12 13:59 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-11  9:36 [PATCH 0/2] Fix u-boot-script packages conflict Anton Mikanovich
2022-01-11  9:36 ` [PATCH 1/2] dpkg: Allow parallel build of different package versions Anton Mikanovich
2022-01-11  9:48   ` Henning Schild
2022-01-11  9:36 ` [PATCH 2/2] u-boot-script: Split packages by kernel Anton Mikanovich
2022-01-11  9:50   ` Henning Schild
2022-01-11 12:03   ` Jan Kiszka
2022-01-11 15:05     ` Anton Mikanovich
2022-01-11 15:56       ` Jan Kiszka
2022-01-12 13:34         ` Anton Mikanovich
2022-01-12 13:51           ` Schmidt, Adriaan
2022-01-12 13:59             ` Jan Kiszka
2022-01-12 13:58           ` Jan Kiszka

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