From fc11710aa7a96dd26c77c2cd4f9be558a68a8653 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sat, 1 Jan 2011 18:01:48 +0100 Subject: [PATCH] [entropy.server] missing_runtime_dependencies_test: add "bump packages" feature Packages should be bumped if metadata changes, this applies to calls coming for old packages already available in online repositories --- libraries/entropy/server/interfaces/main.py | 23 ++++++++++++++++++++- server/server_reagent.py | 3 ++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/libraries/entropy/server/interfaces/main.py b/libraries/entropy/server/interfaces/main.py index c25213dae..e7a687b68 100644 --- a/libraries/entropy/server/interfaces/main.py +++ b/libraries/entropy/server/interfaces/main.py @@ -4329,13 +4329,20 @@ class ServerRepositoryMixin: return downloadurl - def missing_runtime_dependencies_test(self, package_matches, ask = True): + def missing_runtime_dependencies_test(self, package_matches, ask = True, + bump_packages = False): """ Use Entropy QA interface to check package matches against missing runtime dependencies, adding them. @param package_matches: @type package_matches: list + @keyword ask: if missing runtime dependencies should be validated + interactively + @type ask: bool + @keyword bump_packages: True, if packages should be bumped (revision + bumped) + @type bump_packages: bool """ blacklisted_deps = \ self._settings[Server.SYSTEM_SETTINGS_PLG_ID]['dep_blacklist'] @@ -4381,6 +4388,20 @@ class ServerRepositoryMixin: # pkg_repo is always the same... raise AssertionError( "pkg_repo and missing_pkg_repo must be equal") + + if bump_packages: + # in this case, a new package should be generated, with + # bumped revision + pkg_data = dbconn.getPackageData(pkg_id) + # also bump injected packages properly + original_injected = pkg_data['injected'] + pkg_data['injected'] = False + pkg_id, revision, pkg_data = dbconn.handlePackage(pkg_data) + if original_injected: + dbconn.setInjected(pkg_id) + # make sure that info have been written to disk + dbconn.commit() + dbconn.insertDependencies(pkg_id, missing) if missing_deps: diff --git a/server/server_reagent.py b/server/server_reagent.py index 653448d28..41dccc13f 100644 --- a/server/server_reagent.py +++ b/server/server_reagent.py @@ -172,7 +172,8 @@ def _package_dep_check(entropy_server, args): print_error(darkred(" !!! ")+red(_("No packages selected."))) return 2 - entropy_server.missing_runtime_dependencies_test(pkg_matches) + entropy_server.missing_runtime_dependencies_test(pkg_matches, + bump_packages = True) return 0 def _package_dep(entropy_server, args):