[pve-devel] [RFC kernel 2/2] debian/scripts: add import-upstream-tag
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Apr 3 13:30:38 CEST 2018
$ import-upstream-tag path/to/kernel/submodule path/to/kernel/patches tag [rebase]
fetches 'tag' from default remote, optionally imports, rebases and exports
patchqueue, checks out 'tag' and commits the resulting changes.
Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
debian/scripts/import-upstream-tag | 115 +++++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
create mode 100755 debian/scripts/import-upstream-tag
diff --git a/debian/scripts/import-upstream-tag b/debian/scripts/import-upstream-tag
new file mode 100755
index 0000000..59daa5b
--- /dev/null
+++ b/debian/scripts/import-upstream-tag
@@ -0,0 +1,115 @@
+#!/bin/bash
+
+set -e
+
+top=$(pwd)
+
+# parameters
+kernel_submodule=
+kernel_patchdir=
+new_tag=
+rebase=
+
+# generated based on new_tag
+pq_branch=
+# previously checked out in submodule
+old_ref=
+
+function cleanup_pq_branch {
+ if [[ -n $pq_branch ]]; then
+ echo "cleaning up PQ branch '$pq_branch'"
+ cd "${top}/${kernel_submodule}"
+ git checkout --quiet $old_ref
+ git reset --hard
+ git branch -D "$pq_branch"
+ fi
+}
+
+function error_exit {
+ echo "$1"
+ set +e
+
+ cleanup_pq_branch
+
+ cd "${top}"
+
+ exit 1
+}
+
+if [ "$#" -lt 3 ]; then
+ error_exit "at least three parameters required."
+fi
+
+kernel_submodule=$1
+if [ ! -d "${kernel_submodule}" ]; then
+ error_exit "'${kernel_submodule}' must be a directory!"
+fi
+
+kernel_patchdir=$2
+if [ ! -d "${kernel_patchdir}" ]; then
+ error_exit "'${kernel_patchdir}' must be a directory!"
+fi
+
+new_tag=$3
+rebase=$4
+
+if [[ -n $(git status --untracked-files=no --porcelain) ]]; then
+ error_exit "working directory unclean, aborting"
+fi
+
+
+cd "${kernel_submodule}"
+## check for tag and fetch if needed
+echo "checking for tag '${new_tag}'"
+if [[ -z $(git tag -l "${new_tag}") ]]; then
+ echo "tag not found, fetching and retrying"
+ git fetch --tags
+fi
+if [[ -z $(git tag -l "${new_tag}") ]]; then
+ error_exit "tag not found, aborting"
+fi
+echo "tag found"
+cd "${top}"
+
+if [[ -n "$rebase" ]]; then
+ echo ""
+ echo "automatic patchqueue rebase enabled"
+ cd "${kernel_submodule}"
+ ## preparing patch queue branch
+ old_ref=$(git rev-parse HEAD)
+ pq_branch="auto_pq/${new_tag}"
+ cd "${top}"
+
+ echo "previous HEAD: ${old_ref}"
+
+ echo ""
+ "${top}/debian/scripts/import-patchqueue" "${kernel_submodule}" "${kernel_patchdir}" "${pq_branch}" || error_exit "failed to import patchqueue"
+
+ cd "${kernel_submodule}"
+ ## rebase patches
+ echo ""
+ echo "rebasing patchqueue on top of '${new_tag}'"
+ git rebase "${new_tag}"
+ cd "${top}"
+
+ ## regenerate exported patch queue
+ echo ""
+ "${top}/debian/scripts/export-patchqueue" "${kernel_submodule}" "${kernel_patchdir}" "${new_tag}" || error_exit "failed to export patchqueue"
+
+ cleanup_pq_branch
+ cd "${top}"
+ pq_branch=
+fi
+
+cd "${kernel_submodule}"
+echo ""
+echo "checking out '${new_tag}' in submodule"
+git checkout --quiet "${new_tag}"
+cd "${top}"
+
+echo ""
+echo "committing results"
+git commit --verbose -s -m "update sources to ${new_tag}" -m "(generated with debian/scripts/import-upstream-tag)" "${kernel_submodule}"
+if [[ -n "$rebase" ]]; then
+ git commit --verbose -s -m "rebase patches on top of ${new_tag}" -m "(generated with debian/scripts/import-upstream-tag)" "${kernel_patchdir}"
+fi
--
2.14.2
More information about the pve-devel
mailing list