From bbcf8935ce64ed6bdf0cbb883e84d03b43cde05c Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 30 Apr 2009 06:58:43 +0000 Subject: [PATCH] Add a --repo option, allowing cache to be generated for overlays. (trunk r13292) svn path=/main/branches/2.1.6/; revision=13463 --- bin/egencache | 18 +++++++++++++++--- man/egencache.1 | 10 +++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/bin/egencache b/bin/egencache index 487901cf0..47e4ea2c7 100755 --- a/bin/egencache +++ b/bin/egencache @@ -34,6 +34,9 @@ def parse_args(args): parser.add_option("--update", action="store_true", help="update metadata/cache/ (generate as necessary)") + parser.add_option("--repo", + action="store", + help="name of repo to operate on (default repo is located at $PORTDIR)") parser.add_option("--cache-dir", help="location of the metadata cache", dest="cache_dir") @@ -126,7 +129,7 @@ class GenCache(object): max_jobs=max_jobs, max_load=max_load) self.returncode = os.EX_OK metadbmodule = portdb.mysettings.load_best_module("portdbapi.metadbmodule") - self._trg_cache = metadbmodule(portdb.porttree_root, + self._trg_cache = metadbmodule(portdb.porttrees[0], "metadata/cache", portage.auxdbkeys[:]) if rsync: self._trg_cache.raise_stat_collision = True @@ -259,8 +262,8 @@ def egencache_main(args): # completely controlled by commandline arguments. env = {} - # TODO: Implement --repo for choosing a repo. - env['PORTDIR_OVERLAY'] = '' + if options.repo is None: + env['PORTDIR_OVERLAY'] = '' if options.cache_dir is not None: env['PORTAGE_DEPCACHEDIR'] = options.cache_dir @@ -300,6 +303,15 @@ def egencache_main(args): settings.lock() portdb = portage.portdbapi(settings["PORTDIR"], mysettings=settings) + if options.repo is not None: + repo_path = portdb.getRepositoryPath(options.repo) + if repo_path is None: + parser.error("Unable to locate repository named '%s'" % \ + (options.repo,)) + return 1 + + # Limit ebuilds to the specified repo. + portdb.porttrees = [repo_path] cp_iter = None if atoms: diff --git a/man/egencache.1 b/man/egencache.1 index 67b166f9d..dbcc44e4b 100644 --- a/man/egencache.1 +++ b/man/egencache.1 @@ -7,9 +7,7 @@ egencache \- generate metadata cache for ebuild repositories .SH "DESCRIPTION" The egencache program generates metadata cache for ebuild repositories and stores it in the \fImetadata/cache/\fR directory within the repository itself, -for distribution. Currenly, only the repository located at \fBPORTDIR\fR -(configured in \fBmake.conf(5)\fR) can be updated by this program, but a -future version will have the ability to select a different repository. +for distribution. .SH ACTIONS .TP .BR "\-\-update [ATOM] ... " @@ -40,6 +38,12 @@ Also see the related \fB\-\-load\-average\fR option. .BR \-\-load\-average=LOAD Specifies that maximum load allowed when spawning multiple jobs. .TP +.BR "\-\-repo=REPO" +Name of the repo to operate on (default repo is located at \fBPORTDIR\fR). +The name should correspond the value of a \fBrepo_name\fR entry (see +\fBportage\fR(5)) from one of the repositories that is configured via the +\fBPORTDIR\fR or \fBPORTDIR_OVERLAY\fR variables (see \fBmake.conf\fR(5)). +.TP .BR "\-\-rsync" When used together with the \fB\-\-update\fR action, this enables a workaround for cases in which the content of a cache entry changes and neither the file -- 2.26.2