From: "Schmidt, Adriaan" <adriaan.schmidt@siemens.com>
To: "henning.schild@siemens.com" <henning.schild@siemens.com>
Cc: "isar-users@googlegroups.com" <isar-users@googlegroups.com>
Subject: RE: [PATCH] fix(sstate): don't fail if there are no packages
Date: Tue, 11 Jan 2022 10:23:41 +0000 [thread overview]
Message-ID: <AS4PR10MB5318F059A85B08EAA5029074ED519@AS4PR10MB5318.EURPRD10.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <20220111101358.6ab6a30b@md1za8fc.ad001.siemens.net>
Schild, Henning, 11. Januar 2022 10:14:
> Am Tue, 11 Jan 2022 09:02:00 +0100
> schrieb Adriaan Schmidt <adriaan.schmidt@siemens.com>:
>
> > The code to put generated deb packages into the sstate cache
> > currently uses the pattern
> > test <condition> && do_stuff
> > which, if the condition is not met, not only skips do_stuff,
> > but also returns failure.
> >
> > The consequence is that in cases where there are no packages
> > found in ${S}/../*.deb, the sstate caching fails completely.
> >
> > This changes that pattern to use an explicit "if" instead.
> >
> > Signed-off-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
> > ---
> > meta/classes/dpkg-base.bbclass | 6 ++++--
> > 1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/meta/classes/dpkg-base.bbclass
> > b/meta/classes/dpkg-base.bbclass index cb5ce4a..2add0b2 100644
> > --- a/meta/classes/dpkg-base.bbclass
> > +++ b/meta/classes/dpkg-base.bbclass
> > @@ -222,13 +222,15 @@ do_dpkg_build[sstate-plaindirs] =
> > "${DPKG_SSTATE}" do_dpkg_build[sstate-interceptfuncs] =
> > "dpkg_build_sstate_prepare"
> > dpkg_build_sstate_prepare() {
> > - test -n "$(find ${S}/.. -maxdepth 1 -name '*.deb' -print -quit)"
> > &&
> > + if [ -n "$(find ${S}/.. -maxdepth 1 -name '*.deb' -print -quit)"
> > ]; then ln -f ${S}/../*.deb -t ${DPKG_SSTATE}
> > + fi
>
> I think we can skip the "-print" while at it. And is that hard linking
> not problematic when DPKG_SSTATE and S are in different filesystems?
The "-print" is needed. Otherwise "-quit" will terminate the find before
anything is printed.
Both DPKG_SSTATE and S are (in all recipes in the Isar repo) always below
WORKDIR, which needs to be on one filesystem so it can be bind-mounted
into the buildchroot.
(From looking at other code in Isar, my impression is that many things
would fail if the complete Isar build tree is spread across multiple
filesystems, e.g. the buildchroot, sdkchroot, and bootstrap recipes create
hard links from deploy dir to work dir.)
Adriaan
>
> > }
> >
> > dpkg_build_sstate_finalize() {
> > - test -n "$(find ${DPKG_SSTATE} -maxdepth 1 -name '*.deb' -print
> > -quit)" &&
> > + if [ -n "$(find ${DPKG_SSTATE} -maxdepth 1 -name '*.deb' -print
> > -quit)" ]; then ln -f ${DPKG_SSTATE}/*.deb -t ${S}/..
> > + fi
> > }
> >
> > python do_dpkg_build_setscene() {
next prev parent reply other threads:[~2022-01-11 10:23 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-11 8:02 Adriaan Schmidt
2022-01-11 9:13 ` Henning Schild
2022-01-11 10:23 ` Schmidt, Adriaan [this message]
2022-01-11 10:31 ` Henning Schild
2022-01-11 11:50 ` Schmidt, Adriaan
2022-01-18 7:34 ` Anton Mikanovich
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=AS4PR10MB5318F059A85B08EAA5029074ED519@AS4PR10MB5318.EURPRD10.PROD.OUTLOOK.COM \
--to=adriaan.schmidt@siemens.com \
--cc=henning.schild@siemens.com \
--cc=isar-users@googlegroups.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