From: Herton R. Krzesinski <herton(a)redhat.com>
redhat: split changelog generation from genspec.sh
This creates a new genlog.sh script to split out the changelog
generation code from genspec.sh. The splitted code is kept
as is.
Signed-off-by: Herton R. Krzesinski <herton(a)redhat.com>
diff --git a/redhat/genlog.sh b/redhat/genlog.sh
new file mode 100755
index blahblah..blahblah 100755
--- /dev/null
+++ b/redhat/genlog.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+LAST_MARKER=$(cat "${REDHAT}"/marker)
+clogf="$SOURCES/changelog"
+# hide [redhat] entries from changelog
+HIDE_REDHAT=1;
+# hide entries for unsupported arches
+HIDE_UNSUPPORTED_ARCH=1;
+# override LC_TIME to avoid date conflicts when building the srpm
+LC_TIME=
+
+GIT_FORMAT="--format=- %s (%an)%n%N%n^^^NOTES-END^^^%n%b"
+GIT_NOTES="--notes=refs/notes/${RHEL_MAJOR}.${RHEL_MINOR}*"
+
+lasttag=$(git rev-list --first-parent --grep="^\[redhat\]
kernel-${SPECKVERSION}.${SPECKPATCHLEVEL}" --max-count=1 HEAD)
+# if we didn't find the proper tag, assume this is the first release
+if [[ -z $lasttag ]]; then
+ if [[ -z ${MARKER//[0-9a-f]/} ]]; then
+ # if we're doing an untagged release, just use the marker
+ echo "Using $MARKER"
+ lasttag=$MARKER
+ else
+ lasttag=$(git describe --match="$MARKER" --abbrev=0)
+ fi
+fi
+echo "Gathering new log entries since $lasttag"
+# master is expected to track mainline.
+
+cname="$(git var GIT_COMMITTER_IDENT |sed 's/>.*/>/')"
+cdate="$(LC_ALL=C date +"%a %b %d %Y")"
+cversion="[$BASEVERSION]";
+echo "* $cdate $cname $cversion" > "$clogf"
+
+git log --topo-order --no-merges -z "$GIT_NOTES" "$GIT_FORMAT" \
+ ^"${UPSTREAM}" "$lasttag".. -- ':!/redhat/rhdocs' |
"${0%/*}"/genlog.py >> "$clogf"
+
+if [ "$HIDE_REDHAT" = "1" ]; then
+ grep -v -e "^- \[redhat\]" "$clogf" |
+ sed -e 's!\[Fedora\]!!g' > "$clogf.stripped"
+ cp "$clogf.stripped" "$clogf"
+fi
+
+if [ "$HIDE_UNSUPPORTED_ARCH" = "1" ]; then
+ grep -E -v "^-
\[(alpha|arc|arm|avr32|blackfin|c6x|cris|frv|h8300|hexagon|ia64|m32r|m68k|metag|microblaze|mips|mn10300|openrisc|parisc|score|sh|sparc|tile|um|unicore32|xtensa)\]"
"$clogf" > "$clogf.stripped"
+ cp "$clogf.stripped" "$clogf"
+fi
+
+# If the markers aren't the same then this a rebase.
+# This means we need to zap entries that are already present in the changelog.
+if [ "$MARKER" != "$LAST_MARKER" ]; then
+ # awk trick to get all unique lines
+ awk '!seen[$0]++' "$SOURCES/$SPECCHANGELOG" "$clogf" >
"$clogf.unique"
+ # sed trick to get the end of the changelog minus the line
+ sed -e '1,/# END OF CHANGELOG/ d' "$clogf.unique" >
"$clogf.tmp"
+ # Add an explicit entry to indicate a rebase.
+ echo "" > "$clogf"
+ echo -e "- $MARKER rebase" | cat "$clogf.tmp" - >>
"$clogf"
+ rm "$clogf.tmp" "$clogf.unique"
+fi
+
+# HACK temporary hack until single tree workflow
+# Don't reprint all the ark-patches again.
+if [ -n "$(git log --oneline --first-parent --grep="Merge ark patches"
"$lasttag"..)" ]; then
+ # Throw away the clogf and just print the summary merge
+ echo "" > "$clogf"
+ echo "- Merge ark-patches" >> "$clogf"
+fi
+
+# during rh-dist-git genspec runs again and generates empty changelog
+# create empty file to avoid adding extra header to changelog
+LENGTH=$(grep -c "^-" "$clogf" | awk '{print $1}')
+if [ "$LENGTH" = 0 ]; then
+ rm -f "$clogf"
+ touch "$clogf"
+fi
+
+cat "$clogf" "$SOURCES/$SPECCHANGELOG" > "$clogf.full"
+mv -f "$clogf.full" "$SOURCES/$SPECCHANGELOG"
+
+# genlog.py generates Resolves lines as well, strip these from RPM changelog
+grep -v -e "^Resolves: " "$SOURCES/$SPECCHANGELOG" >
"$clogf".stripped
+
+test -f "$SOURCES/$SPECFILE" &&
+ sed -i -e "
+ /%%SPECCHANGELOG%%/r $clogf.stripped
+ /%%SPECCHANGELOG%%/d" "$SOURCES/$SPECFILE"
+
+echo "MARKER is $MARKER"
+
+rm -f "$clogf"{,.stripped};
diff --git a/redhat/genspec.sh b/redhat/genspec.sh
index blahblah..blahblah 100755
--- a/redhat/genspec.sh
+++ b/redhat/genspec.sh
@@ -1,16 +1,6 @@
#!/bin/bash
# shellcheck disable=SC2153
-LAST_MARKER=$(cat "${REDHAT}"/marker)
-clogf="$SOURCES/changelog"
-# hide [redhat] entries from changelog
-HIDE_REDHAT=1;
-# hide entries for unsupported arches
-HIDE_UNSUPPORTED_ARCH=1;
-# override LC_TIME to avoid date conflicts when building the srpm
-LC_TIME=
-# STAMP=$(echo $MARKER | cut -f 1 -d '-' | sed -e "s/v//"); # unused
-
UPSTREAM=$(git rev-parse -q --verify origin/"${UPSTREAM_BRANCH}" || \
git rev-parse -q --verify "${UPSTREAM_BRANCH}")
@@ -97,83 +87,7 @@ if [ -n "$RHSELFTESTDATA" ]; then
exit 0
fi
-GIT_FORMAT="--format=- %s (%an)%n%N%n^^^NOTES-END^^^%n%b"
-GIT_NOTES="--notes=refs/notes/${RHEL_MAJOR}.${RHEL_MINOR}*"
-
-lasttag=$(git rev-list --first-parent --grep="^\[redhat\]
kernel-${SPECKVERSION}.${SPECKPATCHLEVEL}" --max-count=1 HEAD)
-# if we didn't find the proper tag, assume this is the first release
-if [[ -z $lasttag ]]; then
- if [[ -z ${MARKER//[0-9a-f]/} ]]; then
- # if we're doing an untagged release, just use the marker
- echo "Using $MARKER"
- lasttag=$MARKER
- else
- lasttag=$(git describe --match="$MARKER" --abbrev=0)
- fi
-fi
-echo "Gathering new log entries since $lasttag"
-# master is expected to track mainline.
-
-cname="$(git var GIT_COMMITTER_IDENT |sed 's/>.*/>/')"
-cdate="$(LC_ALL=C date +"%a %b %d %Y")"
-cversion="[$BASEVERSION]";
-echo "* $cdate $cname $cversion" > "$clogf"
-
-git log --topo-order --no-merges -z "$GIT_NOTES" "$GIT_FORMAT" \
- ^"${UPSTREAM}" "$lasttag".. -- ':!/redhat/rhdocs' |
"${0%/*}"/genlog.py >> "$clogf"
-
-if [ "$HIDE_REDHAT" = "1" ]; then
- grep -v -e "^- \[redhat\]" "$clogf" |
- sed -e 's!\[Fedora\]!!g' > "$clogf.stripped"
- cp "$clogf.stripped" "$clogf"
-fi
-
-if [ "$HIDE_UNSUPPORTED_ARCH" = "1" ]; then
- grep -E -v "^-
\[(alpha|arc|arm|avr32|blackfin|c6x|cris|frv|h8300|hexagon|ia64|m32r|m68k|metag|microblaze|mips|mn10300|openrisc|parisc|score|sh|sparc|tile|um|unicore32|xtensa)\]"
"$clogf" > "$clogf.stripped"
- cp "$clogf.stripped" "$clogf"
-fi
-
-# If the markers aren't the same then this a rebase.
-# This means we need to zap entries that are already present in the changelog.
-if [ "$MARKER" != "$LAST_MARKER" ]; then
- # awk trick to get all unique lines
- awk '!seen[$0]++' "$SOURCES/$SPECCHANGELOG" "$clogf" >
"$clogf.unique"
- # sed trick to get the end of the changelog minus the line
- sed -e '1,/# END OF CHANGELOG/ d' "$clogf.unique" >
"$clogf.tmp"
- # Add an explicit entry to indicate a rebase.
- echo "" > "$clogf"
- echo -e "- $MARKER rebase" | cat "$clogf.tmp" - >>
"$clogf"
- rm "$clogf.tmp" "$clogf.unique"
-fi
-
-# HACK temporary hack until single tree workflow
-# Don't reprint all the ark-patches again.
-if [ -n "$(git log --oneline --first-parent --grep="Merge ark patches"
"$lasttag"..)" ]; then
- # Throw away the clogf and just print the summary merge
- echo "" > "$clogf"
- echo "- Merge ark-patches" >> "$clogf"
-fi
-
-# during rh-dist-git genspec runs again and generates empty changelog
-# create empty file to avoid adding extra header to changelog
-LENGTH=$(grep -c "^-" "$clogf" | awk '{print $1}')
-if [ "$LENGTH" = 0 ]; then
- rm -f "$clogf"
- touch "$clogf"
-fi
-
-cat "$clogf" "$SOURCES/$SPECCHANGELOG" > "$clogf.full"
-mv -f "$clogf.full" "$SOURCES/$SPECCHANGELOG"
-
-# genlog.py generates Resolves lines as well, strip these from RPM changelog
-grep -v -e "^Resolves: " "$SOURCES/$SPECCHANGELOG" >
"$clogf".stripped
-
-test -f "$SOURCES/$SPECFILE" &&
- sed -i -e "
- /%%SPECCHANGELOG%%/r $clogf.stripped
- /%%SPECCHANGELOG%%/d" "$SOURCES/$SPECFILE"
-
-echo "MARKER is $MARKER"
+"${0%/*}"/genlog.sh
if [ "$DISTRO" == "fedora" ]; then
# The tarball in the SRPM contains only the upstream sources.
@@ -188,5 +102,3 @@ else
# compatibility is necessary.
touch "${SOURCES}/patch-${SPECKVERSION}.${SPECKPATCHLEVEL}"-redhat.patch
fi
-
-rm -f "$clogf"{,.stripped};
--
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1980