...
  View open merge request
Commits (1)
......@@ -27,11 +27,11 @@ Example that installs software::
statlib:lib/libfoo.a
statlib:lib/libfoo.la
dynlib:bin/foo linked:libbar.so.1,libc.so.6,libfoo.so.1 rpath:${bar:location}/lib,!/lib
x86 = http://host/path/x86.zip [md5sum]
x86-64 = http://host/path/x64.zip [md5sum]
x86 = http://host/path/x86.zip [hashes]
x86-64 = http://host/path/x64.zip [hashes]
install =
url, md5sum = options[guessPlatform()].split()
extract_dir = self.extract(self.download(url, md5sum))
url, hashes = options[guessPlatform()].split()
extract_dir = self.extract(self.download(url, hashes=hashes))
self.copyTree(guessworkdir(extract_dir), location)
${:update}
update =
......@@ -134,7 +134,11 @@ filename parameter can be used to change destination named filename.
destination parameter allows to put explicit destination.
md5sum parameter allows pass md5sum.
integrity parameter allow to specify the expected hashes for the downloaded
file, in a format ``algorithm:hash``
md5sum parameter allows pass md5sum. This is deprecated, integrity is
recommended instead.
mode (octal, so for rw-r--r-- use 0644) allows to set mode
......
......@@ -40,6 +40,7 @@ class Recipe(object):
self._downloader = zc.buildout.download.Download(buildout_section,
hash_name=True)
self._url = options['url']
self._integrity = options.get('integrity')
self._md5sum = options.get('md5sum')
self._name = name
mode = options.get('mode')
......@@ -92,7 +93,10 @@ class Recipe(object):
if parts is not None and not os.path.isdir(parts):
os.mkdir(parts)
result.append(parts)
path, is_temp = self._downloader(self._url, md5sum=self._md5sum)
if self._integrity:
path, is_temp = self._downloader(self._url, hashes=self._integrity)
else:
path, is_temp = self._downloader(self._url, md5sum=self._md5sum)
with open(path, 'rb') as fsrc:
if is_temp:
os.remove(path)
......@@ -112,5 +116,5 @@ class Recipe(object):
return result
def update(self):
if not self._md5sum:
if not (self._md5sum or self._integrity):
self.install()
......@@ -108,8 +108,12 @@ class Recipe:
extract_dir = tempfile.mkdtemp(self.name)
try:
self.logger.debug('Created working directory %r', extract_dir)
path, is_temp = download(self.options['url'],
md5sum=self.options.get('md5sum'))
if self.options.get('integrity'):
path, is_temp = download(self.options['url'],
hashes=self.options['integrity'])
else:
path, is_temp = download(self.options['url'],
md5sum=self.options.get('md5sum'))
try:
patch_archive_util()
# ad-hoc support for .xz and .lz archive
......