All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2] lib/bb: Add BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
@ 2019-11-15 14:47 Aníbal Limón
  2019-11-15 16:29 ` Peter Kjellerstedt
  0 siblings, 1 reply; 5+ messages in thread
From: Aníbal Limón @ 2019-11-15 14:47 UTC (permalink / raw)
  To: bitbake-devel

The new BB_SIGNATURE_LOCAL_DIRS_EXCLUDE allows you to specify a list
of directories to exclude when making taskhash, our specific case
is using SRC_URI that points local VCS directory.

Use bb.fetch.module to set default to: "CVS .bzr .git .hg .osc .p4 .repo .svn"

Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
---
 lib/bb/checksum.py        | 5 +++--
 lib/bb/fetch2/__init__.py | 4 ++--
 lib/bb/siggen.py          | 5 +++--
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/lib/bb/checksum.py b/lib/bb/checksum.py
index 5bc8a8fc..677020f4 100644
--- a/lib/bb/checksum.py
+++ b/lib/bb/checksum.py
@@ -74,7 +74,7 @@ class FileChecksumCache(MultiProcessCache):
             else:
                 dest[0][h] = source[0][h]
 
-    def get_checksums(self, filelist, pn):
+    def get_checksums(self, filelist, pn, localdirsexclude):
         """Get checksums for a list of files"""
 
         def checksum_file(f):
@@ -90,7 +90,8 @@ class FileChecksumCache(MultiProcessCache):
             if pth == "/":
                 bb.fatal("Refusing to checksum /")
             dirchecksums = []
-            for root, dirs, files in os.walk(pth):
+            for root, dirs, files in os.walk(pth, topdown=True):
+                [dirs.remove(d) for d in list(dirs) if d in localdirsexclude]
                 for name in files:
                     fullpth = os.path.join(root, name)
                     checksum = checksum_file(fullpth)
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index 07de6c26..731c1608 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -1197,14 +1197,14 @@ def get_checksum_file_list(d):
 
     return " ".join(filelist)
 
-def get_file_checksums(filelist, pn):
+def get_file_checksums(filelist, pn, localdirsexclude):
     """Get a list of the checksums for a list of local files
 
     Returns the checksums for a list of local files, caching the results as
     it proceeds
 
     """
-    return _checksum_cache.get_checksums(filelist, pn)
+    return _checksum_cache.get_checksums(filelist, pn, localdirsexclude)
 
 
 class FetchData(object):
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index a4bb1ff7..2445a340 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -123,6 +123,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
 
         self.unihash_cache = bb.cache.SimpleCache("1")
         self.unitaskhashes = self.unihash_cache.init_cache(data, "bb_unihashes.dat", {})
+        self.localdirsexclude = (data.getVar("BB_SIGNATURE_LOCAL_DIRS_EXCLUDE") or "CVS .bzr .git .hg .osc .p4 .repo .svn").split()
 
     def init_rundepcheck(self, data):
         self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST") or None
@@ -221,9 +222,9 @@ class SignatureGeneratorBasic(SignatureGenerator):
 
         if task in dataCache.file_checksums[fn]:
             if self.checksum_cache:
-                checksums = self.checksum_cache.get_checksums(dataCache.file_checksums[fn][task], recipename)
+                checksums = self.checksum_cache.get_checksums(dataCache.file_checksums[fn][task], recipename, self.localdirsexclude)
             else:
-                checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename)
+                checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename, self.localdirsexclude)
             for (f,cs) in checksums:
                 self.file_checksum_values[tid].append((f,cs))
                 if cs:
-- 
2.24.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCHv2] lib/bb: Add BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
  2019-11-15 14:47 [PATCHv2] lib/bb: Add BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories Aníbal Limón
@ 2019-11-15 16:29 ` Peter Kjellerstedt
  2019-11-15 17:12   ` Mark Hatle
  0 siblings, 1 reply; 5+ messages in thread
From: Peter Kjellerstedt @ 2019-11-15 16:29 UTC (permalink / raw)
  To: Aníbal Limón, bitbake-devel

> -----Original Message-----
> From: bitbake-devel-bounces@lists.openembedded.org <bitbake-devel-
> bounces@lists.openembedded.org> On Behalf Of Aníbal Limón
> Sent: den 15 november 2019 15:47
> To: bitbake-devel@lists.openembedded.org
> Subject: [bitbake-devel] [PATCHv2] lib/bb: Add
> BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
> 
> The new BB_SIGNATURE_LOCAL_DIRS_EXCLUDE allows you to specify a list
> of directories to exclude when making taskhash, our specific case
> is using SRC_URI that points local VCS directory.
> 
> Use bb.fetch.module to set default to: "CVS .bzr .git .hg .osc .p4 .repo
> .svn"
> 
> Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
> ---
>  lib/bb/checksum.py        | 5 +++--
>  lib/bb/fetch2/__init__.py | 4 ++--
>  lib/bb/siggen.py          | 5 +++--
>  3 files changed, 8 insertions(+), 6 deletions(-)

[cut]

> --- a/lib/bb/siggen.py
> +++ b/lib/bb/siggen.py
> @@ -123,6 +123,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
> 
>          self.unihash_cache = bb.cache.SimpleCache("1")
>          self.unitaskhashes = self.unihash_cache.init_cache(data, "bb_unihashes.dat", {})
> +        self.localdirsexclude = (data.getVar("BB_SIGNATURE_LOCAL_DIRS_EXCLUDE") or "CVS .bzr .git .hg .osc .p4 .repo .svn").split()

I don't like this construct, because if I do:

BB_SIGNATURE_LOCAL_DIRS_EXCLUDE_append = " some_dir"

it means that all of a sudden the SCM directories listed above will no 
longer be excluded since BB_SIGNATURE_LOCAL_DIRS_EXCLUDE will now be 
defined, but only contain " some_dir". Isn't it better to add:

BB_SIGNATURE_LOCAL_DIRS_EXCLUDE ??= "CVS .bzr .git .hg .osc .p4 .repo .svn"

somewhere in OE-Core (and it can then also have a suitable 
BB_SIGNATURE_LOCAL_DIRS_EXCLUDE[doc], though it seems BB_-variables 
are only documented in meta/conf/documentation.conf)?

Alternatively, to keep the list above within bitbake, make it two 
variables, one for the list of directories above that is not really 
intended to be modified, and one for additional directories (which 
should still be documented in meta/conf/documentation.conf).

//Peter


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCHv2] lib/bb: Add BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
  2019-11-15 16:29 ` Peter Kjellerstedt
@ 2019-11-15 17:12   ` Mark Hatle
  2019-11-18 15:22     ` Anibal Limon
  0 siblings, 1 reply; 5+ messages in thread
From: Mark Hatle @ 2019-11-15 17:12 UTC (permalink / raw)
  To: Peter Kjellerstedt, Aníbal Limón, bitbake-devel



On 11/15/19 10:29 AM, Peter Kjellerstedt wrote:
>> -----Original Message-----
>> From: bitbake-devel-bounces@lists.openembedded.org <bitbake-devel-
>> bounces@lists.openembedded.org> On Behalf Of Aníbal Limón
>> Sent: den 15 november 2019 15:47
>> To: bitbake-devel@lists.openembedded.org
>> Subject: [bitbake-devel] [PATCHv2] lib/bb: Add
>> BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
>>
>> The new BB_SIGNATURE_LOCAL_DIRS_EXCLUDE allows you to specify a list
>> of directories to exclude when making taskhash, our specific case
>> is using SRC_URI that points local VCS directory.
>>
>> Use bb.fetch.module to set default to: "CVS .bzr .git .hg .osc .p4 .repo
>> .svn"
>>
>> Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
>> ---
>>  lib/bb/checksum.py        | 5 +++--
>>  lib/bb/fetch2/__init__.py | 4 ++--
>>  lib/bb/siggen.py          | 5 +++--
>>  3 files changed, 8 insertions(+), 6 deletions(-)
> 
> [cut]
> 
>> --- a/lib/bb/siggen.py
>> +++ b/lib/bb/siggen.py
>> @@ -123,6 +123,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
>>
>>          self.unihash_cache = bb.cache.SimpleCache("1")
>>          self.unitaskhashes = self.unihash_cache.init_cache(data, "bb_unihashes.dat", {})
>> +        self.localdirsexclude = (data.getVar("BB_SIGNATURE_LOCAL_DIRS_EXCLUDE") or "CVS .bzr .git .hg .osc .p4 .repo .svn").split()
> 
> I don't like this construct, because if I do:
> 
> BB_SIGNATURE_LOCAL_DIRS_EXCLUDE_append = " some_dir"
> 
> it means that all of a sudden the SCM directories listed above will no 
> longer be excluded since BB_SIGNATURE_LOCAL_DIRS_EXCLUDE will now be 
> defined, but only contain " some_dir". Isn't it better to add:
> 
> BB_SIGNATURE_LOCAL_DIRS_EXCLUDE ??= "CVS .bzr .git .hg .osc .p4 .repo .svn"

