From: Ondrej Mosnacek <omosnace(a)redhat.com>
When generating the patches under $SINGLE_TARBALL == 0, cherry-pick each
commit on top of $MARKER before generating the patch from it. This
partly solves the problem of patches generated from old commits not
applying on the current tree any more.
To avoid polluting the current working copy, this is done in a temporary
worktree inside a temporary directory, which is automatically deleted
when the script exits.
Signed-off-by: Ondrej Mosnacek <omosnace(a)redhat.com>
---
redhat/genspec.sh | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/redhat/genspec.sh b/redhat/genspec.sh
index b72dffe14729..0996ddf44812 100755
--- a/redhat/genspec.sh
+++ b/redhat/genspec.sh
@@ -23,7 +23,6 @@ TARFILE_RELEASE=${16}
SNAPSHOT=${17}
BUILDID=${18}
RPMVERSION=${KVERSION}.${KPATCHLEVEL}.${KSUBLEVEL}
-clogf="$SOURCES/changelog"
# hide [redhat] entries from changelog
HIDE_REDHAT=1;
# hide entries for unsupported arches
@@ -36,6 +35,20 @@ LC_TIME=
STAMP=$(echo $MARKER | cut -f 1 -d '-' | sed -e "s/v//");
RPM_VERSION="$RPMVERSION-$PKGRELEASE";
+function cleanup() {
+ set +ex
+ [ -n "$tmpwt" ] && git worktree remove -f "$tmpwt"
+ [ -n "$tmpdir" ] && rm -rf "$tmpdir"
+ return 0
+}
+
+trap cleanup EXIT
+
+tmpdir="$(mktemp -d)"
+clogf="$tmpdir/changelog"
+
+trap 'rm -rf $tmpdir' EXIT
+
echo >$clogf
lasttag=$(git rev-list --first-parent --grep="^\[redhat\] kernel-${RPMVERSION}"
--max-count=1 HEAD)
@@ -255,7 +268,12 @@ if [ "$SINGLE_TARBALL" = 0 ]; then
":(exclude,top)makefile" \
":(exclude,top)Makefile.rhelver" \
":(exclude,top)redhat")
- for c in $COMMITS; do
+ git worktree add --detach "$tmpdir/work" "$MARKER"
+ tmpwt="$tmpdir/work"
+ for origc in $COMMITS; do
+ git -C "$tmpwt" cherry-pick --allow-empty --keep-redundant-commits \
+ "$origc" || exit 1
+ commit="$(git -C "$tmpwt" rev-parse --verify HEAD)"
patch=$(git format-patch --zero-commit -1 "$c")
echo "$patch" >> $plistf
mv $patch $SOURCES/
@@ -274,5 +292,3 @@ for opt in $BUILDOPTS; do
[ -z "${opt##-*}" ] && add_opt="_without_${opt#?}"
[ -n "$add_opt" ] && sed -i "s/^\\(# The following build
options\\)/%define $add_opt 1\\n\\1/" $SPECFILE
done
-
-rm -f $clogf{,.rev,.stripped};
--
GitLab
Show replies by thread
From: Ondrej Mosnacek <omosnace(a)redhat.com>
When generating the patches under $SINGLE_TARBALL == 0, cherry-pick each
commit on top of $MARKER before generating the patch from it. This
partly solves the problem of patches generated from old commits not
applying on the current tree any more.
To avoid polluting the current working copy, this is done in a temporary
worktree inside a temporary directory, which is automatically deleted
when the script exits.
Signed-off-by: Ondrej Mosnacek <omosnace(a)redhat.com>
---
redhat/genspec.sh | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/redhat/genspec.sh b/redhat/genspec.sh
index b72dffe14729..c8f3b5fec698 100755
--- a/redhat/genspec.sh
+++ b/redhat/genspec.sh
@@ -23,7 +23,6 @@ TARFILE_RELEASE=${16}
SNAPSHOT=${17}
BUILDID=${18}
RPMVERSION=${KVERSION}.${KPATCHLEVEL}.${KSUBLEVEL}
-clogf="$SOURCES/changelog"
# hide [redhat] entries from changelog
HIDE_REDHAT=1;
# hide entries for unsupported arches
@@ -36,6 +35,20 @@ LC_TIME=
STAMP=$(echo $MARKER | cut -f 1 -d '-' | sed -e "s/v//");
RPM_VERSION="$RPMVERSION-$PKGRELEASE";
+function cleanup() {
+ set +ex
+ [ -n "$tmpwt" ] && git worktree remove -f "$tmpwt"
+ [ -n "$tmpdir" ] && rm -rf "$tmpdir"
+ return 0
+}
+
+trap cleanup EXIT
+
+tmpdir="$(mktemp -d)"
+clogf="$tmpdir/changelog"
+
+trap 'rm -rf $tmpdir' EXIT
+
echo >$clogf
lasttag=$(git rev-list --first-parent --grep="^\[redhat\] kernel-${RPMVERSION}"
--max-count=1 HEAD)
@@ -255,7 +268,12 @@ if [ "$SINGLE_TARBALL" = 0 ]; then
":(exclude,top)makefile" \
":(exclude,top)Makefile.rhelver" \
":(exclude,top)redhat")
- for c in $COMMITS; do
+ git worktree add --detach "$tmpdir/work" "$MARKER"
+ tmpwt="$tmpdir/work"
+ for origc in $COMMITS; do
+ git -C "$tmpwt" cherry-pick --allow-empty --keep-redundant-commits \
+ "$origc" || exit 1
+ c="$(git -C "$tmpwt" rev-parse --verify HEAD)"
patch=$(git format-patch --zero-commit -1 "$c")
echo "$patch" >> $plistf
mv $patch $SOURCES/
@@ -274,5 +292,3 @@ for opt in $BUILDOPTS; do
[ -z "${opt##-*}" ] && add_opt="_without_${opt#?}"
[ -n "$add_opt" ] && sed -i "s/^\\(# The following build
options\\)/%define $add_opt 1\\n\\1/" $SPECFILE
done
-
-rm -f $clogf{,.rev,.stripped};
--
GitLab
From: Ondrej Mosnacek <omosnace(a)redhat.com>
When generating the patches under $SINGLE_TARBALL == 0, cherry-pick each
commit on top of $MARKER before generating the patch from it. This
partly solves the problem of patches generated from old commits not
applying on the current tree any more.
To avoid polluting the current working copy, this is done in a temporary
worktree inside a temporary directory, which is automatically deleted
when the script exits.
Signed-off-by: Ondrej Mosnacek <omosnace(a)redhat.com>
---
redhat/genspec.sh | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/redhat/genspec.sh b/redhat/genspec.sh
index b72dffe14729..7ae150cc3de0 100755
--- a/redhat/genspec.sh
+++ b/redhat/genspec.sh
@@ -23,7 +23,6 @@ TARFILE_RELEASE=${16}
SNAPSHOT=${17}
BUILDID=${18}
RPMVERSION=${KVERSION}.${KPATCHLEVEL}.${KSUBLEVEL}
-clogf="$SOURCES/changelog"
# hide [redhat] entries from changelog
HIDE_REDHAT=1;
# hide entries for unsupported arches
@@ -36,6 +35,18 @@ LC_TIME=
STAMP=$(echo $MARKER | cut -f 1 -d '-' | sed -e "s/v//");
RPM_VERSION="$RPMVERSION-$PKGRELEASE";
+function cleanup() {
+ set +ex
+ [ -n "$tmpwt" ] && git worktree remove -f "$tmpwt"
+ [ -n "$tmpdir" ] && rm -rf "$tmpdir"
+ return 0
+}
+
+trap cleanup EXIT
+
+tmpdir="$(mktemp -d)"
+clogf="$tmpdir/changelog"
+
echo >$clogf
lasttag=$(git rev-list --first-parent --grep="^\[redhat\] kernel-${RPMVERSION}"
--max-count=1 HEAD)
@@ -255,7 +266,12 @@ if [ "$SINGLE_TARBALL" = 0 ]; then
":(exclude,top)makefile" \
":(exclude,top)Makefile.rhelver" \
":(exclude,top)redhat")
- for c in $COMMITS; do
+ git worktree add --detach "$tmpdir/work" "$MARKER"
+ tmpwt="$tmpdir/work"
+ for origc in $COMMITS; do
+ git -C "$tmpwt" cherry-pick --allow-empty --keep-redundant-commits \
+ "$origc" || exit 1
+ c="$(git -C "$tmpwt" rev-parse --verify HEAD)"
patch=$(git format-patch --zero-commit -1 "$c")
echo "$patch" >> $plistf
mv $patch $SOURCES/
@@ -274,5 +290,3 @@ for opt in $BUILDOPTS; do
[ -z "${opt##-*}" ] && add_opt="_without_${opt#?}"
[ -n "$add_opt" ] && sed -i "s/^\\(# The following build
options\\)/%define $add_opt 1\\n\\1/" $SPECFILE
done
-
-rm -f $clogf{,.rev,.stripped};
--
GitLab
From: Ondrej Mosnacek <omosnace(a)redhat.com>
When generating the patches under $SINGLE_TARBALL == 0, cherry-pick each
commit on top of $MARKER before generating the patch from it. This
partly solves the problem of patches generated from old commits not
applying on the current tree any more.
To avoid polluting the current working copy, this is done in a temporary
worktree inside a temporary directory, which is automatically deleted
when the script exits.
Signed-off-by: Ondrej Mosnacek <omosnace(a)redhat.com>
---
redhat/genspec.sh | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/redhat/genspec.sh b/redhat/genspec.sh
index b72dffe14729..a2c4257bfeda 100755
--- a/redhat/genspec.sh
+++ b/redhat/genspec.sh
@@ -23,7 +23,6 @@ TARFILE_RELEASE=${16}
SNAPSHOT=${17}
BUILDID=${18}
RPMVERSION=${KVERSION}.${KPATCHLEVEL}.${KSUBLEVEL}
-clogf="$SOURCES/changelog"
# hide [redhat] entries from changelog
HIDE_REDHAT=1;
# hide entries for unsupported arches
@@ -36,6 +35,17 @@ LC_TIME=
STAMP=$(echo $MARKER | cut -f 1 -d '-' | sed -e "s/v//");
RPM_VERSION="$RPMVERSION-$PKGRELEASE";
+function cleanup() {
+ [ -n "$tmpwt" ] && git worktree remove -f "$tmpwt"
+ [ -n "$tmpdir" ] && rm -rf "$tmpdir"
+ return 0
+}
+
+trap cleanup EXIT
+
+tmpdir="$(mktemp -d)"
+clogf="$tmpdir/changelog"
+
echo >$clogf
lasttag=$(git rev-list --first-parent --grep="^\[redhat\] kernel-${RPMVERSION}"
--max-count=1 HEAD)
@@ -255,7 +265,12 @@ if [ "$SINGLE_TARBALL" = 0 ]; then
":(exclude,top)makefile" \
":(exclude,top)Makefile.rhelver" \
":(exclude,top)redhat")
- for c in $COMMITS; do
+ git worktree add --detach "$tmpdir/work" "$MARKER"
+ tmpwt="$tmpdir/work"
+ for origc in $COMMITS; do
+ git -C "$tmpwt" cherry-pick --allow-empty --keep-redundant-commits \
+ "$origc" || exit 1
+ c="$(git -C "$tmpwt" rev-parse --verify HEAD)"
patch=$(git format-patch --zero-commit -1 "$c")
echo "$patch" >> $plistf
mv $patch $SOURCES/
@@ -274,5 +289,3 @@ for opt in $BUILDOPTS; do
[ -z "${opt##-*}" ] && add_opt="_without_${opt#?}"
[ -n "$add_opt" ] && sed -i "s/^\\(# The following build
options\\)/%define $add_opt 1\\n\\1/" $SPECFILE
done
-
-rm -f $clogf{,.rev,.stripped};
--
GitLab