mirror of
https://git.yoctoproject.org/poky
synced 2026-05-01 06:32:11 +02:00
base.bbclass: add checksums.ini generator
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. git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2898 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
@@ -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))
|
||||
@@ -482,11 +495,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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user