blob: 403b1041209dd2f97c0674ff82ed8f039052adea [file] [log] [blame]
import os
from util.commands import run_cmd
def generateChecksums(checksums_dir, sums_info):
"""
Generates {MD5,SHA1,etc}SUMS files using *.checksums files.
@type checksums_dir: string
@param checksums_dir: Directory name wich *.checksums files
@type sums_info: dict
@param sums_info: A dictionary which contains hash type and output file
pairs. Example: {'sha1': '/tmp/SHA1SUMS',
'md5': '/tmp/MD5SUMS'}
"""
sums = {}
for hash_type in sums_info.keys():
sums[hash_type] = []
for top, dirs, files in os.walk(checksums_dir):
files = [f for f in files if f.endswith('.checksums')]
for f in files:
fd = open(os.path.join(top, f))
for line in fd:
line = line.rstrip()
try:
hash, hash_type, size, file_name = line.split(None, 3)
except ValueError:
print "Failed to parse the following line:"
print line
raise
entry = (hash, file_name)
if hash_type in sums and entry not in sums[hash_type]:
sums[hash_type].append(entry)
for hash_type in sums_info.keys():
sums_file = open(sums_info[hash_type], 'w')
# sort by file name
for hash, file_name in sorted(sums[hash_type], key=lambda x: x[1]):
sums_file.write('%s %s\n' % (hash, file_name))
sums_file.close()
def signFiles(files):
for f in files:
run_cmd(
['bash', '-c', os.environ['MOZ_SIGN_CMD'] + ' -f gpg "%s"' % f])