From a8d78f8d06ccf10c9cae0d357129c886dfd9e32c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <lorenz.huedepohl@rzg.mpg.de> Date: Tue, 12 Mar 2019 11:47:16 +0100 Subject: [PATCH] No longer remove unneeded repos, disable them --- mpcdf_common.py | 14 +++++++++++--- mpcdf_setup_repositories.py | 7 ++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/mpcdf_common.py b/mpcdf_common.py index a026980..4058dbc 100644 --- a/mpcdf_common.py +++ b/mpcdf_common.py @@ -321,7 +321,7 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r return True -def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, packages=None, dry_run=False, filter_repos=None, only_project=False): +def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, packages=None, dry_run=False, filter_repos=None, only_project=False, remove_old=False): if parent: for attribute in config_attributes + default_attributes: print("Copying attribute '{0}' from parent project".format(attribute)) @@ -366,8 +366,9 @@ def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, p prjconf = [start_marker] # Remove existing repositories - for oldrepo in root.findall("./repository"): - root.remove(oldrepo) + if remove_old: + for oldrepo in root.findall("./repository"): + root.remove(oldrepo) def repo(name, *dependencies, **kwargs): is_compiler = kwargs.pop("compiler", False) @@ -381,6 +382,13 @@ def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, p have_mpi = is_mpi or is_cuda_mpi have_cuda = is_cuda or is_cuda_mpi + existing_repo = root.find("./repository[@name='{0}']".format(name)) + if existing_repo is not None: + print("Modifying existing repository", name) + root.remove(existing_repo) + else: + print("New repository", name) + r = ElementTree.SubElement(root, "repository") r.set("name", name) r.text = "\n " diff --git a/mpcdf_setup_repositories.py b/mpcdf_setup_repositories.py index 5031e8a..dc13c68 100644 --- a/mpcdf_setup_repositories.py +++ b/mpcdf_setup_repositories.py @@ -20,6 +20,8 @@ import osc.cmdln help="Temporarily disable all repositories containing REPO") @osc.cmdln.option('--only-project', action="store_true", default=False, help="Only change project metadata 'prj' and 'prjconf', leave individual packages unchanged") +@osc.cmdln.option('--remove-old', action="store_true", default=False, + help="Remove all obsolete repositories instead of only disabling builds for packages there") @osc.cmdln.alias("mpcdf_setup_repos") def do_mpcdf_setup_repositories(self, subcmd, opts, *args): """${cmd_name}: Create all repository combinations for an MPCDF project @@ -45,4 +47,7 @@ def do_mpcdf_setup_repositories(self, subcmd, opts, *args): else: raise osc.oscerr.WrongArgs("Too many arguments") - mpcdf_setup_repositories(self.get_api_url(), project, opts.distribution, parent=opts.parent, dry_run=opts.dry_run, filter_repos=opts.disable_repo, only_project=opts.only_project) + mpcdf_setup_repositories(self.get_api_url(), + project, opts.distribution, + parent=opts.parent, dry_run=opts.dry_run, filter_repos=opts.disable_repo, + only_project=opts.only_project, remove_old=opts.remove_old) -- GitLab