public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: Andrii Bordunov <aborduno@cisco.com>
To: Richard Purdie <richard.purdie@linuxfoundation.org>,
	openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] package.bbclass: allow using EXCLUDE_FROM_SHLIBS for subpackages
Date: Thu, 16 Mar 2017 17:07:35 +0200	[thread overview]
Message-ID: <6897ef62-b48d-ca6d-dc03-41d3467bc91a@cisco.com> (raw)
In-Reply-To: <1479293265.28508.4.camel@linuxfoundation.org>

Hi Richard,

Sorry, my Python knowledge is quite basic. I'm sure it's possible to 
have a (global?) EXCLUDE_FROM_SHLIBS list holding subpackage names, but 
how it could lead to performance improvement? It would also need some 
check for every subpackage.
Could you please give more details?
And what do you mean under "all packages"? The intent is like opposite, 
to split package operations, not to gather.

As for False parameter to getVar, OK, I just used existing 
EXCLUDE_FROM_SHLIBS example (seems fixed now).

In the meantime tried to make a quick and dirty profiling like following:

   bitbake -c package glibc
   bitbake -c clean glibc
   python -m cProfile -s cumtime /mnt/src/oe/distro/bitbake/bin/bitbake 
-c package glibc > result.txt

Result is below. If got it right, there are 3833 getVar calls with total 
time 0.025 second (including subcalls).
This gives ~6.5 microsecond duration of one call (incl subcalls). Not a lot.
This is only a partial rebuild of one package of course.
Also tried to do all of this with and without my patch, but getVar calls 
number stays exactly the same (w/o modifying glibc recipe, but anyway).

   NOTE: Tasks Summary: Attempted 314 tasks of which 314 didn't need to 
be rerun and all succeeded.
            672869 function calls (667640 primitive calls) in 12.912 seconds
      Ordered by: cumulative time
      ncalls  tottime  percall  cumtime  percall filename:lineno(function)
           1    0.001    0.001   12.913   12.913 bitbake:25(<module>)
           1    0.001    0.001   12.082   12.082 main.py:320(bitbake_main)
           1    0.005    0.005   11.494   11.494 knotty.py:253(main)
         250   11.476    0.046   11.476    0.046 {method 'poll' of 
'_multiprocessing.Connection' objects}
   ...
   4481/4046    0.007    0.000    0.026    0.000 
data_smart.py:666(getVarFlag)
   ...
   3833/3719    0.002    0.000    0.025    0.000 data_smart.py:569(getVar)
   ...
        1338    0.002    0.000    0.003    0.000 
data_smart.py:805(getVarFlags)



Thank you,
Andrii

On 16.11.16 12:47, Richard Purdie wrote:
> On Mon, 2016-10-10 at 20:02 +0300, Andrii Bordunov wrote:
>> Some packages containing shared libraries might be registered
>> as shlib providers when they shouldn't (for example, the lib is for
>> their private use and must not generate any dependency).
>>
>> EXCLUDE_FROM_SHLIBS is targeted at that, but it could be set
>> for entire recipe only.
>>
>> This patch expands EXCLUDE_FROM_SHLIBS usage, so now it's possible
>> to set it in a style similar with RDEPENDS. For example:
>>  EXCLUDE_FROM_SHLIBS_${PN}-ptest = "1"
>>
>> Signed-off-by: Andrii Bordunov <aborduno@cisco.com>
>> ---
>>  meta/classes/package.bbclass | 12 ++++++++++--
>>  1 file changed, 10 insertions(+), 2 deletions(-)
>
> My main concern here is actually performance. For a package with many
> sub packages you just added many calls to getVar when that getVar is
> extremely unlikely to find any value. Whilst not hugely slow, that
> operation isn't trivial and hard to fix later.
>
> I'm wondering if we could support the syntax
>
> EXCLUDE_FROM_SHLIBS = "${PN}-ptest"
>
> and then have "1", used in a couple of places as the special value to
> mean all packages?
>
> Also please use False, not 0 as the parameter to getVar.
>
> Cheers,
>
> Richard
>


  reply	other threads:[~2017-03-16 15:17 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-10 17:02 [PATCH] package.bbclass: allow using EXCLUDE_FROM_SHLIBS for subpackages Andrii Bordunov
2016-10-19 13:58 ` Andrii Bordunov
2016-11-15 15:05   ` Andrii Bordunov
2016-11-16 10:29     ` Burton, Ross
2016-11-16 10:47 ` Richard Purdie
2017-03-16 15:07   ` Andrii Bordunov [this message]
2018-03-13 17:25     ` [PATCH v3] " Andrii Bordunov
2018-04-12 14:42       ` Andrii Bordunov
2018-06-11 12:20         ` Andrii Bordunov
2018-06-16 12:00           ` Richard Purdie

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=6897ef62-b48d-ca6d-dc03-41d3467bc91a@cisco.com \
    --to=aborduno@cisco.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=richard.purdie@linuxfoundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox