[bitbake-devel] [PATCH 1/1] lib/bb/checksum: avoid exception on broken symlinks

Paul Eggleton paul.eggleton at linux.intel.com
Wed Jul 27 20:53:33 UTC 2016


On Tue, 26 Jul 2016 08:08:42 Richard Purdie wrote:
> On Tue, 2016-07-26 at 15:36 +1200, Paul Eggleton wrote:
> > If using OE's externalsrc with a source tree that is not tracked by
> > git and contains broken symlinks, you can receive "TypeError: unorderable
> > 
> > types: NoneType() < str()" within the file checksum code due to:
> >  checksums.sort(key=operator.itemgetter(1))
> > 
> > Don't add files with no checksum to the checksums list in order to
> > avoid this.
> 
> In some of the cache code we have to note whether files were checked
> for but didn't exist. This means that if they then do exist in a later
> run, we know to invalidate the cache.
> 
> Does this change break that?

Took me a couple of days to get back to this, but after double-checking both 
the code and the behaviour the answer is no. As you may recall the file 
checksum operation is broken into two parts:

1) Getting the list of files regardless of whether they exist or not, which is 
done at parse time and goes into the cache

2) Actually getting the checksum of each file that does exist, which is done 
when we calculate the task hashes. The hashes are also cached in their own 
separate cache file based on mtime.

#1 is where we handle files that may appear at some time in future. This patch 
changes the code for #2 and doesn't have any effect on #1.

We should definitely have an oe-selftest test for this though.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the bitbake-devel mailing list