From 7b521b924bb12d54cd09c6d9edd4b36d03a57c10 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Fri, 5 Aug 2011 22:58:03 +0200 Subject: [PATCH] [server] add support for linktest --- server/eit | 6 +++++- server/reagent.py | 31 ++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/server/eit b/server/eit index d5b0d2956..db4cd9400 100755 --- a/server/eit +++ b/server/eit @@ -51,7 +51,8 @@ help_opts = [ (1, 'fit ', 2, _('inject package files into the current repository')), (1, 'graph [--complete]', 1, _('show dependency graph of packages')), (1, 'init ', 2, _('initialize repository (erasing all its content)')), - (1, 'libtest [--dump]', 2, _('look for missing libraries')), + (1, 'libtest [--dump]', 2, _('look for missing libraries (scan system)')), + (1, 'linktest []', 2, _('look for missing libraries (scan repository metadata)')), (1, 'list []', 2, _('list packages in repository')), (1, 'log []', 2, _('show log for repository')), (1, 'mv ', 2, _('move packages from a repository to another')), @@ -238,6 +239,9 @@ elif main_cmd == "libtest": lt_options.append("--dump") _exec_args([REAGENT_EXEC, "libtest"] + lt_options) +elif main_cmd == "linktest": + _exec_args([REAGENT_EXEC, "linktest"] + options) + elif main_cmd == "deptest": if options: avail_repos = _get_available_repositories() diff --git a/server/reagent.py b/server/reagent.py index e42c01c19..ea7857d42 100644 --- a/server/reagent.py +++ b/server/reagent.py @@ -117,8 +117,9 @@ help_opts = [ (2, 'new [categories]', 2, _('scan new packages available in SPM')), None, (1, 'deptest', 2, _('look for unsatisfied dependencies')), - (1, 'libtest', 2, _('look for missing libraries')), + (1, 'libtest', 2, _('look for missing libraries (scan system)')), (2, '--dump', 2, _('dump results to files')), + (1, 'linktest [excluded libraries]', 1, _('look for missing libraries (scan repository metadata)')), (1, 'pkgtest', 2, _('verify the integrity of local package files')), None, (1, 'cleanup', 2, _('remove downloaded packages and clean temp. directories)')), @@ -284,6 +285,34 @@ elif main_cmd == "libtest": entropy.tools.release_entropy_locks(server) server.shutdown() +elif main_cmd == "linktest": + acquired = False + server = None + rc = 1 + try: + server = get_entropy_server() + acquired = entropy.tools.acquire_entropy_locks(server) + if not acquired: + print_error(darkgreen(_("Another Entropy is currently running."))) + else: + srv_set = server.Settings()[Server.SYSTEM_SETTINGS_PLG_ID]['server'] + base_repository_id = srv_set['base_repository_id'] + qa = server.QA() + for repository_id in server.repositories(): + repo = server.open_repository(repository_id) + found_something = qa.test_missing_runtime_libraries( + server, + [(x, repository_id) for x in repo.listAllPackageIds()], + base_repository_id = base_repository_id, + excluded_libraries = options) + if not found_something: + rc = 0 + finally: + if server is not None: + if acquired: + entropy.tools.release_entropy_locks(server) + server.shutdown() + # cleanup elif main_cmd == "cleanup": import text_tools