From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 13 Apr 2020 22:32:22 +0300 From: "Vladimir D. Seleznev" To: ALT Linux Team development discussions Message-ID: <20200413193222.GB15437@portlab> References: <20200410231044.1436970-1-vseleznv@altlinux.org> <20200410231044.1436970-2-vseleznv@altlinux.org> <20200413180143.GB21630@altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200413180143.GB21630@altlinux.org> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [devel] [PATCH 1/2] gb/gb-sh-functions: introduce pkg_identity() X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Apr 2020 19:32:23 -0000 Archived-At: List-Archive: List-Post: 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 < > +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