I agree.. this really should be put into the bitbake.conf file in OE-core.  (I'd
also suggest adding it to the bitbake.conf file in bitbake itself, as an example.)

--Mark

> somewhere in OE-Core (and it can then also have a suitable 
> BB_SIGNATURE_LOCAL_DIRS_EXCLUDE[doc], though it seems BB_-variables 
> are only documented in meta/conf/documentation.conf)?
> 
> Alternatively, to keep the list above within bitbake, make it two 
> variables, one for the list of directories above that is not really 
> intended to be modified, and one for additional directories (which 
> should still be documented in meta/conf/documentation.conf).
> 
> //Peter
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCHv2] lib/bb: Add BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
  2019-11-15 17:12   ` Mark Hatle
@ 2019-11-18 15:22     ` Anibal Limon
  2019-12-16 18:55       ` Anibal Limon
  0 siblings, 1 reply; 5+ messages in thread
From: Anibal Limon @ 2019-11-18 15:22 UTC (permalink / raw)
  To: Mark Hatle; +Cc: bitbake-devel

[-- Attachment #1: Type: text/plain, Size: 2921 bytes --]

On Fri, 15 Nov 2019 at 11:12, Mark Hatle <mark.hatle@kernel.crashing.org>
wrote:

>
>
> On 11/15/19 10:29 AM, Peter Kjellerstedt wrote:
> >> -----Original Message-----
> >> From: bitbake-devel-bounces@lists.openembedded.org <bitbake-devel-
> >> bounces@lists.openembedded.org> On Behalf Of Aníbal Limón
> >> Sent: den 15 november 2019 15:47
> >> To: bitbake-devel@lists.openembedded.org
> >> Subject: [bitbake-devel] [PATCHv2] lib/bb: Add
> >> BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
> >>
> >> The new BB_SIGNATURE_LOCAL_DIRS_EXCLUDE allows you to specify a list
> >> of directories to exclude when making taskhash, our specific case
> >> is using SRC_URI that points local VCS directory.
> >>
> >> Use bb.fetch.module to set default to: "CVS .bzr .git .hg .osc .p4 .repo
> >> .svn"
> >>
> >> Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
> >> ---
> >>  lib/bb/checksum.py        | 5 +++--
> >>  lib/bb/fetch2/__init__.py | 4 ++--
> >>  lib/bb/siggen.py          | 5 +++--
> >>  3 files changed, 8 insertions(+), 6 deletions(-)
> >
> > [cut]
> >
> >> --- a/lib/bb/siggen.py
> >> +++ b/lib/bb/siggen.py
> >> @@ -123,6 +123,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
> >>
> >>          self.unihash_cache = bb.cache.SimpleCache("1")
> >>          self.unitaskhashes = self.unihash_cache.init_cache(data,
> "bb_unihashes.dat", {})
> >> +        self.localdirsexclude =
> (data.getVar("BB_SIGNATURE_LOCAL_DIRS_EXCLUDE") or "CVS .bzr .git .hg .osc
> .p4 .repo .svn").split()
> >
> > I don't like this construct, because if I do:
> >
> > BB_SIGNATURE_LOCAL_DIRS_EXCLUDE_append = " some_dir"
> >
> > it means that all of a sudden the SCM directories listed above will no
> > longer be excluded since BB_SIGNATURE_LOCAL_DIRS_EXCLUDE will now be
> > defined, but only contain " some_dir". Isn't it better to add:
> >
> > BB_SIGNATURE_LOCAL_DIRS_EXCLUDE ??= "CVS .bzr .git .hg .osc .p4 .repo
> .svn"
>
> I agree.. this really should be put into the bitbake.conf file in
> OE-core.  (I'd
> also suggest adding it to the bitbake.conf file in bitbake itself, as an
> example.)
>
> --Mark
>
> > somewhere in OE-Core (and it can then also have a suitable
> > BB_SIGNATURE_LOCAL_DIRS_EXCLUDE[doc], though it seems BB_-variables
> > are only documented in meta/conf/documentation.conf)?
> >
> > Alternatively, to keep the list above within bitbake, make it two
> > variables, one for the list of directories above that is not really
> > intended to be modified, and one for additional directories (which
> > should still be documented in meta/conf/documentation.conf).
>

For me it is fine if we set this variable in OE-Core with a default value
to VCS directories this is covered by v1 PATCH, after merge I will send
a patch to OE-Core adding the default value.

Regards,
Anibal


> >
> > //Peter
> >
>

[-- Attachment #2: Type: text/html, Size: 4217 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCHv2] lib/bb: Add BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
  2019-11-18 15:22     ` Anibal Limon
