Add checksum support for downloaded files.

File download by http, ftp, pw support checksum. The %hash
directive provides a means of setting a hash used to
checksum the file.

Files on disk or just downloaded are checked.
This commit is contained in:
Chris Johns
2014-07-29 16:35:43 +10:00
parent c49e500042
commit a083b52921
28 changed files with 159 additions and 10 deletions

View File

@@ -229,8 +229,9 @@ class file:
_ignore = [ re.compile('%setup'),
re.compile('%configure'),
re.compile('%source[0-9]*'),
re.compile('%patch[0-9]*'),
re.compile('%source'),
re.compile('%patch'),
re.compile('%hash'),
re.compile('%select'),
re.compile('%disable') ]
@@ -671,6 +672,9 @@ class file:
def _sources(self, ls):
return sources.process(ls[0][1:], ls[1:], self.macros, self._error)
def _hash(self, ls):
return sources.hash(ls[1:], self.macros, self._error)
def _define(self, config, ls):
if len(ls) <= 1:
log.warning('invalid macro definition')
@@ -892,6 +896,11 @@ class file:
d = self._sources(ls)
if d is not None:
return ('data', d)
elif ls[0] == '%hash':
if isvalid:
d = self._hash(ls)
if d is not None:
return ('data', d)
elif ls[0] == '%patch':
if isvalid:
self._select(config, ls)