commit: 7cb7196fe8aa668e76437a8a4500a7bcb9fd3c75 Author: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org> AuthorDate: Mon Sep 2 05:32:09 2019 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Mon Sep 2 20:11:26 2019 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=7cb7196f
_doebuild_path: Optimize PATH in ebuild environment. Canonicalize paths of directories in PATH. Avoid duplicates when some directories (e.g. bin and sbin) are merged. Bug: https://bugs.gentoo.org/693306 Signed-off-by: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache.Org> Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/portage/package/ebuild/doebuild.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/portage/package/ebuild/doebuild.py b/lib/portage/package/ebuild/doebuild.py index 584ff798b..66e294d51 100644 --- a/lib/portage/package/ebuild/doebuild.py +++ b/lib/portage/package/ebuild/doebuild.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals __all__ = ['doebuild', 'doebuild_environment', 'spawn', 'spawnebuild'] +import collections import grp import gzip import errno @@ -254,7 +255,14 @@ def _doebuild_path(settings, eapi=None): path.append(x_abs) path.extend(rootpath) - settings["PATH"] = ":".join(path) + + # Canonicalize paths and avoid duplicates when some directories + # (e.g. bin and sbin) are merged. + real_path = collections.OrderedDict() + for x in path: + real_path.setdefault(os.path.realpath(x), None) + + settings["PATH"] = ":".join(real_path) def doebuild_environment(myebuild, mydo, myroot=None, settings=None, debug=False, use_cache=None, db=None):