X-Git-Url: https://git.tld-linux.org/?p=tld-ftp-admin.git;a=blobdiff_plain;f=modules%2Fsign.py;fp=modules%2Fsign.py;h=dc5cc4fac964a25fd66e362251a6a8d829b60c5e;hp=377ee5109635c647ae45a3ae7e488e9c3147af9c;hb=51b9814081f743180ffed6c80fd7945acb554ce2;hpb=f7b22268ab563fa906be0653d037f1805e220e5c diff --git a/modules/sign.py b/modules/sign.py index 377ee51..dc5cc4f 100644 --- a/modules/sign.py +++ b/modules/sign.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et import os @@ -40,20 +40,24 @@ def is_signed(rpm_file): def signpkgs(files, password): if not os.path.isfile('/usr/bin/gpg'): - raise OSError, 'Missing gnupg binary' + raise OSError('Missing gnupg binary') if not os.path.isfile('/bin/rpm'): - raise OSError, 'Missing rpm binary' + raise OSError('Missing rpm binary') os.putenv('LC_ALL', 'C') args = ['--resign', '--define', '_signature gpg', '--define', '_gpg_name ' + sign_key] + files - child = pexpect.spawn('/bin/rpm', args) + child = pexpect.spawn('/bin/rpm', args, encoding='utf-8') child.logfile_read = sys.stderr - child.expect('Enter pass phrase:', timeout=30) - child.sendline(password) + # TODO: we need a smarter way to figuring out if rpm already stored password in gpg-agent + try: + child.expect(u'Enter pass phrase:', timeout=30) + child.sendline(password) + except pexpect.exceptions.TIMEOUT: + print('WARN: rpm did not ask for password', file=sys.stderr) child.expect(pexpect.EOF, timeout=None) child.close() rc = child.exitstatus if rc != 0: - raise OSError, 'package signing failed' + raise OSError('package signing failed') for rpm in files: - os.chmod(rpm, 0644) + os.chmod(rpm, 0o644)