Optimize config to stat profile.bashrc files once in the constructor, in order to avoid repeated stat calls in the setcpv method.
Bug: https://bugs.gentoo.org/649806 --- pym/portage/package/ebuild/config.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py index 88acac5cc..320d9f6c0 100644 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@ -274,6 +274,7 @@ class config(object): self.mycpv = clone.mycpv self._setcpv_args_hash = clone._setcpv_args_hash self._soname_provided = clone._soname_provided + self._profile_bashrc = clone._profile_bashrc # immutable attributes (internal policy ensures lack of mutation) self._locations_manager = clone._locations_manager @@ -725,6 +726,10 @@ class config(object): self._license_manager.extract_global_changes( \ self.configdict["conf"].get("ACCEPT_LICENSE", "")) + # profile.bashrc + self._profile_bashrc = tuple(os.path.isfile(os.path.join(profile.location, 'profile.bashrc')) + for profile in profiles_complex) + if local_config: #package.properties propdict = grabdict_package(os.path.join( @@ -1596,11 +1601,9 @@ class config(object): bashrc_files = [] - for profile in self._locations_manager.profiles_complex: - profile_bashrc = os.path.join(profile.location, - 'profile.bashrc') - if os.path.exists(profile_bashrc): - bashrc_files.append(profile_bashrc) + for profile, profile_bashrc in zip(self._locations_manager.profiles_complex, self._profile_bashrc): + if profile_bashrc: + bashrc_files.append(os.path.join(profile.location, 'profile.bashrc')) if profile in self._pbashrcdict: cpdict = self._pbashrcdict[profile].get(cp) if cpdict: -- 2.13.6