> -----Original Message-----
> From: openembedded-core@lists.openembedded.org <openembedded-
> c...@lists.openembedded.org> On Behalf Of Jose Quaresma
> Sent: den 4 november 2021 16:42
> To: openembedded-core@lists.openembedded.org
> Cc: Jose Quaresma <quaresma.j...@gmail.com>
> Subject: [OE-core] [PATCH] sstate: another fix for touching files inside
> pseudo
> 
> This patch is a fixup for 676757f "sstate: fix touching files inside
> pseudo"
> 
> running the 'id' command inside the sstate_unpack_package
> function shows that this funcion run inside the pseudo:
> 
>  uid=0(root) gid=0(root) groups=0(root)
> 
> The check for [ -w ${SSTATE_PKG} ] and [ -O ${SSTATE_PKG}.siginfo ]
> will always return true and the touch can fail when the real user
> don't have permission or in readonly filesystem.
> 
> As the documentation refers:
> - the file test operator "-w" check if the file has write permission
> (for the user running the test).
> - the file test operator "-O" check if you are owner of file
> 
> We can avoid this test running the touch and mask any return errors
> that we have.
> 
> Signed-off-by: Jose Quaresma <quaresma.j...@gmail.com>
> ---
>  meta/classes/sstate.bbclass | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
> index 8182010047..e4d58639f3 100644
> --- a/meta/classes/sstate.bbclass
> +++ b/meta/classes/sstate.bbclass
> @@ -900,12 +900,12 @@ sstate_unpack_package () {
>       fi
> 
>       tar -I "$ZSTD" -xvf ${SSTATE_PKG}
> -     # update .siginfo atime on local/NFS mirror
> -     [ -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
> -     [ ! -w ${SSTATE_PKG}.siginfo ] || [ ! -e ${SSTATE_PKG}.siginfo ] || 
> touch --no-dereference ${SSTATE_PKG}.siginfo
> +     # update .siginfo atime on local/NFS mirror if it is a symbolic link
> +     [ ! -h ${SSTATE_PKG}.siginfo ] || touch -a ${SSTATE_PKG}.siginfo 
> 2>/dev/null || true
> +     # update each symbolic link instead of any referenced file
> +     touch --no-dereference ${SSTATE_PKG} 2>/dev/null || true
> +     touch --no-dereference ${SSTATE_PKG}.siginfo 2>/dev/null || true

To match the original code this should be:

        [ ! -e ${SSTATE_PKG}.siginfo ] || touch --no-dereference 
${SSTATE_PKG}.siginfo 2>/dev/null || true

Or was there some reason you removed the test for if the siginfo 
file exists before touching it? If so, then the commit message 
should state this.

> +     [ ! -e ${SSTATE_PKG}.sig ] || touch --no-dereference ${SSTATE_PKG}.sig 
> 2>/dev/null || true
>  }
> 
>  BB_HASHCHECK_FUNCTION = "sstate_checkhashes"
> --
> 2.33.1

//Peter

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#157855): 
https://lists.openembedded.org/g/openembedded-core/message/157855
Mute This Topic: https://lists.openembedded.org/mt/86819016/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to