From: "'MOESSBAUER, Felix' via isar-users" <isar-users@googlegroups.com>
To: "Kiszka, Jan" <jan.kiszka@siemens.com>,
"isar-users@googlegroups.com" <isar-users@googlegroups.com>
Subject: Re: [PATCH v2 2/2] dpkg: directly deploy via sstate cache
Date: Wed, 29 Jul 2026 08:07:27 +0000 [thread overview]
Message-ID: <1829b57809e7f3c6f6d38c28e98caf529b32137e.camel@siemens.com> (raw)
In-Reply-To: <4ea94bb1-a3ba-4662-9d0c-98251be9f4bb@siemens.com>
On Tue, 2026-07-28 at 20:24 +0200, Jan Kiszka wrote:
> On 21.07.26 17:04, 'Felix Moessbauer' via isar-users wrote:
> > By that, we can get rid of the custom sstate logic, which should be
> > avoided if not needed. Further, the deploy process is now cleaner, as we
> > deploy from a dedicated dir instead of the WORKDIR.
> >
> > Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> > ---
> > Changes since v1:
> >
> > - adapt barebox.bbclass to deploy from DEPLOYDIR instead of WORKDIR
> >
> > doc/technical_overview.md | 2 +-
> > meta/classes-recipe/barebox.bbclass | 4 +--
> > meta/classes-recipe/dpkg-base.bbclass | 37 +++++++++------------------
> > 3 files changed, 15 insertions(+), 28 deletions(-)
> >
> > diff --git a/doc/technical_overview.md b/doc/technical_overview.md
> > index f7e00f7b..fe427cae 100644
> > --- a/doc/technical_overview.md
> > +++ b/doc/technical_overview.md
> > @@ -217,7 +217,7 @@ Both consist of the following steps:
> > finally unmount again (`dpkg_undo_mounts`).
> >
> > 6. Task `do_deploy_deb`: add successfully built packages
> > - `${WORKDIR}/*.deb` to the isar-apt repository
> > + `${DEPLOYDIR}/*.deb` to the isar-apt repository
> > `${REPO_ISAR_DIR}/${DISTRO}`
> >
> > ## 3.6 Populate Target Filesystem
> > diff --git a/meta/classes-recipe/barebox.bbclass b/meta/classes-recipe/barebox.bbclass
> > index 45d77e3c..c9a767d5 100644
> > --- a/meta/classes-recipe/barebox.bbclass
> > +++ b/meta/classes-recipe/barebox.bbclass
> > @@ -47,12 +47,12 @@ BAREBOX_BASE_BIN ?= "barebox"
> >
> > do_deploy[dirs] = "${DEPLOY_DIR_IMAGE}"
> > do_deploy() {
> > - dpkg --fsys-tarfile ${WORKDIR}/${PN}_${CHANGELOG_V}_${DISTRO_ARCH}.deb | \
> > + dpkg --fsys-tarfile ${DEPLOYDIR}/${PN}_${CHANGELOG_V}_${DISTRO_ARCH}.deb | \
> > tar xOf - ./usr/lib/barebox/barebox.bin \
> > > "${DEPLOY_DIR_IMAGE}/${BAREBOX_BASE_BIN}.img"
> > ln -sf ${BAREBOX_BASE_BIN}.img ${DEPLOY_DIR_IMAGE}/barebox.bin
> >
> > - dpkg --fsys-tarfile ${WORKDIR}/${PN}_${CHANGELOG_V}_${DISTRO_ARCH}.deb | \
> > + dpkg --fsys-tarfile ${DEPLOYDIR}/${PN}_${CHANGELOG_V}_${DISTRO_ARCH}.deb | \
> > tar xOf - ./usr/lib/barebox/barebox.config \
> > > "${DEPLOY_DIR_IMAGE}/${BAREBOX_BASE_BIN}.config"
> > ln -sf ${BAREBOX_BASE_BIN}.config ${DEPLOY_DIR_IMAGE}/barebox.config
> > diff --git a/meta/classes-recipe/dpkg-base.bbclass b/meta/classes-recipe/dpkg-base.bbclass
> > index db912e90..e2ed4dfb 100644
> > --- a/meta/classes-recipe/dpkg-base.bbclass
> > +++ b/meta/classes-recipe/dpkg-base.bbclass
> > @@ -12,6 +12,8 @@ inherit repository
> > inherit deb-dl-dir
> > inherit essential
> >
> > +DEPLOYDIR = "${WORKDIR}/deploy"
> > +
> > DEPENDS ?= ""
> > RPROVIDES ?= "${PROVIDES}"
> >
> > @@ -186,6 +188,10 @@ dpkg_prepare_unshare_ccache() {
> > setfacl -m u:${UNSHARE_SUBUID_BASE}:rwX -m u:${@int(d.getVar('UNSHARE_SUBUID_BASE')) + 999}:rwx "${CCACHE_DIR}"
> > }
> >
> > +dpkg_collect_debs() {
> > + find ${WORKDIR} -maxdepth 1 -name "*.deb" -exec mv {} ${DEPLOYDIR} \;
> > +}
> > +
> > python do_dpkg_build() {
> > bb.build.exec_func('dpkg_chroot_prepare', d)
> > try:
> > @@ -193,45 +199,26 @@ python do_dpkg_build() {
> > finally:
> > bb.build.exec_func('dpkg_chroot_finalize', d)
> > }
> > +do_dpkg_build[cleandirs] = "${DEPLOYDIR}"
> > +do_dpkg_build[sstate-plaindirs] = "${DEPLOYDIR}"
> > do_dpkg_build[network] = "${TASK_USE_NETWORK_AND_SUDO}"
> > +do_dpkg_build[depends] = "${SCHROOT_DEP}"
> > +do_dpkg_build[postfuncs] += "dpkg_collect_debs"
> >
> > addtask dpkg_build
> >
> > SSTATETASKS += "do_dpkg_build"
> > -SSTATECREATEFUNCS += "dpkg_build_sstate_prepare"
> > -SSTATEPOSTINSTFUNCS += "dpkg_build_sstate_finalize"
> > -
> > -dpkg_build_sstate_prepare() {
> > - [ "${SSTATE_CURRTASK}" = "dpkg_build" ] || return 0
> > -
> > - # this runs in SSTATE_BUILDDIR, which will be deleted automatically
> > - if [ -n "$(find ${WORKDIR} -maxdepth 1 -name '*.deb' -print -quit)" ]; then
> > - cp -f ${WORKDIR}/*.deb -t .
> > - fi
> > -}
> > -
> > -dpkg_build_sstate_finalize() {
> > - [ "${SSTATE_CURRTASK}" = "dpkg_build" ] || return 0
> > -
> > - # this runs in SSTATE_INSTDIR
> > - if [ -n "$(find . -maxdepth 1 -name '*.deb' -print -quit)" ]; then
> > - mv -f ./*.deb -t ${WORKDIR}/
> > - fi
> > -}
> >
> > python do_dpkg_build_setscene() {
> > sstate_setscene(d)
> > }
> >
> > addtask dpkg_build_setscene
> > -do_dpkg_build_setscene[dirs] += "${S}/.."
> > -
> > -do_dpkg_build[depends] = "${SCHROOT_DEP}"
> >
> > CLEANFUNCS += "deb_clean"
> >
> > deb_clean() {
> > - DEBS=$( find ${WORKDIR} -maxdepth 1 -name "*.deb" || [ ! -d ${S} ] )
> > + DEBS=$( find ${DEPLOYDIR} -maxdepth 1 -name "*.deb" || [ ! -d ${S} ] )
> > if [ -n "${DEBS}" ]; then
> > for d in ${DEBS}; do
> > repo_del_package "${REPO_ISAR_DIR}"/"${DISTRO}" \
> > @@ -246,7 +233,7 @@ do_clean[network] = "${TASK_USE_SUDO}"
> > do_deploy_deb() {
> > deb_clean
> > repo_add_packages "${REPO_ISAR_DIR}"/"${DISTRO}" \
> > - "${REPO_ISAR_DB_DIR}"/"${DISTRO}" "${DEBDISTRONAME}" ${WORKDIR}/*.deb
> > + "${REPO_ISAR_DB_DIR}"/"${DISTRO}" "${DEBDISTRONAME}" ${DEPLOYDIR}/*.deb
> > }
> >
> > addtask deploy_deb after do_dpkg_build before do_build
>
>
> This is a recipe API change (it broke isar-cip-core). Please provide a
> patch to documents that properly!
Sorry. The documentation update is part of the fixup for this commit,
which the maintainers asked me to delay instead of squashing in, as
this series did take quite some time for testing. I also did not really
consider this to be an API...
Anyways, the fixup (which I will send today) will break this API again,
as the deployment via sstate-plaindirs does not work when using a
hashequiv server...
Sorry for the mess.
Felix
>
> Jan
>
> --
> Siemens AG, Foundational Technologies
> Linux Expert Center
--
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/1829b57809e7f3c6f6d38c28e98caf529b32137e.camel%40siemens.com.
next prev parent reply other threads:[~2026-07-29 8:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-21 15:04 [PATCH v2 1/2] bootstrap: " 'Felix Moessbauer' via isar-users
2026-07-21 15:04 ` [PATCH v2 2/2] dpkg: " 'Felix Moessbauer' via isar-users
2026-07-23 10:16 ` 'MOESSBAUER, Felix' via isar-users
2026-07-23 13:36 ` Zhihang Wei
2026-07-28 18:24 ` 'Jan Kiszka' via isar-users
2026-07-29 8:07 ` 'MOESSBAUER, Felix' via isar-users [this message]
2026-07-28 15:29 ` [PATCH v2 1/2] bootstrap: " Zhihang Wei
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=1829b57809e7f3c6f6d38c28e98caf529b32137e.camel@siemens.com \
--to=isar-users@googlegroups.com \
--cc=felix.moessbauer@siemens.com \
--cc=jan.kiszka@siemens.com \
/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