Fix #641 - mock configuration is hardcoded

This commit is contained in:
Filip Valder
2017-09-13 15:09:56 +02:00
parent b2f07c13e0
commit f86654c655
5 changed files with 67 additions and 39 deletions

14
conf/mock.cfg Normal file
View File

@@ -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
\"\"\"

17
conf/yum.conf Normal file
View File

@@ -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

View File

@@ -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)

View File

@@ -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):

View File

@@ -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']),