[pacman-dev] [PATCH 2/2] Append '-$arch' to 'installed' array in .BUILDINFO
Dave Reisner
d at falconindy.com
Tue May 15 14:46:15 UTC 2018
On Sun, Mar 18, 2018 at 11:40:53AM +1000, Allan McRae wrote:
> On 18/03/18 07:24, Robin Broda wrote:
> > This patch incurs a **severe** performance degradation when generating
> > the .BUILDINFO file, likely due to frequent usage of `pacman -Qi`
> > and `grep -E`. I haven't found a faster way to gather this information.
> >
> > Signed-off-by: Robin Broda <robin at broda.me>
>
> I will comment on the utility of this patch in another email. This is
> just pointing out that it is broken...
>
> > ---
> > doc/BUILDINFO.5.txt | 2 +-
> > scripts/makepkg.sh.in | 12 ++++++++++--
> > 2 files changed, 11 insertions(+), 3 deletions(-)
> >
> > diff --git a/doc/BUILDINFO.5.txt b/doc/BUILDINFO.5.txt
> > index 4734301e..2c74f9ff 100644
> > --- a/doc/BUILDINFO.5.txt
> > +++ b/doc/BUILDINFO.5.txt
> > @@ -61,7 +61,7 @@ BUILDINFO file format.
> >
> > *installed (array)*::
> > The installed packages at build time including the version information of
> > - the package. Formatted as "$pkgname-$pkgver-$pkgrel".
> > + the package. Formatted as "$pkgname-$pkgver-$pkgrel-$pkgarch".
> >
> > See Also
> > --------
> > diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> > index ece53dca..10303417 100644
> > --- a/scripts/makepkg.sh.in
> > +++ b/scripts/makepkg.sh.in
> > @@ -694,8 +694,16 @@ write_buildinfo() {
> > write_kv_pair "buildenv" "${BUILDENV[@]}"
> > write_kv_pair "options" "${OPTIONS[@]}"
> >
> > - local pkglist=($(run_pacman -Q | sed "s# #-#"))
> > - write_kv_pair "installed" "${pkglist[@]}"
> > + local pkglist=($(run_pacman -Qq))
> > + local installed=()
> > + for pkg in "${pkglist[@]}"
> > + do
> > + pkginfo="$(pacman -Qi "${pkg}")"
>
> What makes this call to pacman not need to use run_pacman like the others?
>
Answer: run_pacman calls sudo, which means that a bare 'makepkg' will
require elevated privileges.
> > + pkgver="$(grep -E '^Version' <<< "${pkginfo}" | tr -d ' ' | cut -d':' -f2-)"
> > + pkgarch="$(grep -E '^Architecture' <<< "${pkginfo}" | tr -d ' ' | cut -d':' -f2-)"
>
> Not every system runs in English...
>
> > + installed+=("${pkg}-${pkgver}-${pkgarch}")
> > + done
> > + write_kv_pair "installed" "${installed[@]}"
> > }
> >
> > # build a sorted NUL-separated list of the full contents of the current
> >
More information about the pacman-dev
mailing list