I would be happy to get some feedback on this patch.

Cheers, 

Norman

> -----Ursprüngliche Nachricht-----
> Von: [email protected]
> [mailto:[email protected]] Im Auftrag von
> Norman
> Gesendet: Tuesday, September 29, 2020 8:55 AM
> An: Andrey Zhizhikin <[email protected]>
> Cc: [email protected]
> Betreff: Re: [OE-core][Patch] sstate.bbclass: Check file ownership before
> doing 'touch -a'
> 
> I went through it again:
> 
> The SSTATE_DIR is set to my local build dir inside my home dir. All files here
> are owned by me.
> The SSTATE_MIRRORS is set to a locally mounted shared sstate-cache. Files
> here are owned by my group, but not my user.
> 
> All *.siginfo files in the SSTATE_DIR are symlinks to the respective files in 
> the
> SSTATE_MIRRORS dir.
> 
> The sstate_unpack_package function gets run for every *.siginfo file in
> SSTATE_DIR.
> If the ${SSTATE_PKG}.siginfo file already exists and is a symlink it's atime 
> is
> updated (line 850), this affects the destination file of the symlink in
> SSTATE_MIRRORS, since the --no-dereference switch is not used. The
> comment in line 849 confirms this is meant to set atime for "local/NFS
> mirror". But it being a mirror one cannot expect the user running bitbake to
> be the file owner.
> 
> So in my opinion the proposed patch makes sense.
> 
> 
> > -----Ursprüngliche Nachricht-----
> > Von: [email protected]
> > [mailto:[email protected]] Im Auftrag von
> > Norman
> > Gesendet: Friday, September 25, 2020 2:33 PM
> > An: Andrey Zhizhikin <[email protected]>
> > Cc: [email protected]
> > Betreff: Re: [OE-core][Patch] sstate.bbclass: Check file ownership
> > before doing 'touch -a'
> >
> > We do use SSTATE_MIRROR, pointing to a locally mounted drive that gets
> > populated by CI-builds:
> >
> > SSTATE_MIRRORS = "file://.* file:///var/cache/yocto/sstate-cache/PATH"
> >
> >
> >
> > > -----Ursprüngliche Nachricht-----
> > > Von: Andrey Zhizhikin [mailto:[email protected]]
> > > Gesendet: Friday, September 25, 2020 2:27 PM
> > > An: Norman Stetter <[email protected]>
> > > Cc: [email protected]
> > > Betreff: Re: [OE-core][Patch] sstate.bbclass: Check file ownership
> > > before doing 'touch -a'
> > >
> > > On Fri, Sep 25, 2020 at 2:19 PM Norman
> > > <[email protected]>
> > > wrote:
> > > >
> > > > From cd51db253c1a81e47532f1afacce385e422d9a73 Mon Sep 17
> 00:00:00
> > > 2001
> > > > From: Norman Stetter <[email protected]>
> > > > Date: Fri, 25 Sep 2020 13:49:43 +0200
> > > > Subject: sstate.bbclass: Check file ownership before doing 'touch -a'
> > > >
> > > > In contrast to 'touching' a file without parameters 'touch -a' can
> > > > only be performed by the file owner. In case of a shared
> > > > sstate-cache served locally (e.g. over NFS),  where the user
> > > > running bitbake is not the owner of sstate-cache files, even if he
> > > > has write access on group level, the sstate_unpack_package task will
> fail.
> > >
> > > Isn't the whole intention of using SSTATE_MIRROR to cover exactly
> > > those cases? I do not think that reusing sstate between different
> > > builders via NFS is a proper way to go.
> > >
> > > > Checking if the file is owned by the user before attempting to run
> > > > 'touch -a' on it solves this.
> > > >
> > > > Signed-off-by: Norman Stetter <[email protected]>
> > > > ---
> > > >  meta/classes/sstate.bbclass | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/meta/classes/sstate.bbclass
> > > > b/meta/classes/sstate.bbclass index 375196ef21..66a96a7603 100644
> > > > --- a/meta/classes/sstate.bbclass
> > > > +++ b/meta/classes/sstate.bbclass
> > > > @@ -847,7 +847,7 @@ python sstate_report_unihash() {
> > > > sstate_unpack_package () {
> > > >         tar -xvzf ${SSTATE_PKG}
> > > >         # update .siginfo atime on local/NFS mirror
> > > > -       [ -w ${SSTATE_PKG}.siginfo ] && [ -h ${SSTATE_PKG}.siginfo ] &&
> > touch
> > > -a ${SSTATE_PKG}.siginfo
> > > > +       [ -O ${SSTATE_PKG}.siginfo ] && [ -w ${SSTATE_PKG}.siginfo
> > > > + ] && [ -h ${SSTATE_PKG}.siginfo ] && touch -a
> > > > + ${SSTATE_PKG}.siginfo
> > > >         # Use "! -w ||" to return true for read only files
> > > >         [ ! -w ${SSTATE_PKG} ] || touch --no-dereference ${SSTATE_PKG}
> > > >         [ ! -w ${SSTATE_PKG}.sig ] || [ ! -e ${SSTATE_PKG}.sig ]
> > > > || touch --no-dereference ${SSTATE_PKG}.sig
> > > > --
> > > > 2.17.1
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > Regards,
> > > Andrey.
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#142926): 
https://lists.openembedded.org/g/openembedded-core/message/142926
Mute This Topic: https://lists.openembedded.org/mt/77078087/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to