#!/usr/bin/python3 import argparse import glob import logging import os import os.path import subprocess import sys import tempfile logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s', level=logging.INFO) log = logging.getLogger('qs') res = None repocd = None apars = argparse.ArgumentParser() apars.add_argument('-M', '--multibuild', help='Build the specified multibuild package') apars.add_argument('-v', '--verbose', action='count', help="Print quilt's stdout.") ares, remainder = apars.parse_known_args() log.debug(f'remainder = "{remainder}", ({len(remainder)})') if remainder and remainder[-1]: spec_file_name = remainder[-1] else: spec_file_name = sorted(glob.glob('*.spec'), key=lambda file: len(file))[0] if not os.path.exists(spec_file_name): RuntimeError("File {} doesn't exist!".format(spec_file_name)) with tempfile.NamedTemporaryFile(mode='w+', suffix='.spec', dir=os.curdir) as tmp_spec: orig_spec = open(spec_file_name, 'r') multi_step = ares.multibuild for line in orig_spec: if line.find('@BUILD_FLAVOR@') > -1: if multi_step: line = line.replace('@BUILD_FLAVOR@', multi_step) tmp_spec.write(line) tmp_spec.flush() res = subprocess.run(['quilt', 'setup', '-v'] + remainder[:-2] + [tmp_spec.name], text=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in res.stdout.splitlines(): log.debug('line = %s', line) if line.startswith('+ rm -rf '): repocd = line.split()[3] break if ares.verbose: print(res.stdout) log.debug('repocd = %s', repocd) if repocd: print(repocd) sys.exit(res.returncode)