summaryrefslogtreecommitdiffstats
path: root/classes/base.bbclass
diff options
context:
space:
mode:
authorMarcin Juszkiewicz <hrw@openembedded.org>2007-10-17 10:34:00 +0000
committerMarcin Juszkiewicz <hrw@openembedded.org>2007-10-17 10:34:00 +0000
commit4ebaf8c3c640afd1fdd00024c7ddfe8012b56571 (patch)
tree3a022317dafc449072b0a0684e1d6c479f35b144 /classes/base.bbclass
parentd6f89016c41a8f7b0118ae9fdf44041b5482c3b4 (diff)
downloadopenembedded-4ebaf8c3c640afd1fdd00024c7ddfe8012b56571.tar.gz
base.bbclass: add checksums.ini generator (from Poky)
If file is fetched via HTTP or FTP and we do not have its checksum in metadata (conf/checksums.ini) then we generate checksums into TMPDIR/checksums.ini file. Content of that file can be then added into metadata one.
Diffstat (limited to 'classes/base.bbclass')
-rw-r--r--classes/base.bbclass23
1 files changed, 17 insertions, 6 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 999d409914..2cf205fbe9 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -22,6 +22,7 @@ def base_chk_load_parser(config_path):
def base_chk_file(parser, pn, pv, src_uri, localpath, data):
import os, bb
+ no_checksum = False
# Try PN-PV-SRC_URI first and then try PN-SRC_URI
# we rely on the get method to create errors
pn_pv_src = "%s-%s-%s" % (pn,pv,src_uri)
@@ -36,8 +37,7 @@ def base_chk_file(parser, pn, pv, src_uri, localpath, data):
md5 = parser.get(src_uri, "md5")
sha256 = parser.get(src_uri, "sha256")
else:
- return False
- #raise Exception("Can not find a section for '%s' '%s' and '%s'" % (pn,pv,src_uri))
+ no_checksum = True
# md5 and sha256 should be valid now
if not os.path.exists(localpath):
@@ -60,6 +60,19 @@ def base_chk_file(parser, pn, pv, src_uri, localpath, data):
except OSError:
raise Exception("Executing shasum failed")
+ if no_checksum == True: # we do not have conf/checksums.ini entry
+ try:
+ file = open("%s/checksums.ini" % bb.data.getVar("TMPDIR", data, 1), "a")
+ except:
+ return False
+
+ if not file:
+ raise Exception("Creating checksums.ini failed")
+
+ file.write("[%s]\nmd5=%s\nsha256=%s\n\n" % (src_uri, md5data, shadata))
+ file.close()
+ return False
+
if not md5 == md5data:
bb.note("The MD5Sums did not match. Wanted: '%s' and Got: '%s'" % (md5,md5data))
raise Exception("MD5 Sums do not match. Wanted: '%s' Got: '%s'" % (md5, md5data))
@@ -485,11 +498,9 @@ python base_do_fetch() {
(type,host,path,_,_,_) = bb.decodeurl(url)
uri = "%s://%s%s" % (type,host,path)
try:
- if not base_chk_file(parser, pn, pv,uri, localpath, d):
- if type != "file":
+ if type == "http" or type == "https" or type == "ftp" or type == "ftps":
+ if not base_chk_file(parser, pn, pv,uri, localpath, d):
bb.note("%s-%s: %s has no entry in conf/checksums.ini, not checking URI" % (pn,pv,uri))
- else:
- bb.debug("%s-%s: %s has no entry in conf/checksums.ini, not checking URI" % (pn,pv,uri))
except Exception:
raise bb.build.FuncFailed("Checksum of '%s' failed" % uri)
}