[reagent,equo] implement "reagent repo package-dep-check" tool
This tool helps QA checking packages against missing runtime dependencies
This commit is contained in:
@@ -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')),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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')),
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user