commit: f036822d992c0ff38c83b0ffa1b2545715f5f1dd Author: Florian Schmaus <flow <AT> gentoo <DOT> org> AuthorDate: Tue Sep 9 19:39:11 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Thu Sep 11 19:05:10 2025 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=f036822d
Only populate bintree once (instead of twice) Portage would previously unnecessarily invoke "bintree" populate() twice, causing an avoidable delay for binpkg users. The stack traces of the two populate() invocations are: /home/dev/repos/gentoo/portage/bin/emerge(88)<module>() -> main() /home/dev/repos/gentoo/portage/bin/emerge(57)main() -> retval = emerge_main() /home/dev/repos/gentoo/portage/lib/_emerge/main.py(1308)emerge_main() -> return run_action(emerge_config) /home/dev/repos/gentoo/portage/lib/_emerge/actions.py(3524)run_action() -> mytrees["bintree"].populate( /home/dev/repos/gentoo/portage/lib/portage/dbapi/bintree.py(961)populate() -> self._populate_remote( > /home/dev/repos/gentoo/portage/lib/portage/dbapi/bintree.py(1538)_populate_remote() -> f = GzipFile(fileobj=f, mode='rb') /home/dev/repos/gentoo/portage/bin/emerge(88)<module>() -> main() /home/dev/repos/gentoo/portage/bin/emerge(57)main() -> retval = emerge_main() /home/dev/repos/gentoo/portage/lib/_emerge/main.py(1308)emerge_main() -> return run_action(emerge_config) /home/dev/repos/gentoo/portage/lib/_emerge/actions.py(4059)run_action() -> retval = action_build(emerge_config, spinner=spinner) /home/dev/repos/gentoo/portage/lib/_emerge/actions.py(179)action_build() -> emerge_config.target_config.trees["bintree"].populate( /home/dev/repos/gentoo/portage/lib/portage/dbapi/bintree.py(961)populate() -> self._populate_remote( > /home/dev/repos/gentoo/portage/lib/portage/dbapi/bintree.py(1538)_populate_remote() -> f = GzipFile(fileobj=f, mode='rb') This changes the latter from being not invoked if --getbinpkg is in emerge_config.opts, as in this case, the former has already populated the bintree(s). Signed-off-by: Florian Schmaus <flow <AT> gentoo.org> Part-of: https://github.com/gentoo/portage/pull/1455 Closes: https://github.com/gentoo/portage/pull/1455 Signed-off-by: Sam James <sam <AT> gentoo.org> lib/_emerge/actions.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/lib/_emerge/actions.py b/lib/_emerge/actions.py index 53dc3f5852..23594c5c96 100644 --- a/lib/_emerge/actions.py +++ b/lib/_emerge/actions.py @@ -156,24 +156,21 @@ def action_build( and emerge_config.opts.get("--quickpkg-direct", "n") == "y" and emerge_config.target_config.settings["ROOT"] != quickpkg_root ) - if "--getbinpkg" in emerge_config.opts or quickpkg_direct: + if quickpkg_direct: kwargs = {} - if quickpkg_direct: - if quickpkg_root == emerge_config.running_config.settings["ROOT"]: - quickpkg_vardb = emerge_config.running_config.trees["vartree"].dbapi - else: - quickpkg_settings = portage.config( - config_root=emerge_config.target_config.settings[ - "PORTAGE_CONFIGROOT" - ], - target_root=quickpkg_root, - env=emerge_config.target_config.settings.backupenv.copy(), - sysroot=emerge_config.target_config.settings["SYSROOT"], - eprefix=emerge_config.target_config.settings["EPREFIX"], - ) - quickpkg_vardb = portage.vartree(settings=quickpkg_settings).dbapi - kwargs["add_repos"] = (quickpkg_vardb,) + if quickpkg_root == emerge_config.running_config.settings["ROOT"]: + quickpkg_vardb = emerge_config.running_config.trees["vartree"].dbapi + else: + quickpkg_settings = portage.config( + config_root=emerge_config.target_config.settings["PORTAGE_CONFIGROOT"], + target_root=quickpkg_root, + env=emerge_config.target_config.settings.backupenv.copy(), + sysroot=emerge_config.target_config.settings["SYSROOT"], + eprefix=emerge_config.target_config.settings["EPREFIX"], + ) + quickpkg_vardb = portage.vartree(settings=quickpkg_settings).dbapi + kwargs["add_repos"] = (quickpkg_vardb,) try: kwargs["pretend"] = "--pretend" in emerge_config.opts emerge_config.target_config.trees["bintree"].populate(
