From: Herton R. Krzesinski <herton(a)redhat.com>
redhat: replace inline awk script with genlog.py call
Upstream Status: RHEL only
Tested: verified changelog created after make rh-release
This wires in the genlog.py script call in genspec.sh, replacing the
previous inline awk script.
Signed-off-by: Herton R. Krzesinski <herton(a)redhat.com>
diff a/redhat/genspec.sh b/redhat/genspec.sh
--- a/redhat/genspec.sh
+++ b/redhat/genspec.sh
@@ -47,124 +47,8 @@ if [[ -z $lasttag ]]; then
fi
fi
echo "Gathering new log entries since $lasttag"
-git format-patch --no-renames -k --stdout ^master "$lasttag".. --
":!/redhat/rhdocs" | awk '
-BEGIN{TYPE="PATCHJUNK"; }
- # add an entry to changelog
- function changelog(subjectline, nameline, zstream)
- {
- subj = substr(subjectline, 10);
- gsub(/%/, "", subj)
- name = substr(nameline, 7);
- pos=match(name, /</);
- name=substr(name,1,pos-2);
- bz=substr(BZ,11);
- zbz=substr(ZBZ,13);
- meta = "";
- if (zstream == "no") {
- if (bz != "") {
- meta = " [" bz "]";
- }
- } else {
- if (zbz != "") {
- if (bz != "") {
- meta = " [" zbz " " bz "]";
- } else {
- meta = " [" zbz "]";
- }
- }
- }
- cve = substr(CVE, 6);
- if (cve != "") {
- if (meta != "") {
- meta = meta " {" cve "}";
- } else {
- meta = " {" cve "}";
- }
- }
-
- print "- " subj " (" name ")" meta >> CLOGF;
- }
-
- #special separator, close previous patch
- /^From / { if (TYPE=="PATCHJUNK") {
- COMMIT=substr($0, 6, 40);
- TYPE="HEADER";
- LASTHDR="NEW";
- next;
- } }
-
- #interesting header stuff
- /^From: / { if (TYPE=="HEADER") {
- namestr=$0;
- #check for mime encoding on the email headers
- #git uses utf-8 q encoding
- if ( $0 ~ /=\?utf-8\?q/ ) {
- #get rid of the meta utf-8 junk
- gsub(/=\?utf-8\?q\?/, "");
- gsub(/\?=/, "");
-
- #translate each char
- n=split($0, a, "=");
- namestr = sprintf("%s", a[1]);
- for (i = 2; i <= n; ++i) {
- utf = substr(a[i], 0, 2);
- c = strtonum("0x" utf);
- namestr = sprintf("%s%c%s", namestr, c, substr(a[i],3));
- }
- }
- NAMELINE=namestr; next;
- }
- }
- /^Date: / {if (TYPE=="HEADER") {DATELINE=$0; next; } }
- /^Subject: / { if (TYPE=="HEADER") {SUBJECTLINE=$0; LASTHDR="SUBJ";
next; } }
- # partially attempt to deal with RFC2822 continuation lines in headers
- /^\s/ { if (TYPE=="HEADER") { if (LASTHDR=="SUBJ") {
SUBJECTLINE=(SUBJECTLINE $0); } next; } }
- /^Bugzilla: / { if (TYPE=="META") {BZ=$0; } }
- /^Z-Bugzilla: / { if (TYPE=="META") {ZBZ=$0; } }
- /^CVE: / { if (TYPE=="META") {CVE=$0; } }
-
- #blank line triggers end of header and to begin processing
- /^$/ {
- if (TYPE=="META") {
- #create the dynamic changelog entry
- changelog(SUBJECTLINE, NAMELINE, ZSTREAM);
- #reset cve values because they do not always exist
- CVE="";
- BZ="";
- ZBZ="";
- TYPE="BODY";
- }
- if (TYPE=="HEADER") {
- TYPE="META"; next;
- }
- }
-
- #in order to handle overlapping keywords, we keep track of each
- #section of the patchfile and only process keywords in the correct section
- /^---$/ {
- if (TYPE=="META") {
- # no meta data found, just use the subject line to fill
- # the changelog
- changelog(SUBJECTLINE, NAMELINE, ZSTREAM);
- #reset cve values because they do not always exist
- CVE="";
- BZ="";
- ZBZ="";
- TYPE="BODY";
- }
- if (TYPE=="BODY") {
- TYPE="PATCHSEP";
- }
- }
- /^diff --git/ { if (TYPE=="PATCHSEP") { TYPE="PATCH"; } }
- /^-- $/ { if (TYPE=="PATCH") { TYPE="PATCHJUNK"; } }
-
- #filter out stuff we do not care about
- { if (TYPE == "PATCHSEP") { next; } }
- { if (TYPE == "PATCHJUNK") { next; } }
- { if (TYPE == "HEADER") { next; } }
-
-' SOURCES="$SOURCES" SPECFILE="$SPECFILE"
CLOGF="$clogf" ZSTREAM="$ZSTREAM_FLAG"
+git log --topo-order --reverse --no-merges -z --format="- %s (%an)%n%b" \
+ ^master "$lasttag".. -- ':!/redhat/rhdocs' | ${0%/*}/genlog.py
>> "$clogf"
grep -v "tagging $RPM_VERSION" "$clogf" >
"$clogf.stripped"
cp "$clogf.stripped" "$clogf"
--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/865