From: "Richard Purdie" <richard.purdie@linuxfoundation.org>
To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>,
"openembedded-core@lists.openembedded.org"
<openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] [PATCHv2 3/4] bitbake.conf: Canonicalize paths in PSEUDO_IGNORE_PATHS
Date: Tue, 01 Dec 2020 07:58:24 +0000 [thread overview]
Message-ID: <756e4529c98cdb1598dc2e118f2b3103229df1c7.camel@linuxfoundation.org> (raw)
In-Reply-To: <af090a2c9e16425b9a01bd2f791a5f1b@XBOX03.axis.com>
On Mon, 2020-11-30 at 17:44 +0000, Peter Kjellerstedt wrote:
> > -----Original Message-----
> > From: openembedded-core@lists.openembedded.org <openembedded-
> > core@lists.openembedded.org> On Behalf Of Richard Purdie
> > Sent: den 27 november 2020 00:42
> > To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>; openembedded-
> > core@lists.openembedded.org
> > Subject: Re: [OE-core] [PATCHv2 3/4] bitbake.conf: Canonicalize paths in
> > PSEUDO_IGNORE_PATHS
> >
> > On Thu, 2020-11-26 at 20:38 +0000, Peter Kjellerstedt wrote:
> > > > -----Original Message-----
> > > > From: Richard Purdie <richard.purdie@linuxfoundation.org>
> > > > Sent: den 26 november 2020 15:47
> > > > To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>; openembedded-
> > > > core@lists.openembedded.org
> > > > Subject: Re: [OE-core] [PATCHv2 3/4] bitbake.conf: Canonicalize
> > > > paths in
> > > > PSEUDO_IGNORE_PATHS
> > > >
> > > > On Wed, 2020-11-25 at 14:48 +0100, Peter Kjellerstedt wrote:
> > > > > Introduce PSEUDO_IGNORE_REAL_PATHS and make it contain the
> > > > canonicalized
> > > > > paths from PSEUDO_IGNORE_PATHS, obtained by passing the latter to
> > > > > oe.path.to_real_paths(). This is needed since pseudo's
> > > > > pseudo_client_ignore_path_chroot() will compare the ignored paths
> > > > > to
> > > > > paths that have been canonicalized.
> > > > >
> > > > > Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> > > > > ---
> > > > > meta/conf/bitbake.conf | 8 +++++---
> > > > > 1 file changed, 5 insertions(+), 3 deletions(-)
> > > >
> > > > This looks like a good way to fix this, except I have a strong
> > > > dislike
> > > > of "REAL" variables.
> > >
> > > Well, I named it PSEUDO_IGNORE_REAL_PATHS to match
> > > os.path.realpath().
> > > I can name it, e.g., PSEUDO_IGNORE_CANONICAL_PATHS if you prefer
> > > that?
> >
> > My point was less about the name and more that I'd prefer not to have
> > an indirect variable which isn't useful.
> >
> > > > > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > > > > index 9742fe4fe2..4862095a1b 100644
> > > > > --- a/meta/conf/bitbake.conf
> > > > > +++ b/meta/conf/bitbake.conf
> > > > > @@ -685,15 +685,16 @@ SRC_URI = ""
> > > > > PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/"
> > > > > PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}:${PSEUDO_SYSROOT}"
> > > > > PSEUDO_SYSROOT = "${COMPONENTS_DIR}/${BUILD_ARCH}/pseudo-native"
> > > > > +PSEUDO_IGNORE_REAL_PATHS = "${@','.join(os.path.realpath(path) for
> > > > path in (d.getVar('PSEUDO_IGNORE_PATHS') or '').split(','))}"
> > > > > PSEUDO_IGNORE_PATHS =
> > "/usr/,/etc/,/lib,/dev/,${T},${WORKDIR}/recipe-
> > > > sysroot,${SSTATE_DIR},${STAMPS_DIR},${WORKDIR}/pkgdata-
> > > > sysroot,${TMPDIR}/sstate-control,${DEPLOY_DIR},${WORKDIR}/deploy-
> > > > ,${TMPDIR}/buildstats,${WORKDIR}/sstate-build-
> > package_,${WORKDIR}/sstate-
> > > > install-package_,${WORKDIR}/sstate-build-
> > > > image_complete,${TMPDIR}/sysroots-
> > > >
> > components,${BUILDHISTORY_DIR},${TMPDIR}/pkgdata,${TOPDIR}/cache,${COREBA
> > > > SE}/scripts,${@','.join(d.getVar('BBLAYERS').split())},${CCACHE_DIR}"
> > > > > export PSEUDO_DISABLED = "1"
> > > > > #export PSEUDO_PREFIX = "${STAGING_DIR_NATIVE}${prefix_native}"
> > > > > #export PSEUDO_BINDIR = "${STAGING_DIR_NATIVE}${bindir_native}"
> > > > > #export PSEUDO_LIBDIR =
> > > > "${STAGING_DIR_NATIVE}$PSEUDOBINDIR/../lib/pseudo/lib
> > > > > -FAKEROOTBASEENV = "PSEUDO_BINDIR=${PSEUDO_SYSROOT}${bindir_native}
> > > > PSEUDO_LIBDIR=${PSEUDO_SYSROOT}${prefix_native}/lib/pseudo/lib
> > > > PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native}
> > > > PSEUDO_IGNORE_PATHS=${PSEUDO_IGNORE_PATHS} PSEUDO_DISABLED=1"
> > > > > +FAKEROOTBASEENV = "PSEUDO_BINDIR=${PSEUDO_SYSROOT}${bindir_native}
> > > > PSEUDO_LIBDIR=${PSEUDO_SYSROOT}${prefix_native}/lib/pseudo/lib
> > > > PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native}
> > > > PSEUDO_IGNORE_PATHS=${PSEUDO_IGNORE_REAL_PATHS} PSEUDO_DISABLED=1"
> > > > > FAKEROOTCMD = "${PSEUDO_SYSROOT}${bindir_native}/pseudo"
> > > > > -FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native}
> > > > PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR}
> > > > PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1
> > > > PSEUDO_IGNORE_PATHS=${PSEUDO_IGNORE_PATHS} PSEUDO_DISABLED=0"
> > > > > +FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native}
> > > > PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR}
> > > > PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1
> > > > PSEUDO_IGNORE_PATHS=${PSEUDO_IGNORE_REAL_PATHS} PSEUDO_DISABLED=0"
> > > >
> > > > I'm wondering if we create a function in lib/oe/utils.py and then use
> > > > something like:
> > > >
> > > > PSEUDO_IGNORE_PATHS=${@oe.utils.realpath("PSEUDO_IGNORE_REAL_PATHS")}
> > >
> > > There already is an oe.path.realpath(). However, I am not sure when
> > > it is expected to be used instead of os.path.realpath().
> >
> > That is a bad choice of name now I look at it! I was thinking more
> > about the use of a function.
> >
> > > I initially created an oe.path.realpaths(d, var, separator=','), but
> > > after I had rewritten it a couple of times I was down to just the
> > > single list comprehension and then I felt as I could just as well
> > > use it directly since I don't see a great need for a common function
> > > to canonicalize a list of paths. But if you prefer that solution, I
> > > can restore it.
> >
> > I don't really mind the list comprehension directly or a function, I'd
> > just prefer not to have an indirect variable around to confuse people.
>
> Ok, I take that to mean that you instead want me to, e.g., use a function
> to canonicalize the paths where ${PSEUDO_IGNORE_REAL_PATHS} is used now?
> I.e., something like this (line broken here for readability):
>
> FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} \
> PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} \
> PSEUDO_PASSWD=${PSEUDO_PASSWD} \
> PSEUDO_NOSYMLINKEXP=1 \
> PSEUDO_IGNORE_PATHS=${@oe.paths.canonicalize(d, 'PSEUDO_IGNORE_PATHS')} \
> PSEUDO_DISABLED=0"
> FAKEROOTENV[vardeps] += "PSEUDO_IGNORE_PATHS"
>
> alternatively:
>
> FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} \
> PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} \
> PSEUDO_PASSWD=${PSEUDO_PASSWD} \
> PSEUDO_NOSYMLINKEXP=1 \
> PSEUDO_IGNORE_PATHS=${@oe.paths.canonicalize(d.getVar('PSEUDO_IGNORE_PATHS'))} \
> PSEUDO_DISABLED=0"
>
> I am not sure whether there is a preference for utility functions
> to take d and the name of a bitbake variable as arguments, or to
> take the variable's value. The former is a little bit shorter, but
> on the other hand it requires the extra vardeps declaration.
>
> There is a minor drawback with this solution, and that is that I
> cannot use that function in wic. So I will use the list comprehension
> directly, with a comment referring to the oe.path.canonicalize()
> function.
The version which avoids the vardeps is probably slightly neater
overall. I wasn't sure if using the list comprehension here would be
too ugly or not but I'm happy just not to have another variable name
used here, thanks!
The wic issue is unfortunate but hard to avoid.
Cheers,
Richard
next prev parent reply other threads:[~2020-12-01 7:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-25 13:48 [PATCHv2 0/4] Support symbolic links in paths in PSEUDO_IGNORE_PATHS Peter Kjellerstedt
2020-11-25 13:48 ` [PATCHv2 1/4] pseudo: Simplify pseudo_client_ignore_path_chroot() Peter Kjellerstedt
2020-11-30 11:47 ` [OE-core] " Richard Purdie
2020-12-01 1:20 ` Peter Kjellerstedt
2020-11-25 13:48 ` [PATCHv2 2/4] bitbake.conf: Add all layers (from BBLAYERS) to PSEUDO_IGNORE_PATHS Peter Kjellerstedt
2020-11-25 13:48 ` [PATCHv2 3/4] bitbake.conf: Canonicalize paths in PSEUDO_IGNORE_PATHS Peter Kjellerstedt
2020-11-26 14:47 ` [OE-core] " Richard Purdie
2020-11-26 20:38 ` Peter Kjellerstedt
2020-11-26 23:41 ` Richard Purdie
2020-11-30 17:44 ` Peter Kjellerstedt
2020-12-01 7:58 ` Richard Purdie [this message]
2020-11-25 13:48 ` [PATCHv2 4/4] wic: Pass canonicalized " Peter Kjellerstedt
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=756e4529c98cdb1598dc2e118f2b3103229df1c7.camel@linuxfoundation.org \
--to=richard.purdie@linuxfoundation.org \
--cc=openembedded-core@lists.openembedded.org \
--cc=peter.kjellerstedt@axis.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