From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Brivio To: passt-dev@passt.top Subject: [PATCH 06/12] fedora: Introduce own rpkg macro for changelog Date: Thu, 18 Aug 2022 22:22:29 +0200 Message-ID: <20220818202235.1591828-7-sbrivio@redhat.com> In-Reply-To: <20220818202235.1591828-1-sbrivio@redhat.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0662929613829169679==" --===============0662929613829169679== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable git_dir_changelog is useful in theory, but it requires pairs of annotated tags, which should be generated by rpkg itself to make any sense, implying a relatively heavyweight interaction whenever I want to push a new package version. Also, the default content of the changelog entries include the full list of changes, but the Fedora Packaging Guidelines specifically mention that: [t]hey must never simply contain an entire copy of the source CHANGELOG entries. We don't have a CHANGELOG file, but the full git history is conceptually equivalent for this purpose, I guess. Introduce our own passt_git_changelog() rpkg macro, building changelog entries, using tags in the form DATE-SHA, where DATE is an ISO 8601 date representation, and SHA is a short (7-digits) form of the head commit at a given moment (git push). These changelog entries mention, specifically, changes to the packaging information itself (entries under contrib/fedora), and simply report a link to cgit for the ranges between tags. Reported-by: Benson Muite Signed-off-by: Stefano Brivio --- contrib/fedora/passt.spec | 2 +- contrib/fedora/rpkg.macros | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/contrib/fedora/passt.spec b/contrib/fedora/passt.spec index 8ae104a..41e4e3a 100644 --- a/contrib/fedora/passt.spec +++ b/contrib/fedora/passt.spec @@ -93,4 +93,4 @@ semodule -r pasta 2>/dev/null || : %{_datadir}/selinux/packages/%{name}/pasta.pp =20 %changelog -{{{ git_dir_changelog }}} +{{{ passt_git_changelog }}} diff --git a/contrib/fedora/rpkg.macros b/contrib/fedora/rpkg.macros index 9e0cd78..c9ba03d 100644 --- a/contrib/fedora/rpkg.macros +++ b/contrib/fedora/rpkg.macros @@ -14,3 +14,37 @@ function git_version { printf "0.git.%s.%s" "$(date -u -I | tr - _)" "$(git rev-parse --short HEAD= )" } + +function passt_git_changelog_entry { + __from=3D"${2}" + __to=3D"${1}" + + [ -z "${__from}" ] && __from=3D"$(git rev-list --max-parents=3D0 HEAD)" + + __date=3D"$(git log --pretty=3D"format:%cI" "${__to}" -1)" + __author=3D"$(git log -1 --pretty=3D"format:%an <%ae>" ${__to} -- contrib/f= edora)" + + printf "* %s %s - %s\n" "$(date "+%a %b %e %Y" -d "${__date}")" "${__author= }" "0.git.${1}-0" + + IFS=3D' +' + for l in $(git log ${__from}..${__to} --pretty=3Dformat:"- %s" -- contrib/f= edora); do + printf "%s%s\n" '-' "${l#*:}" + done + unset IFS + + printf "%s Upstream changes: https://passt.top/passt/log/?qt=3Drange&q=3D%s= ..%s\n\n" '-' "${__from}" "${__to}" +} + +function passt_git_changelog_pairs { + while [ -n "${2}" ]; do + passt_git_changelog_entry "${1}" "${2}" + shift 2 + done + + passt_git_changelog_entry "${1}" "" +} + +function passt_git_changelog { + passt_git_changelog_pairs $((git tag --sort=3D"-v:refname"|tail -n+2; git t= ag --sort=3D"-v:refname") | sort -r) +} --=20 2.35.1 --===============0662929613829169679==--