[reagent,equo] implement "reagent repo package-dep-check" tool

This tool helps QA checking packages against missing runtime dependencies
This commit is contained in:
Fabio Erculiani
2011-01-01 17:22:44 +01:00
parent 4c37ad3e22
commit bf947d355b
5 changed files with 59 additions and 12 deletions

View File

@@ -311,12 +311,13 @@ help_opts_extended = [
(3, 'switchbranch <from branch> <to branch>', 2, _('switch to the specified branch the provided atoms (or world)')),
(3, 'md5remote', 2, _('verify remote integrity of the provided atoms (or world)')),
(3, 'backup', 3, _('backup current repository database')),
(3, 'restore', 3, _('restore a previously backed-up repository database')),
(3, 'restore', 2, _('restore a previously backed-up repository database')),
(3, 'spmuids', 2, _('regenerate SPM UIDs map (SPM <-> Entropy packages)'),),
(3, 'enable <repo>', 3, _('enable the specified repository')),
(3, 'disable <repo>', 3, _('disable the specified repository')),
(3, 'status <repo>', 3, _('show the current Server Interface status')),
(3, 'enable <repo>', 2, _('enable the specified repository')),
(3, 'disable <repo>', 2, _('disable the specified repository')),
(3, 'status <repo>', 2, _('show the current Server Interface status')),
(3, 'package-dep-check <repo> [atoms]', 1, _('check packages in repository for missing dependencies')),
(3, 'package-dep <repo> [atoms]', 1, _('handle packages dependencies')),
(3, 'package-tag <repo> <tag-string> [atoms]', 1, _('clone a package inside a repository assigning it an arbitrary tag')),
(3, 'move <from> <to> [atoms]', 1, _('move packages from a repository to another')),

View File

@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "EQUO 1"
.TH EQUO 1 "2010-11-27" "perl v5.12.2" "Entropy"
.TH EQUO 1 "2010-12-02" "perl v5.12.2" "Entropy"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l

View File

@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "REAGENT 1"
.TH REAGENT 1 "2010-11-18" "perl v5.12.2" "Entropy"
.TH REAGENT 1 "2011-01-01" "perl v5.12.2" "Entropy"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -300,6 +300,9 @@ enable the specified repository
.IP "\fBdisable <repo\fR>" 4
.IX Item "disable <repo>"
disable the specified repository
.IP "\fBpackage-dep-check <repo\fR [atoms]>" 4
.IX Item "package-dep-check <repo [atoms]>"
check packages in repository for missing dependencies
.IP "\fBpackage-dep <repo\fR [atoms]>" 4
.IX Item "package-dep <repo [atoms]>"
handle packages dependencies
@@ -445,9 +448,9 @@ Fabio Erculiani <lxnay@sabayon.org>
.SH "POD ERRORS"
.IX Header "POD ERRORS"
Hey! \fBThe above document had some coding errors, which are explained below:\fR
.IP "Around line 304:" 4
.IX Item "Around line 304:"
.IP "Around line 308:" 4
.IX Item "Around line 308:"
\&'=item' outside of any '=over'
.IP "Around line 404:" 4
.IX Item "Around line 404:"
.IP "Around line 408:" 4
.IX Item "Around line 408:"
You forgot a '=back' before '=head1'

View File

@@ -82,11 +82,12 @@ help_opts = [
(2, 'multiremove', 3, _('remove the provided injected atoms (all if no atom specified)')),
(2, 'create-empty-database', 2, _('create an empty repository database in the provided path')),
(2, 'switchbranch <from branch> <to branch>', 3, _('switch to the specified branch the repository')),
(2, 'md5remote [atoms]', 3, _('verify remote integrity of the provided atoms')),
(2, 'md5remote [atoms]', 2, _('verify remote integrity of the provided atoms')),
(2, 'backup', 4, _('backup current repository database')),
(2, 'restore', 4, _('restore a previously backed-up repository database')),
(2, 'restore', 3, _('restore a previously backed-up repository database')),
(2, 'enable <repo>', 3, _('enable the specified repository')),
(2, 'disable <repo>', 3, _('disable the specified repository')),
(2, 'package-dep-check <repo> [atoms]', 0, _('check packages in repository for missing dependencies')),
(2, 'package-dep <repo> [atoms]', 1, _('handle packages dependencies')),
(2, 'package-tag <repo> <tag-string> [atoms]', 1, _('clone a package assigning it an arbitrary tag')),
(2, 'package-mask <repo> [atoms]', 1, _('mask given package in given repository')),

View File

@@ -137,6 +137,44 @@ def _package_tag(entropy_server, args):
repo = repo)
return status
def _package_dep_check(entropy_server, args):
if len(args) < 1:
print_error(darkred(" !!! ")+red(_("Invalid syntax.")))
return 1
repo = args[0]
sys_settings_plugin_id = \
etpConst['system_settings_plugins_ids']['server_plugin']
srv_set = SYS_SET[sys_settings_plugin_id]['server']
if repo not in srv_set['repositories']:
print_error(darkred(" !!! ")+red(_("No valid repository specified.")))
return 3
atoms = args[1:]
if not atoms:
pkg_ids = entropy_server.open_repository(repo).listAllPackageIds()
pkg_matches = [(x, repo) for x in pkg_ids]
else:
pkg_matches = []
for package in atoms:
match = entropy_server.atom_match(package, match_repo = (repo,))
if match[1] == repo:
pkg_matches.append(match)
else:
print_warning( brown(" * ") + \
red("%s: " % (_("Cannot match"),) )+bold(package) + \
red(" %s " % (_("in"),) )+bold(repo) + \
red(" %s" % (_("repository"),) )
)
if not pkg_matches:
print_error(darkred(" !!! ")+red(_("No packages selected.")))
return 2
entropy_server.missing_runtime_dependencies_test(pkg_matches)
return 0
def _package_dep(entropy_server, args):
if len(args) < 2:
@@ -165,6 +203,7 @@ def _package_dep(entropy_server, args):
red(" %s" % (_("repository"),) )
)
if not idpackages:
print_error(darkred(" !!! ")+red(_("No packages selected.")))
return 2
dbconn = entropy_server.open_server_repository(repo = repo,
just_reading = True)
@@ -651,6 +690,9 @@ def _repositories(entropy_server, options):
entropy_server.switch_default_repository(repoid, save = True)
return 0
elif cmd == "package-dep-check":
return _package_dep_check(entropy_server, myopts)
elif cmd == "package-tag":
return _package_tag(entropy_server, myopts)