-#!/usr/bin/env python
+#!/usr/bin/env python3
# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
import os
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)