base.bbclass: Combine all checksum.ini files found in BBPATH
authorPetri Lehtinen <petri.lehtinen@inoi.fi>
Tue, 14 Apr 2009 21:59:55 +0000 (21:59 +0000)
committerDenys Dmytriyenko <denis@denix.org>
Tue, 21 Apr 2009 18:46:13 +0000 (14:46 -0400)
This makes it possible for overlays to have checksum.ini.

Signed-off-by: Petri Lehtinen <petri.lehtinen@inoi.fi>
Acked-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Denys Dmytriyenko <denis@denix.org>
Acked-by: Chris Larson <clarson@kergoth.com>
Acked-by: Otavio Salvador <otavio@ossystems.com.br>
classes/base.bbclass

index 9ec705b..e5fd814 100644 (file)
@@ -40,12 +40,11 @@ def base_path_relative(src, dest):
     return sep.join(relpath)
 
 # for MD5/SHA handling
-def base_chk_load_parser(config_path):
+def base_chk_load_parser(config_paths):
     import ConfigParser, os, bb
     parser = ConfigParser.ConfigParser()
-    if not len(parser.read(config_path)) == 1:
-        bb.note("Can not open the '%s' ini file" % config_path)
-        raise Exception("Can not open the '%s'" % config_path)
+    if len(parser.read(config_paths)) < 1:
+        raise ValueError("no ini files could be found")
 
     return parser
 
@@ -620,13 +619,18 @@ python base_do_fetch() {
 
        # Verify the SHA and MD5 sums we have in OE and check what do
        # in
-       check_sum = bb.which(bb.data.getVar('BBPATH', d, True), "conf/checksums.ini")
-       if not check_sum:
-               bb.note("No conf/checksums.ini found, not checking checksums")
-               return
+       checksum_paths = bb.data.getVar('BBPATH', d, True).split(":")
+
+       # reverse the list to give precedence to directories that
+       # appear first in BBPATH
+       checksum_paths.reverse()
 
+       checksum_files = ["%s/conf/checksums.ini" % path for path in checksum_paths]
        try:
-               parser = base_chk_load_parser(check_sum)
+               parser = base_chk_load_parser(checksum_files)
+       except ValueError:
+               bb.note("No conf/checksums.ini found, not checking checksums")
+               return
        except:
                bb.note("Creating the CheckSum parser failed")
                return