public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "'MOESSBAUER, Felix' via isar-users" <isar-users@googlegroups.com>
To: Zhihang Wei <wzh@ilbers.de>,
	"isar-users@googlegroups.com" <isar-users@googlegroups.com>
Cc: "Kiszka, Jan" <jan.kiszka@siemens.com>
Subject: Re: [PATCH 1/1] fix(dpkg-build): deploy debs via shared sstate dir
Date: Fri, 31 Jul 2026 10:10:35 +0000	[thread overview]
Message-ID: <85426e66eaf0226fe08a63ed0d57c0386bd5e0c4.camel@siemens.com> (raw)
In-Reply-To: <2fee4d7a-52e6-4cf5-90d0-2485a3b43bdb@ilbers.de>

On Fri, 2026-07-31 at 11:26 +0200, Zhihang Wei wrote:
> On 7/29/26 13:18, 'Felix Moessbauer' via isar-users wrote:
> > The built debs were stored in a WORKDIR-internal plaindir and consumed
> > from there by do_deploy_deb. do_deploy_deb is a task that mutates
> > the external isar-apt repository and can therefore never be sstate
> > cached, so it always runs and relies on the plaindir being present on
> > disk.
> > 
> > When do_dpkg_build is served from the sstate cache, that WORKDIR-internal
> > plaindir is not guaranteed to be materialized (e.g. when the task is
> > covered via hash equivalence without a setscene restore). do_deploy_deb
> > then runs against an empty deploy dir, passes an unexpanded glob to
> > dpkg-deb and aborts the build.
> > 
> > Fix it by deploying the debs into a shared, sstate-tracked DEPLOY_DIR_DEB
> > via sstate-inputdirs/sstate-outputdirs.
> > 
> > Fixes: 3363ff57 ("dpkg: directly deploy via sstate cache")
> > Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> > ---
> >   RECIPE-API-CHANGELOG.md               |  8 ++++++++
> >   doc/technical_overview.md             |  2 +-
> >   meta/classes-recipe/barebox.bbclass   |  4 ++--
> >   meta/classes-recipe/dpkg-base.bbclass | 19 ++++++++++++++-----
> >   4 files changed, 25 insertions(+), 8 deletions(-)
> > 
> 
> <snip>
> 
> > diff --git a/meta/classes-recipe/dpkg-base.bbclass b/meta/classes-recipe/dpkg-base.bbclass
> > index bc53e4bd..4a81787e 100644
> > --- a/meta/classes-recipe/dpkg-base.bbclass
> > +++ b/meta/classes-recipe/dpkg-base.bbclass
> > @@ -12,7 +12,12 @@ inherit repository
> >   inherit deb-dl-dir
> >   inherit essential
> >   
> > +# Local (WORKDIR-internal) dir where do_dpkg_build collects the built debs.
> > +# Its content is exported into the shared, sstate-tracked DEPLOY_DIR_DEB so
> > +# that consumers (do_deploy_deb) always find the artifacts, independent of the
> > +# WORKDIR lifecycle.
> >   DEPLOYDIR = "${WORKDIR}/deploy"
> > +DEPLOY_DIR_DEB = "${DEPLOY_DIR}/isar-deb/${DISTRO}-${DISTRO_ARCH}/${PN}"
> >   
> >   DEPENDS ?= ""
> >   RPROVIDES ?= "${PROVIDES}"
> > @@ -200,7 +205,8 @@ python do_dpkg_build() {
> >           bb.build.exec_func('dpkg_chroot_finalize', d)
> >   }
> >   do_dpkg_build[cleandirs] = "${DEPLOYDIR}"
> > -do_dpkg_build[sstate-plaindirs] = "${DEPLOYDIR}"
> > +do_dpkg_build[sstate-inputdirs] = "${DEPLOYDIR}"
> > +do_dpkg_build[sstate-outputdirs] = "${DEPLOY_DIR_DEB}"
> >   do_dpkg_build[network] = "${TASK_USE_NETWORK_AND_SUDO}"
> >   do_dpkg_build[depends] = "${SCHROOT_DEP} base-apt:do_cache isar-apt:do_cache_config"
> 
> Can you send a rebase? The line above does not match with current next.

Rebase sent. However I have two more fixes that relate to that
location. All of them are independent, except that they change lines
which are close.

Will send them on top of the v2 of this patch.

Felix

> 
> Zhihang
> 
> >   do_dpkg_build[postfuncs] += "dpkg_collect_debs"
> > @@ -218,7 +224,7 @@ addtask dpkg_build_setscene
> >   CLEANFUNCS += "deb_clean"
> >   
> >   deb_clean() {
> > -    DEBS=$( find ${DEPLOYDIR} -maxdepth 1 -name "*.deb" || [ ! -d ${S} ] )
> > +    DEBS=$( find ${DEPLOY_DIR_DEB} -maxdepth 1 -name "*.deb" || [ ! -d ${S} ] )
> >       if [ -n "${DEBS}" ]; then
> >           for d in ${DEBS}; do
> >               repo_del_package "${REPO_ISAR_DIR}"/"${DISTRO}" \
> > @@ -232,8 +238,11 @@ do_clean[network] = "${TASK_USE_SUDO}"
> >   
> >   do_deploy_deb() {
> >       deb_clean
> > -    repo_add_packages "${REPO_ISAR_DIR}"/"${DISTRO}" \
> > -        "${REPO_ISAR_DB_DIR}"/"${DISTRO}" "${DEBDISTRONAME}" ${DEPLOYDIR}/*.deb
> > +    debs=$(find ${DEPLOY_DIR_DEB} -maxdepth 1 -name '*.deb')
> > +    if [ -n "${debs}" ]; then
> > +        repo_add_packages "${REPO_ISAR_DIR}"/"${DISTRO}" \
> > +            "${REPO_ISAR_DB_DIR}"/"${DISTRO}" "${DEBDISTRONAME}" ${debs}
> > +    fi
> >   }
> >   
> >   addtask deploy_deb after do_dpkg_build before do_build
> > @@ -241,7 +250,7 @@ do_deploy_deb[deptask] = "do_deploy_deb"
> >   do_deploy_deb[rdeptask] = "do_deploy_deb"
> >   do_deploy_deb[depends] += "isar-apt:do_cache_config"
> >   do_deploy_deb[lockfiles] = "${REPO_ISAR_DIR}/isar.lock"
> > -do_deploy_deb[dirs] = "${S}"
> > +do_deploy_deb[dirs] = "${S} ${DEPLOY_DIR_DEB}"
> >   
> >   python do_devshell() {
> >       isar_export_proxies(d)

-- 
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/85426e66eaf0226fe08a63ed0d57c0386bd5e0c4.camel%40siemens.com.

      reply	other threads:[~2026-07-31 10:10 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29 11:18 'Felix Moessbauer' via isar-users
2026-07-30 14:41 ` 'Jan Kiszka' via isar-users
2026-07-30 15:12   ` 'MOESSBAUER, Felix' via isar-users
2026-07-31  9:26 ` Zhihang Wei
2026-07-31 10:10   ` 'MOESSBAUER, Felix' via isar-users [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=85426e66eaf0226fe08a63ed0d57c0386bd5e0c4.camel@siemens.com \
    --to=isar-users@googlegroups.com \
    --cc=felix.moessbauer@siemens.com \
    --cc=jan.kiszka@siemens.com \
    --cc=wzh@ilbers.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox