diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2022-08-18 19:48:09 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-08-20 19:07:12 +0200 |
commit | 41b5ff0a1428ce62cb2136d0c19fe4183a94a15f (patch) | |
tree | d234e61d4687edaa2c174669065a60d1f9ead843 | |
parent | d0c3f8fa9b5d08439017fe649ac05603a7124a24 (diff) | |
download | passt-41b5ff0a1428ce62cb2136d0c19fe4183a94a15f.tar passt-41b5ff0a1428ce62cb2136d0c19fe4183a94a15f.tar.gz passt-41b5ff0a1428ce62cb2136d0c19fe4183a94a15f.tar.bz2 passt-41b5ff0a1428ce62cb2136d0c19fe4183a94a15f.tar.lz passt-41b5ff0a1428ce62cb2136d0c19fe4183a94a15f.tar.xz passt-41b5ff0a1428ce62cb2136d0c19fe4183a94a15f.tar.zst passt-41b5ff0a1428ce62cb2136d0c19fe4183a94a15f.zip |
fedora: Introduce own rpkg macro for changelog
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 <benson_muite@emailplus.org>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r-- | contrib/fedora/passt.spec | 2 | ||||
-rw-r--r-- | contrib/fedora/rpkg.macros | 34 |
2 files changed, 35 insertions, 1 deletions
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 %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="${2}" + __to="${1}" + + [ -z "${__from}" ] && __from="$(git rev-list --max-parents=0 HEAD)" + + __date="$(git log --pretty="format:%cI" "${__to}" -1)" + __author="$(git log -1 --pretty="format:%an <%ae>" ${__to} -- contrib/fedora)" + + printf "* %s %s - %s\n" "$(date "+%a %b %e %Y" -d "${__date}")" "${__author}" "0.git.${1}-0" + + IFS=' +' + for l in $(git log ${__from}..${__to} --pretty=format:"- %s" -- contrib/fedora); do + printf "%s%s\n" '-' "${l#*:}" + done + unset IFS + + printf "%s Upstream changes: https://passt.top/passt/log/?qt=range&q=%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="-v:refname"|tail -n+2; git tag --sort="-v:refname") | sort -r) +} |