[devel] [PATCH 1/2] gb/gb-sh-functions: introduce pkg_identity()
Dmitry V. Levin
ldv на altlinux.org
Пн Апр 13 21:01:43 MSK 2020
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.
> + 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?
> + sort -o "$tmpdir"/filtertags{,}
> + rpmquery --querytags |sort >"$tmpdir"/querytags
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?
> +
> + # 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.
--
ldv
Подробная информация о списке рассылки Devel