[devel] [PATCH 1/2] gb/gb-sh-functions: introduce pkg_identity()
Vladimir D. Seleznev
vseleznv на altlinux.org
Пн Апр 13 22:32:22 MSK 2020
On Mon, Apr 13, 2020 at 09:01:43PM +0300, Dmitry V. Levin wrote:
> On Sat, Apr 11, 2020 at 02:10:43AM +0300, Vladimir D. Seleznev wrote:
> > ---
> > gb/gb-sh-functions | 112 +++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 112 insertions(+)
> >
> > diff --git a/gb/gb-sh-functions b/gb/gb-sh-functions
> > index cd9039a..d7b1980 100644
> > --- a/gb/gb-sh-functions
> > +++ b/gb/gb-sh-functions
> > @@ -283,4 +283,115 @@ rpm_changes_since()
> >
> > gb-x-changelog-complement ${tmpdir}/changelog_old ${tmpdir}/changelog_new
> > }
> > +
> > +pkg_identity()
> > +{
> > + local keep_branch= pkg=
> > + pkg="${1-}"; shift
> > + if [ "$pkg" = "--with-branch" ]; then
> > + pkg="${1-}"; shift
> > + keep_branch=1
> > + fi
> > +
> > + # List of rpm tags that should be filtered
> > + #
> > + # RPM tags that contain insufficient information about package
> > + # contents and relationship, and do not affect package functionality
> > + # should be filtered.
> > + #
> > + # The main criterias for tags to be filtered:
> > + #
> > + # - Tag contains random or not reproducible value that is assigning
> > + # during the build, and this value does not affect package
> > + # functionality;
> > + # - Tag contains metadata about build host properties;
> > + # - Tag contains metadata of package headers, including its signatures;
> > + # - Tag is only related to package database;
> > + # - Other reasons that are considered worthy.
> > + cat >"$tmpdir"/filtertags <<EOF
> > +ARCH
> > +ARCHIVESIZE
> > +AUTOINSTALLED
> > +BUILDARCHS
> > +BUILDHOST
> > +BUILDTIME
> > +COOKIE
> > +DBINSTANCE
> > +DISTRIBUTION
> > +DISTTAG
> > +DISTURL
> > +DSAHEADER
> > +FILESTATES
> > +HDRID
> > +HEADERCOLOR
> > +HEADERI18NTABLE
> > +HEADERIMAGE
> > +HEADERIMMUTABLE
> > +HEADERREGIONS
> > +HEADERSIGNATURES
> > +IDENTITY
> > +INSTALLCOLOR
> > +INSTALLTID
> > +INSTALLTIME
> > +INSTFILENAMES
> > +INSTPREFIXES
> > +LONGARCHIVESIZE
> > +LONGSIGSIZE
> > +LONGSIZE
> > +PKGID
> > +RPMVERSION
> > +RSAHEADER
> > +SHA1HEADER
> > +SIGGPG
> > +SIGLEMD5_1
> > +SIGMD5
> > +SIGPGP
> > +SIGSIZE
> > +SIZE
> > +SOURCEPKGID
> > +EOF
>
> First of all, I don't think this tools belongs to girar.
Ok, it will be a separate tool. Should it be implemented as some
functionality of rpm, or as a side project?
> > + local rpm_version="$(rpm --version)"
> > + # tag extensions do not exists in the rpm 4.0.4
> > + if [ "$rpm_version" != "RPM version 4.0.4" ]; then
> > + rpm --verbose --querytags |
> > + while read tagname tagval tagtype ext; do
> > + if [ "$ext" = "ext" ]; then
> > + # filter all tag extensions too
> > + echo "$tagname" >> "$tmpdir"/filtertags
> > + fi
> > + done
> > + fi
>
> Second, I don't see why do you need this rpm version check.
> Can't you just do this regardless of rpm version?
A new version of rpm can brings new tag extensions, so I can maintain
list of tag extensions by myself, or I can get the list from rpm
output. The second option is way more convenient.
> > + sort -o "$tmpdir"/filtertags{,}
> > + rpmquery --querytags |sort >"$tmpdir"/querytags
Ok.
> We don't assume that pipefail is enabled, so we prefer
> rpmquery --querytags "$tmpdir"/querytags
> sort -u -o "$tmpdir"/querytags{,}
>
> > + join -v1 "$tmpdir/querytags" "$tmpdir/filtertags" >"$tmpdir"/tags
> > +
> > + # erase extra apt indices tags
> > + sed -i '/APTINDEX/d' "$tmpdir"/tags
>
> Have you ever seen a package with these tags in its header?
I haven't, but just for sure... But if actually they would appear in
package header we shouldn't just ignore them. I'll wipe these lines out.
> > +
> > + # construct query format string in form "[tag:%{tag:shescape}\n]"
> > + local qf="$(sed -E 's/^(.+)$/[\1:%{\1:shescape}\\n]/' "$tmpdir"/tags)"
>
> This construction ignores sed exit status.
Is
local qf="$(sed -E 's/^(.+)$/[\1:%{\1:shescape}\\n]/' "$tmpdir"/tags |touch $tmpdir/FAIL)"
if [ -f"$tmpdir/FAIL" ]; then
...
OK?
--
WBR,
Vladimir D. Seleznev
Подробная информация о списке рассылки Devel