diff --git a/conf/mock.cfg b/conf/mock.cfg new file mode 100644 index 00000000..9d2b757d --- /dev/null +++ b/conf/mock.cfg @@ -0,0 +1,14 @@ +config_opts['root'] = '$root' +config_opts['target_arch'] = '$arch' +config_opts['legal_host_arches'] = ('$arch',) +config_opts['chroot_setup_cmd'] = 'install $group' +config_opts['dist'] = '' +config_opts['extra_chroot_dirs'] = [ '/run/lock', ] +config_opts['releasever'] = '' +config_opts['package_manager'] = 'dnf' +config_opts['nosync'] = True +config_opts['use_bootstrap_container'] = False + +config_opts['yum.conf'] = \"\"\" +$yum_conf +\"\"\" diff --git a/conf/yum.conf b/conf/yum.conf new file mode 100644 index 00000000..8e280506 --- /dev/null +++ b/conf/yum.conf @@ -0,0 +1,17 @@ +[main] +keepcache=1 +debuglevel=2 +reposdir=/dev/null +logfile=/var/log/yum.log +retries=20 +obsoletes=1 +gpgcheck=0 +assumeyes=1 +syslog_ident=mock +syslog_device= +install_weak_deps=0 +metadata_expire=3600 +mdpolicy=group:primary + +# repos + diff --git a/module_build_service/builder/MockModuleBuilder.py b/module_build_service/builder/MockModuleBuilder.py index 0eaac670..4510d944 100644 --- a/module_build_service/builder/MockModuleBuilder.py +++ b/module_build_service/builder/MockModuleBuilder.py @@ -61,42 +61,29 @@ class MockModuleBuilder(GenericBuilder): _build_id = 1 _config_lock = threading.Lock() - MOCK_CONFIG_TEMPLATE = """ -config_opts['root'] = '$root' -config_opts['target_arch'] = '$arch' -config_opts['legal_host_arches'] = ('$arch',) -config_opts['chroot_setup_cmd'] = 'install $group' -config_opts['dist'] = '' -config_opts['extra_chroot_dirs'] = [ '/run/lock', ] -config_opts['releasever'] = '' -config_opts['package_manager'] = 'dnf' -config_opts['nosync'] = True -config_opts['use_bootstrap_container'] = False + # Load mock config file template + for cf in conf.mock_config_file: + try: + with open(cf) as f: + mock_config_template = f.read() + break + except IOError: + pass + else: + raise IOError("None of {} mock config files found." + .format(conf.mock_config_file)) -config_opts['yum.conf'] = \"\"\" -$yum_conf -\"\"\" -""" - - MOCK_YUM_CONF_TEMPLATE = """ -[main] -keepcache=1 -debuglevel=2 -reposdir=/dev/null -logfile=/var/log/yum.log -retries=20 -obsoletes=1 -gpgcheck=0 -assumeyes=1 -syslog_ident=mock -syslog_device= -install_weak_deps=0 -metadata_expire=3600 -mdpolicy=group:primary - -# repos - -""" + # Load yum config file template + for cf in conf.yum_config_file: + try: + with open(cf) as f: + yum_config_template = f.read() + break + except IOError: + pass + else: + raise IOError("None of {} yum config files found." + .format(conf.yum_config_file)) @module_build_service.utils.validate_koji_tag('tag_name') def __init__(self, owner, module, config, tag_name, components): @@ -105,7 +92,7 @@ mdpolicy=group:primary self.config = config self.groups = [] self.arch = "x86_64" # TODO: We may need to change that in the future - self.yum_conf = MockModuleBuilder.MOCK_YUM_CONF_TEMPLATE + self.yum_conf = MockModuleBuilder.yum_config_template # Create main directory for this tag self.tag_dir = os.path.join(self.config.mock_resultsdir, tag_name) @@ -204,7 +191,7 @@ mdpolicy=group:primary self.yum_conf += "name=%s\n" % name self.yum_conf += "baseurl=%s\n" % baseurl self.yum_conf += extra - self.yum_conf += "enabled=1\n" + self.yum_conf += "enabled=1\n\n" def _load_mock_config(self): """ @@ -238,7 +225,7 @@ mdpolicy=group:primary """ with MockModuleBuilder._config_lock: - config = str(MockModuleBuilder.MOCK_CONFIG_TEMPLATE) + config = str(MockModuleBuilder.mock_config_template) config = config.replace("$root", "%s-%s" % (self.tag_name, str(threading.current_thread().name))) config = config.replace("$arch", self.arch) diff --git a/module_build_service/config.py b/module_build_service/config.py index 321aabf1..38c2b6cd 100644 --- a/module_build_service/config.py +++ b/module_build_service/config.py @@ -310,6 +310,10 @@ class Config(object): 'type': str, 'default': 'fedora-25-x86_64', 'desc': ''}, + 'mock_config_file': { + 'type': list, + 'default': ['/etc/module-build-service/mock.cfg', 'conf/mock.cfg'], + 'desc': 'List of mock config file paths in order of preference.'}, 'mock_build_srpm_cmd': { 'type': str, 'default': 'fedpkg --release f26 srpm', @@ -350,6 +354,10 @@ class Config(object): 'type': set, 'default': set([]), 'desc': 'The set of groups allowed to manage MBS.'}, + 'yum_config_file': { + 'type': list, + 'default': ['/etc/module-build-service/yum.conf', 'conf/yum.conf'], + 'desc': 'List of yum config file paths in order of preference.'}, } def __init__(self, conf_section_obj): diff --git a/setup.py b/setup.py index 8829f936..86c39757 100644 --- a/setup.py +++ b/setup.py @@ -35,7 +35,9 @@ setup(name='module-build-service', data_files=[('/etc/module-build-service/', ['conf/cacert.pem', 'conf/config.py', 'conf/copr.conf', - 'conf/koji.conf']), + 'conf/koji.conf', + 'conf/mock.cfg', + 'conf/yum.conf']), ('/etc/fedmsg.d/', ['fedmsg.d/mbs-logging.py', 'fedmsg.d/mbs-scheduler.py', 'fedmsg.d/module_build_service.py']),