All of lore.kernel.org
 help / color / mirror / Atom feed
From: Quentin Schulz <quentin.schulz@streamunlimited.com>
To: Alexander Kanavin <alex.kanavin@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] package.bbclass: allow shell-style wildcards in PRIVATE_LIBS
Date: Wed, 4 Sep 2019 09:32:39 +0200	[thread overview]
Message-ID: <20190904073239.rlk6spusid6m2zbd@qschulz> (raw)
In-Reply-To: <20190903163241.87739-1-alex.kanavin@gmail.com>

Hi Alexander,

On Tue, Sep 03, 2019 at 06:32:41PM +0200, Alexander Kanavin wrote:
> PRIVATE_LIBS is used to exclude 'private' libraries from getting added to
> automatic runtime dependency resolution. This variable currently has to list
> all libraries by name, which becomes a maintenance issue if the list
> of such libraries frequently changes, or is very large.
> 
> This change allows using shell-style wildcards in the variable, similar
> to how FILES lists what gets packaged.
> 
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  meta/classes/package.bbclass | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> index 114d6559f5e..aa8451ffe8b 100644
> --- a/meta/classes/package.bbclass
> +++ b/meta/classes/package.bbclass
> @@ -1646,7 +1646,8 @@ python package_do_shlibs() {
>                  prov = (this_soname, ldir, pkgver)
>                  if not prov in sonames:
>                      # if library is private (only used by package) then do not build shlib for it
> -                    if not private_libs or this_soname not in private_libs:
> +                    import fnmatch
> +                    if not private_libs or len([i for i in private_libs if fnmatch.fnmatch(this_soname, i)]) == 0:

We only need to know if this_soname is matching one of the patterns, we
don't need to check for each and every pattern.

Something like:

for pattern in private_libs:
	if fnmatch.fnmatch(this_soname, pattern)]) == 0:
		sonames.add(prov)
		break

would be possible?

AFAICT, private_libs is either the content of PRIVATE_LIBS_PN or
PRIVATE_LIBS or "" then passed to .split(). This should be safe for the
forloop without a check.

>                          sonames.add(prov)
>                  if libdir_re.match(os.path.dirname(file)):
>                      needs_ldconfig = True
> @@ -1829,7 +1830,8 @@ python package_do_shlibs() {
>              # /opt/abc/lib/libfoo.so.1 and contains /usr/bin/abc depending on system library libfoo.so.1
>              # but skipping it is still better alternative than providing own
>              # version and then adding runtime dependency for the same system library
> -            if private_libs and n[0] in private_libs:
> +            import fnmatch
> +            if private_libs and len([i for i in private_libs if fnmatch.fnmatch(n[0], i)]) > 0:

Same here?

Just a suggestion :)

BR,
Quentin
-- 
StreamUnlimited Engineering GmbH
High Tech Campus Vienna, Gutheil-Schoder-Gasse 10, 1100 Vienna, Austria
quentin.schulz@streamunlimited.com, www.streamunlimited.com


  reply	other threads:[~2019-09-04  8:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-03 16:32 [PATCH] package.bbclass: allow shell-style wildcards in PRIVATE_LIBS Alexander Kanavin
2019-09-04  7:32 ` Quentin Schulz [this message]
2019-09-04 10:04   ` Alexander Kanavin
2019-09-04 10:11   ` Alexander Kanavin
2019-09-04 12:55     ` Quentin Schulz
2019-09-04 14:52       ` Alexander Kanavin
2019-09-04 14:57         ` Quentin Schulz
2019-09-04 15:08           ` Alexander Kanavin
2019-09-06 10:22 Alexander Kanavin

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=20190904073239.rlk6spusid6m2zbd@qschulz \
    --to=quentin.schulz@streamunlimited.com \
    --cc=alex.kanavin@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.