[poky] [DAISY backport] backport 3cb87724a5b21550e99c18e97b665d6604bb2fa9 from git://git.yoctoproject.org/poky

Martin Jansa martin.jansa at gmail.com
Sat Jan 16 09:50:18 PST 2016


This belongs to bitbake-devel ML and don't change the commit summary, just
add [branch-name] tag to e-mail subject.

On Sat, Jan 16, 2016 at 1:28 PM, Florin Sarbu <florin at resin.io> wrote:

> bitbake: cooker: Ensure bbappend files are processed in a
> determistic order
>
> self.appendlist is a dict and as such unordered. This can lead to cases
> where appends with different names (e.g. x_%.bbappend vs. x_123.bbappend)
> can be reordered in application which in turn reorders the variables
> that those bbappend files might touch. Reorderd variables changes the
> sstate
> cache signatures causing real world issues.
>
> To avoid this, use a list for the append files instead.
>
> This patch is conservative and just adds a new data structure alongside
> the existing one and uses it to resolve the core issue. Later patches
> (post release) can handle some of the wider but less problematic ones
> (e.g. issues in bitbake-layers flatten).
>
> [YOCTO #7511]
>
> (Bitbake rev: f980f060cd0d1e7fe5011f3c325c1b254f05eccf)
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> Signed-off-by: Florin Sarbu <florin at resin.io>
> ---
>  bitbake/lib/bb/cooker.py | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
> index f44a088..a2c9b10 100644
> --- a/bitbake/lib/bb/cooker.py
> +++ b/bitbake/lib/bb/cooker.py
> @@ -1408,6 +1408,7 @@ class CookerExit(bb.event.Event):
>  class CookerCollectFiles(object):
>      def __init__(self, priorities):
>          self.appendlist = {}
> +        self.bbappends = []
>          self.appliedappendlist = []
>          self.bbfile_config_priorities = priorities
>
> @@ -1502,6 +1503,7 @@ class CookerCollectFiles(object):
>          # Build a list of .bbappend files for each .bb file
>          for f in bbappend:
>              base = os.path.basename(f).replace('.bbappend', '.bb')
> +            self.bbappends.append((base, f))
>              if not base in self.appendlist:
>                 self.appendlist[base] = []
>              if f not in self.appendlist[base]:
> @@ -1527,11 +1529,11 @@ class CookerCollectFiles(object):
>          """
>          filelist = []
>          f = os.path.basename(fn)
> -        for bbappend in self.appendlist:
> +        for b in self.bbappends:
> +            (bbappend, filename) = b
>              if (bbappend == f) or ('%' in bbappend and
> bbappend.startswith(f[:bbappend.index('%')])):
>                  self.appliedappendlist.append(bbappend)
> -                for filename in self.appendlist[bbappend]:
> -                    filelist.append(filename)
> +                filelist.append(filename)
>          return filelist
>
>      def collection_priorities(self, pkgfns):
> @@ -1551,10 +1553,10 @@ class CookerCollectFiles(object):
>                  unmatched.add(regex)
>
>          def findmatch(regex):
> -            for bbfile in self.appendlist:
> -                for append in self.appendlist[bbfile]:
> -                    if regex.match(append):
> -                        return True
> +            for b in self.bbappends:
> +                (bbfile, append) = b
> +                if regex.match(append):
> +                    return True
>              return False
>
>          for unmatch in unmatched.copy():
> --
> 2.7.0.rc3
>
> --
> _______________________________________________
> poky mailing list
> poky at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/poky
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/poky/attachments/20160116/45bacdcc/attachment.html>


More information about the poky mailing list