[Yum-devel] [PATCH] yum-utils: repoclosure for single package

Tim Lauridsen tim.lauridsen at googlemail.com
Thu Dec 25 15:44:58 UTC 2008


Kedar Sovani wrote:
> Check for the repoclosure of a single package.
>
> Usecase: My automation scripts wanted to query the yum repositories for
> closure of a single package, instead of spending time on checking the
> closure for all packages. (Unsure if this is useful for anyone else.)
>
> Please consider for inclusion.
>
> Signed-off-by: Kedar Sovani <kedars at marvell.com>
>
> --- repo.orig/repoclosure.py	2008-05-29 16:21:11.000000000 +0530
> +++ repo/repoclosure.py	2008-12-24 11:26:30.000000000 +0530
> @@ -58,15 +58,18 @@ def parseArgs():
>                        help="check only the newest packages in the repos")
>      parser.add_option("--repofrompath", action="append",
>                        help="specify repoid & paths of additional repositories - unique repoid and complete path required, can be specified multiple times. Example. --repofrompath=myrepo,/path/to/repo")
> +    parser.add_option("-p", "--pkg", action="append",
> +                      help="check closure for this package only")
>      (opts, args) = parser.parse_args()
>      return (opts, args)
>  
>  class RepoClosure(yum.YumBase):
> -    def __init__(self, arch = [], config = "/etc/yum.conf", builddeps = False):
> +    def __init__(self, pkgonly, arch = [], config = "/etc/yum.conf", builddeps = False ):
>          yum.YumBase.__init__(self)
>          self.logger = logging.getLogger("yum.verbose.repoclosure")
>          self.arch = arch
>          self.builddeps = builddeps
> +        self.pkgonly = pkgonly
>          self.doConfigSetup(fn = config,init_plugins=False)
>          if hasattr(self.repos, 'sqlite'):
>              self.repos.sqlite = False
> @@ -118,6 +121,9 @@ class RepoClosure(yum.YumBase):
>          if self.builddeps:
>              pkgs = filter(lambda x: x.arch == 'src', pkgs)
>  
> +        if self.pkgonly:
> +            pkgs = filter(lambda x: x.name == self.pkgonly[0], pkgs)
> +
>          for pkg in pkgs:
>              for (req, flags, (reqe, reqv, reqr)) in pkg.returnPrco('requires'):
>                  if req.startswith('rpmlib'): continue # ignore rpmlib deps
> @@ -155,7 +161,7 @@ class RepoClosure(yum.YumBase):
>  
>  def main():
>      (opts, cruft) = parseArgs()
> -    my = RepoClosure(arch = opts.arch, config = opts.config, builddeps = opts.builddeps)
> +    my = RepoClosure(arch = opts.arch, config = opts.config, builddeps = opts.builddeps, pkgonly = opts.pkg)
>  
>      if opts.repofrompath:
>          # setup the fake repos
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel
>   
Thanks, it look good to me, so I added the patch.

Tim


More information about the Yum-devel mailing list