@ 2019-12-16 18:55       ` Anibal Limon
  0 siblings, 0 replies; 5+ messages in thread
From: Anibal Limon @ 2019-12-16 18:55 UTC (permalink / raw)
  To: Richard Purdie; +Cc: bitbake-devel

[-- Attachment #1: Type: text/plain, Size: 3150 bytes --]

Hi, any update?

Regards,
Anibal

El lun., 18 de nov. de 2019 09:22, Anibal Limon <anibal.limon@linaro.org>
escribió:

>
>
> On Fri, 15 Nov 2019 at 11:12, Mark Hatle <mark.hatle@kernel.crashing.org>
> wrote:
>
>>
>>
>> On 11/15/19 10:29 AM, Peter Kjellerstedt wrote:
>> >> -----Original Message-----
>> >> From: bitbake-devel-bounces@lists.openembedded.org <bitbake-devel-
>> >> bounces@lists.openembedded.org> On Behalf Of Aníbal Limón
>> >> Sent: den 15 november 2019 15:47
>> >> To: bitbake-devel@lists.openembedded.org
>> >> Subject: [bitbake-devel] [PATCHv2] lib/bb: Add
>> >> BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories
>> >>
>> >> The new BB_SIGNATURE_LOCAL_DIRS_EXCLUDE allows you to specify a list
>> >> of directories to exclude when making taskhash, our specific case
>> >> is using SRC_URI that points local VCS directory.
>> >>
>> >> Use bb.fetch.module to set default to: "CVS .bzr .git .hg .osc .p4
>> .repo
>> >> .svn"
>> >>
>> >> Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
>> >> ---
>> >>  lib/bb/checksum.py        | 5 +++--
>> >>  lib/bb/fetch2/__init__.py | 4 ++--
>> >>  lib/bb/siggen.py          | 5 +++--
>> >>  3 files changed, 8 insertions(+), 6 deletions(-)
>> >
>> > [cut]
>> >
>> >> --- a/lib/bb/siggen.py
>> >> +++ b/lib/bb/siggen.py
>> >> @@ -123,6 +123,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
>> >>
>> >>          self.unihash_cache = bb.cache.SimpleCache("1")
>> >>          self.unitaskhashes = self.unihash_cache.init_cache(data,
>> "bb_unihashes.dat", {})
>> >> +        self.localdirsexclude =
>> (data.getVar("BB_SIGNATURE_LOCAL_DIRS_EXCLUDE") or "CVS .bzr .git .hg .osc
>> .p4 .repo .svn").split()
>> >
>> > I don't like this construct, because if I do:
>> >
>> > BB_SIGNATURE_LOCAL_DIRS_EXCLUDE_append = " some_dir"
>> >
>> > it means that all of a sudden the SCM directories listed above will no
>> > longer be excluded since BB_SIGNATURE_LOCAL_DIRS_EXCLUDE will now be
>> > defined, but only contain " some_dir". Isn't it better to add:
>> >
>> > BB_SIGNATURE_LOCAL_DIRS_EXCLUDE ??= "CVS .bzr .git .hg .osc .p4 .repo
>> .svn"
>>
>> I agree.. this really should be put into the bitbake.conf file in
>> OE-core.  (I'd
>> also suggest adding it to the bitbake.conf file in bitbake itself, as an
>> example.)
>>
>> --Mark
>>
>> > somewhere in OE-Core (and it can then also have a suitable
>> > BB_SIGNATURE_LOCAL_DIRS_EXCLUDE[doc], though it seems BB_-variables
>> > are only documented in meta/conf/documentation.conf)?
>> >
>> > Alternatively, to keep the list above within bitbake, make it two
>> > variables, one for the list of directories above that is not really
>> > intended to be modified, and one for additional directories (which
>> > should still be documented in meta/conf/documentation.conf).
>>
>
> For me it is fine if we set this variable in OE-Core with a default value
> to VCS directories this is covered by v1 PATCH, after merge I will send
> a patch to OE-Core adding the default value.
>
> Regards,
> Anibal
>
>
>> >
>> > //Peter
>> >
>>
>

[-- Attachment #2: Type: text/html, Size: 4770 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-12-16 18:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-15 14:47 [PATCHv2] lib/bb: Add BB_SIGNATURE_LOCAL_DIRS_EXCLUDE to speed-up taskhash on directories Aníbal Limón
2019-11-15 16:29 ` Peter Kjellerstedt
2019-11-15 17:12   ` Mark Hatle
2019-11-18 15:22     ` Anibal Limon
2019-12-16 18:55       ` Anibal Limon

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.