1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-09-21 09:46:19 +02:00

avoid importing the config global variable

in build we imported "conf" and "from .conf import config" which let to
two different instances of config: "global config" at import was the
DEFAULTS array, and conf.config the updated config after reading the
user configuration.

Convert everything to use conf.config as everywhere else, which makes
setting of build defaults in the oscrc work again (like build-jobs).
This commit is contained in:
Dirk Müller 2022-10-27 00:20:00 +02:00
parent 774f8406a8
commit 29274b5289
No known key found for this signature in database

View File

@ -19,7 +19,6 @@ from . import conf
from . import connection from . import connection
from . import core from . import core
from . import oscerr from . import oscerr
from .conf import config
from .core import get_buildinfo, store_read_project, store_read_package, meta_exists, quote_plus, get_buildconfig, is_package_dir, dgst from .core import get_buildinfo, store_read_project, store_read_package, meta_exists, quote_plus, get_buildconfig, is_package_dir, dgst
from .core import get_binarylist, get_binary_file, run_external, return_external, raw_input from .core import get_binarylist, get_binary_file, run_external, return_external, raw_input
from .fetch import Fetcher, OscFileGrabber, verify_pacs from .fetch import Fetcher, OscFileGrabber, verify_pacs
@ -108,7 +107,7 @@ class Buildinfo:
# are we building .rpm or .deb? # are we building .rpm or .deb?
# XXX: shouldn't we deliver the type via the buildinfo? # XXX: shouldn't we deliver the type via the buildinfo?
self.pacsuffix = 'rpm' self.pacsuffix = 'rpm'
if self.buildtype in ('dsc', 'collax', 'deb'): if self.buildtype in ('dsc', 'collax', 'deb'):
self.pacsuffix = 'deb' self.pacsuffix = 'deb'
if self.buildtype == 'arch': if self.buildtype == 'arch':
self.pacsuffix = 'arch' self.pacsuffix = 'arch'
@ -137,14 +136,14 @@ class Buildinfo:
self.release = root.find('release').text self.release = root.find('release').text
else: else:
self.release = None self.release = None
if config['api_host_options'][apiurl]['downloadurl']: if conf.config['api_host_options'][apiurl]['downloadurl']:
# Formerly, this was set to False, but we have to set it to True, because a large # Formerly, this was set to False, but we have to set it to True, because a large
# number of repos in OBS are misconfigured and don't actually have repos setup - they # number of repos in OBS are misconfigured and don't actually have repos setup - they
# are API only. # are API only.
self.enable_cpio = True self.enable_cpio = True
self.downloadurl = config['api_host_options'][apiurl]['downloadurl'] + "/repositories" self.downloadurl = conf.config['api_host_options'][apiurl]['downloadurl'] + "/repositories"
if config['http_debug']: if conf.config['http_debug']:
print("⚠️ setting dl_url to %s" % config['api_host_options'][apiurl]['downloadurl']) print("⚠️ setting dl_url to %s" % conf.config['api_host_options'][apiurl]['downloadurl'])
else: else:
self.enable_cpio = True self.enable_cpio = True
self.downloadurl = root.get('downloadurl') self.downloadurl = root.get('downloadurl')
@ -185,9 +184,9 @@ class Buildinfo:
# a hash providing the matching URL for specific repos for newer OBS instances # a hash providing the matching URL for specific repos for newer OBS instances
if node.get('url'): if node.get('url'):
baseurl = node.get('url').replace('%', '%%') baseurl = node.get('url').replace('%', '%%')
if config['api_host_options'][apiurl]['downloadurl']: if conf.config['api_host_options'][apiurl]['downloadurl']:
# Add the path element to the download url override. # Add the path element to the download url override.
baseurl = config['api_host_options'][apiurl]['downloadurl'] + urlsplit(node.get('url'))[2] baseurl = conf.config['api_host_options'][apiurl]['downloadurl'] + urlsplit(node.get('url'))[2]
self.urls[node.get('project') + "/" + node.get('repository')] = baseurl + '/%(arch)s/%(filename)s' self.urls[node.get('project') + "/" + node.get('repository')] = baseurl + '/%(arch)s/%(filename)s'
self.vminstall_list = [dep.name for dep in self.deps if dep.vminstall] self.vminstall_list = [dep.name for dep in self.deps if dep.vminstall]
@ -551,7 +550,7 @@ trustprompt = """Would you like to ...
def check_trusted_projects(apiurl, projects): def check_trusted_projects(apiurl, projects):
trusted = config['api_host_options'][apiurl]['trusted_prj'] trusted = conf.config['api_host_options'][apiurl]['trusted_prj']
tlen = len(trusted) tlen = len(trusted)
for prj in projects: for prj in projects:
if prj not in trusted: if prj not in trusted:
@ -566,7 +565,7 @@ def check_trusted_projects(apiurl, projects):
raise oscerr.UserAbort() raise oscerr.UserAbort()
if tlen != len(trusted): if tlen != len(trusted):
config['api_host_options'][apiurl]['trusted_prj'] = trusted conf.config['api_host_options'][apiurl]['trusted_prj'] = trusted
conf.config_set_option(apiurl, 'trusted_prj', ' '.join(trusted)) conf.config_set_option(apiurl, 'trusted_prj', ' '.join(trusted))
@ -596,19 +595,19 @@ def calculate_prj_pac(opts, descr):
def calculate_build_root(apihost, prj, pac, repo, arch): def calculate_build_root(apihost, prj, pac, repo, arch):
buildroot = os.environ.get('OSC_BUILD_ROOT', config['build-root']) \ buildroot = os.environ.get('OSC_BUILD_ROOT', conf.config['build-root']) \
% {'repo': repo, 'arch': arch, 'project': prj, 'package': pac, 'apihost': apihost} % {'repo': repo, 'arch': arch, 'project': prj, 'package': pac, 'apihost': apihost}
return buildroot return buildroot
def build_as_user(): def build_as_user():
if os.environ.get('OSC_SU_WRAPPER', config['su-wrapper']).split(): if os.environ.get('OSC_SU_WRAPPER', conf.config['su-wrapper']).split():
return False return False
return True return True
def su_wrapper(cmd): def su_wrapper(cmd):
sucmd = os.environ.get('OSC_SU_WRAPPER', config['su-wrapper']).split() sucmd = os.environ.get('OSC_SU_WRAPPER', conf.config['su-wrapper']).split()
if sucmd: if sucmd:
if sucmd[0] == 'su': if sucmd[0] == 'su':
if sucmd[-1] == '-c': if sucmd[-1] == '-c':
@ -620,7 +619,7 @@ def su_wrapper(cmd):
def run_build(opts, *args): def run_build(opts, *args):
cmd = [config['build-cmd']] cmd = [conf.config['build-cmd']]
cmd += args cmd += args
cmd = su_wrapper(cmd) cmd = su_wrapper(cmd)
@ -639,12 +638,12 @@ def main(apiurl, opts, argv):
build_root = None build_root = None
cache_dir = None cache_dir = None
build_uid = '' build_uid = ''
config = conf.config
build_shell_after_fail = config['build-shell-after-fail'] build_shell_after_fail = config['build-shell-after-fail']
vm_memory = config['build-memory'] vm_memory = config['build-memory']
vm_disk_size = config['build-vmdisk-rootsize'] vm_disk_size = config['build-vmdisk-rootsize']
vm_type = config['build-type'] vm_type = config['build-type']
vm_telnet = None vm_telnet = None
config["api_host_options"] = conf.config["api_host_options"]
build_descr = os.path.abspath(build_descr) build_descr = os.path.abspath(build_descr)
build_type = os.path.splitext(build_descr)[1][1:] build_type = os.path.splitext(build_descr)[1][1:]
@ -1102,7 +1101,7 @@ def main(apiurl, opts, argv):
http_debug=config['http_debug'], http_debug=config['http_debug'],
modules=bi.modules, modules=bi.modules,
enable_cpio=not opts.disable_cpio_bulk_download and bi.enable_cpio, enable_cpio=not opts.disable_cpio_bulk_download and bi.enable_cpio,
cookiejar=connection.CookieJarAuthHandler(apiurl, os.path.expanduser(conf.config["cookiejar"]))._cookiejar, cookiejar=connection.CookieJarAuthHandler(apiurl, os.path.expanduser(config["cookiejar"]))._cookiejar,
download_api_only=opts.download_api_only) download_api_only=opts.download_api_only)
if not opts.trust_all_projects: if not opts.trust_all_projects: