From: Daniel Martí Date: Fri, 10 Jan 2014 18:54:53 +0000 (+0100) Subject: Check sha256 sums via hashlib X-Git-Tag: 0.1~23^2~1 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6daeb625ab07add87150a7a15646432025a0209e;p=fdroidserver.git Check sha256 sums via hashlib --- diff --git a/makebuildserver b/makebuildserver index 55c5aa1f..f616170e 100755 --- a/makebuildserver +++ b/makebuildserver @@ -4,6 +4,7 @@ import os import sys import subprocess import time +import hashlib from optparse import OptionParser def vagrant(params, cwd=None, printout=False): @@ -98,16 +99,26 @@ else: 'http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86-legacy-toolchains.tar.bz2', '606aadf815ae28cc7b0154996247c70d609f111b14e44bcbcd6cad4c87fefb6f')]) wanted = [] + +def sha256_for_file(path): + with open(path, 'r') as f: + s = hashlib.sha256() + while True: + data = f.read(4096) + if not data: + break + s.update(data) + return s.hexdigest() + for f, src, shasum in cachefiles: - if not os.path.exists(os.path.join(cachedir, f)): + relpath = os.path.join(cachedir, f) + if not os.path.exists(relpath): print "Downloading " + f + " to cache" if subprocess.call(['wget', src], cwd=cachedir) != 0: print "...download of " + f + " failed." sys.exit(1) if shasum: - p = subprocess.Popen(['shasum', '-a', '256', os.path.join(cachedir, f)], - stdout=subprocess.PIPE) - v = p.communicate()[0].split(' ')[0] + v = sha256_for_file(relpath) if v != shasum: print "Invalid shasum of '" + v + "' detected for " + f sys.exit(1)