[v2,1/3] meta: Fix do_copy_boot_files error for different distros of same machine

Message ID 20240712054327.9526-2-ubely@ilbers.de
State Under Review
Headers show
Series Deploy DTBs with separate recipe | expand

Commit Message

Uladzimir Bely July 12, 2024, 5:09 a.m. UTC
From: Ilia Skochilov <iskochilov@ilbers.de>

When building different distros with the same machine (e.g.,
phyboard-mira-bullseye and phyboard-mira-bookworm) it happens that
some files with the same name (e.g, DTB files) are deployed
to the same location and this causes build error.

Use DISTRO-dependent deploy directory.

Signed-off-by: Ilia Skochilov <iskochilov@ilbers.de>
Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
 RECIPE-API-CHANGELOG.md | 8 ++++++++
 meta/conf/bitbake.conf  | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

Comments

Cedric Hombourger July 12, 2024, 3:06 p.m. UTC | #1
Le vendredi 12 juillet 2024 à 07:43:37 UTC+2, Uladzimir Bely a écrit :

From: Ilia Skochilov <iskoc...@ilbers.de> 

When building different distros with the same machine (e.g., 
phyboard-mira-bullseye and phyboard-mira-bookworm) it happens that 
some files with the same name (e.g, DTB files) are deployed 
to the same location and this causes build error. 

Use DISTRO-dependent deploy directory. 

Signed-off-by: Ilia Skochilov <iskoc...@ilbers.de> 
Signed-off-by: Uladzimir Bely <ub...@ilbers.de> 
--- 
RECIPE-API-CHANGELOG.md | 8 ++++++++ 
meta/conf/bitbake.conf | 2 +- 
2 files changed, 9 insertions(+), 1 deletion(-) 

diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md 
index 12ea93ec..15337a63 100644 
--- a/RECIPE-API-CHANGELOG.md 
+++ b/RECIPE-API-CHANGELOG.md 
@@ -629,3 +629,11 @@ into kernel kbuild package. 
Only the "host" specific package is built automatically at cross builds. 

* Support emulated module build with cross-compiled kernel for linux-module 
+ 
+### Change DEPLOY_DIR_IMAGE 
+Change DEPLOY_DIR_IMAGE from ${DEPLOY_DIR}/images/${MACHINE} to 
+${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}. When building different distros 
+with the same machine the following error occurs:

 
since layers may have multiple kernels (e.g. rt and non-rt) for the same 
machine (and ${DISTRO}), you may need to append -${KERNEL_NAME}
I otherwise fear that some deployments will continue to fail
 


+do_copy_boot_files: The recipe isar-image-base is trying to install files 
+into a shared area when those files already exists. It happens when some 
+files have the same names (e.g., dtb files) for different distros. 
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf 
index 4cfa8b10..1087ca0f 100644 
--- a/meta/conf/bitbake.conf 
+++ b/meta/conf/bitbake.conf 
@@ -56,7 +56,7 @@ WORKDIR = 
"${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}/${PV}-${PR}" 
GIT_DL_LINK_DIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}" 
DEPLOY_DIR_BOOTSTRAP = "${DEPLOY_DIR}/bootstrap" 
DEPLOY_DIR_SDKCHROOT = "${DEPLOY_DIR}/sdkchroot" 
-DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}" 
+DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}" 
DL_DIR ?= "${TOPDIR}/downloads" 
SSTATE_DIR ?= "${TOPDIR}/sstate-cache" 
SSTATE_MANIFESTS = "${TMPDIR}/sstate-control/${DISTRO}-${DISTRO_ARCH}"
Florian Bezdeka July 15, 2024, 6:45 a.m. UTC | #2
On Fri, 2024-07-12 at 08:06 -0700, Cedric Hombourger wrote:
> 
> 
> Le vendredi 12 juillet 2024 à 07:43:37 UTC+2, Uladzimir Bely a écrit :
> > From: Ilia Skochilov <iskoc...@ilbers.de>
> > 
> > When building different distros with the same machine (e.g.,
> > phyboard-mira-bullseye and phyboard-mira-bookworm) it happens that
> > some files with the same name (e.g, DTB files) are deployed
> > to the same location and this causes build error.
> > 
> > Use DISTRO-dependent deploy directory.
> > 
> > Signed-off-by: Ilia Skochilov <iskoc...@ilbers.de>
> > Signed-off-by: Uladzimir Bely <ub...@ilbers.de>
> > ---
> >  RECIPE-API-CHANGELOG.md | 8 ++++++++
> >  meta/conf/bitbake.conf | 2 +-
> >  2 files changed, 9 insertions(+), 1 deletion(-)
> > 
> > diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
> > index 12ea93ec..15337a63 100644
> > --- a/RECIPE-API-CHANGELOG.md
> > +++ b/RECIPE-API-CHANGELOG.md
> > @@ -629,3 +629,11 @@ into kernel kbuild package.
> >  Only the "host" specific package is built automatically at cross builds.
> >  
> > 
> > 
> > 
> >  * Support emulated module build with cross-compiled kernel for linux-module
> > +
> > +### Change DEPLOY_DIR_IMAGE
> > +Change DEPLOY_DIR_IMAGE from ${DEPLOY_DIR}/images/${MACHINE} to
> > +${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}. When building different distros
> > +with the same machine the following error occurs:
> 
>  
> since layers may have multiple kernels (e.g. rt and non-rt) for the same machine (and ${DISTRO}), you may need to append -${KERNEL_NAME}
> I otherwise fear that some deployments will continue to fail

