On Sat,  1 Apr 2017 18:02:03 -0700
Zac Medico <zmed...@gentoo.org> wrote:

> Fix action_build to populate binarytree instances with remote package
> metadata following config reload, using a new getbinpkg_refresh=False
> parameter to prevent redundant fetching of remote package metadata.
> 
> X-Gentoo-bug: 614474
> X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=614474
> Fixes: e2d88ef3ff59 ("Add emerge --autounmask-continue option (bug
> 582624)") ---
>  pym/_emerge/actions.py       | 15 +++++++++++++++
>  pym/portage/dbapi/bintree.py | 19 +++++++++++++++----
>  2 files changed, 30 insertions(+), 4 deletions(-)
> 
> diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
> index cc0269d..818fab9 100644
> --- a/pym/_emerge/actions.py
> +++ b/pym/_emerge/actions.py
> @@ -347,6 +347,21 @@ def action_build(emerge_config,
> trees=DeprecationWarning, adjust_configs(emerge_config.opts,
> emerge_config.trees) settings, trees, mtimedb = emerge_config
>  
> +                     # After config reload, the freshly
> instantiated binarytree
> +                     # instances need to load remote metadata if
> --getbinpkg
> +                     # is enabled. Use getbinpkg_refresh=False to
> use cached
> +                     # metadata, since the cache is already fresh.
> +                     if "--getbinpkg" in emerge_config.opts:
> +                             for root_trees in
> emerge_config.trees.values():
> +                                     try:
> +
> root_trees["bintree"].populate(
> +
> getbinpkgs=True,
> +
> getbinpkg_refresh=False)
> +                                     except ParseError as e:
> +
> writemsg("\n\n!!!%s.\nSee make.conf(5) for more info.\n"
> +                                                              %
> e, noiselevel=-1)
> +                                             return 1
> +
>               if "--autounmask-only" in myopts:
>                       mydepgraph.display_problems()
>                       return 0
> diff --git a/pym/portage/dbapi/bintree.py
> b/pym/portage/dbapi/bintree.py index 12c3d3e..ca90ba8 100644
> --- a/pym/portage/dbapi/bintree.py
> +++ b/pym/portage/dbapi/bintree.py
> @@ -510,8 +510,16 @@ class binarytree(object):
>                       except PortageException:
>                               pass
>  
> -     def populate(self, getbinpkgs=0):
> -             "populates the binarytree"
> +     def populate(self, getbinpkgs=False, getbinpkg_refresh=True):
> +             """
> +             Populates the binarytree with package metadata.
> +
> +             @param getbinpkgs: include remote packages
> +             @type getbinpkgs: bool
> +             @param getbinpkg_refresh: attempt to refresh the
> cache
> +                     of remote package metadata if getbinpkgs is
> also True
> +             @type getbinpkg_refresh: bool
> +             """
>  
>               if self._populating:
>                       return
> @@ -522,13 +530,13 @@ class binarytree(object):
>                               pkgindex_lock =
> lockfile(self._pkgindex_file, wantnewlockfile=1)
>                       self._populating = True
> -                     self._populate(getbinpkgs)
> +                     self._populate(getbinpkgs,
> getbinpkg_refresh=getbinpkg_refresh) finally:
>                       if pkgindex_lock:
>                               unlockfile(pkgindex_lock)
>                       self._populating = False
>  
> -     def _populate(self, getbinpkgs=0):
> +     def _populate(self, getbinpkgs=False,
> getbinpkg_refresh=True): if (not os.path.isdir(self.pkgdir) and not
> getbinpkgs): return 0
>  
> @@ -832,6 +840,9 @@ class binarytree(object):
>                               url = base_url.rstrip("/") +
> "/Packages" f = None
>  
> +                             if not getbinpkg_refresh and
> local_timestamp:
> +                                     raise
> UseCachedCopyOfRemoteIndex() +
>                               try:
>                                       ttl =
> float(pkgindex.header.get("TTL", 0)) except ValueError:

looks good.  Thanks for migrating that 0 for False

-- 
Brian Dolbec <dolsen>


Reply via email to