sighook changed the topic of #zeppe-lin to: Zeppe-Lin GNU/Linux | WWW: zeppe-lin.github.io | GH: github.com/zeppe-lin | IRCLogs: libera.irclog.whitequark.org/zeppe-lin
zeppbot has joined #zeppe-lin
<
zeppbot>
p5-gd: 2.76 -> 2.77
<
zeppbot>
sighook pushed pkgsrc-stuff:master
zeppbot has left #zeppe-lin [#zeppe-lin]
zeppbot has joined #zeppe-lin
<
zeppbot>
pkginfo: footprint mode now makes only one pass through the archive
<
zeppbot>
2. This requires to remake all packages' footprint files.
<
zeppbot>
sighook pushed pkgutils:master
<
zeppbot>
1. This cuts the average amount of time required in half.
<
zeppbot>
Overview:
<
zeppbot>
James Buren <ryuo at ryuo.xyz> improved footprint mode in pkginfo[1].
<
zeppbot>
The original approach wastes time by making two passes through each
<
zeppbot>
archive when generating a footprint. The revised algorithm caches the
<
zeppbot>
necessary metadata it needs to generate the footprint in a first pass
<
zeppbot>
through the archive and then process it all during a second pass
<
zeppbot>
through the cached metadata.
<
zeppbot>
The observable differences from the original algorithm are as follows.
<
zeppbot>
First, the new algorithm takes roughly half the time of the original
<
zeppbot>
when generating footprints. Second, the unsorted line order has been
<
zeppbot>
changed from the order of its appearance in the original archive to a
<
zeppbot>
sorted order by path. The last change was done to support the faster
<
zeppbot>
binary search lookups for the hard links that the original was doing
<
zeppbot>
via a hash table.
<
zeppbot>
If this is considered undesirable, it can be switched back to using a
<
zeppbot>
hash table to retain the original order. It was switched to not
<
zeppbot>
increase the RAM usage anymore that already was for the metadata cache.
<
zeppbot>
An auxiliary hashtable would require extra RAM whereas this method
<
zeppbot>
allows to reuse the same array that was used for metadata cache.
<
zeppbot>
AS A CONSEQUENCES, WITH PKGUTILS UPDATE, ALL FOOTPRINT FILES NEED TO
<
zeppbot>
BE REGENERATED. This can be done as follows:
<
zeppbot>
pkginfo -l PACKAGE > .footprint
<
zeppbot>
BE CAREFUL WHEN UPDATING!
<
zeppbot>
References:
<
zeppbot>
rm pkg_footprint.patch
<
zeppbot>
TODO: mark task done
zeppbot has left #zeppe-lin [#zeppe-lin]