Re: [gentoo-portage-dev] [PATCH] config: cache profile.bashrc stat results (bug 649806)
On 07/15/2018 07:27 AM, Brian Dolbec wrote: > On Sat, 14 Jul 2018 22:05:55 -0700 > Zac Medico wrote: > >> 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: > > looks good Thanks, merged: https://gitweb.gentoo.org/proj/portage.git/commit/?id=2de6ba26fd45fe942329ac928029e4edf603e125 -- Thanks, Zac signature.asc Description: OpenPGP digital signature
Re: [gentoo-portage-dev] [PATCH] config: cache profile.bashrc stat results (bug 649806)
On Sat, 14 Jul 2018 22:05:55 -0700 Zac Medico wrote: > 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: looks good -- Brian Dolbec
[gentoo-portage-dev] [PATCH] config: cache profile.bashrc stat results (bug 649806)
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