Correct. In addition I'm expecting a lot of trouble due to necessary
adjustments. I think nearly every CI deployment expects the output at
the current location.

Thanks for mentioning that in the API changelog. This is a very good
first step. Is there something else that we could do to help all users
find the necessary adjustment? Probably not...

Florian

>  
> > 
> > +do_copy_boot_files: The recipe isar-image-base is trying to install files
> > +into a shared area when those files already exists. It happens when some
> > +files have the same names (e.g., dtb files) for different distros.
> > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > index 4cfa8b10..1087ca0f 100644
> > --- a/meta/conf/bitbake.conf
> > +++ b/meta/conf/bitbake.conf
> > @@ -56,7 +56,7 @@ WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}/${PV}-${PR}"
> >  GIT_DL_LINK_DIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}"
> >  DEPLOY_DIR_BOOTSTRAP = "${DEPLOY_DIR}/bootstrap"
> >  DEPLOY_DIR_SDKCHROOT = "${DEPLOY_DIR}/sdkchroot"
> > -DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}"
> > +DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}"
> >  DL_DIR ?= "${TOPDIR}/downloads"
> >  SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
> >  SSTATE_MANIFESTS = "${TMPDIR}/sstate-control/${DISTRO}-${DISTRO_ARCH}"
> > -- 
> > 2.44.2
> >

Patch

diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index 12ea93ec..15337a63 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -629,3 +629,11 @@  into kernel kbuild package.
     Only the "host" specific package is built automatically at cross builds.
 
   * Support emulated module build with cross-compiled kernel for linux-module
+
+### Change DEPLOY_DIR_IMAGE
+Change DEPLOY_DIR_IMAGE from ${DEPLOY_DIR}/images/${MACHINE} to
+${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}. When building different distros
+with the same machine the following error occurs:
+do_copy_boot_files: The recipe isar-image-base is trying to install files
+into a shared area when those files already exists. It happens when some
+files have the same names (e.g., dtb files) for different distros.
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 4cfa8b10..1087ca0f 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -56,7 +56,7 @@  WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}/${PV}-${PR}"
 GIT_DL_LINK_DIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}"
 DEPLOY_DIR_BOOTSTRAP = "${DEPLOY_DIR}/bootstrap"
 DEPLOY_DIR_SDKCHROOT = "${DEPLOY_DIR}/sdkchroot"
-DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}"
+DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}"
 DL_DIR ?= "${TOPDIR}/downloads"
 SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
 SSTATE_MANIFESTS = "${TMPDIR}/sstate-control/${DISTRO}-${DISTRO_ARCH}"