Am 04/03/2018 um 01:30 PM schrieb Fabian Grünbichler:
$ 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.gruenbich...@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
This is a bit weird, while there may have been changes nothing got added
to the staging area,
so no commit gets produced. e.g., see following run:
root@dev5 sources/pve/pve-kernel±# debian/scripts/import-upstream-tag
submodules/ubuntu-artful patches/kernel Ubuntu-4.13.0-38.43 yes
checking for tag 'Ubuntu-4.13.0-38.43'
tag found
automatic patchqueue rebase enabled
previous HEAD: 23155b1c4c2fb5eececde1750aa9ba44a5da614b
creating patchqeueue branch 'auto_pq/Ubuntu-4.13.0-38.43'
Switched to a new branch 'auto_pq/Ubuntu-4.13.0-38.43'
importing patches from 'patches/kernel'
Applying: Make mkcompile_h accept an alternate timestamp string
Applying: bridge: keep MAC of first assigned port
Applying: pci: Enable overrides for missing ACS capabilities (4.12+)
Applying: kvm: disable default dynamic halt polling growth
Applying: cgroup: Add mount flag to enable cpuset to use v2 behavior in
v1 cgroup
Applying: cpuset: Allow v2 behavior in v1 cgroup
Applying: IB/core: Avoid crash on pkey enforcement failed in received MADs
Applying: IB/core: Don't enforce PKey security on SMI MADs
Applying: KVM: SVM: obey guest PAT
Applying: net: sched: em_nbyte: don't add the data offset twice
Applying: net: sched: fix TCF_LAYER_LINK case in tcf_get_base_ptr
Applying: KVM: x86: Add memory barrier on vmcs field lookup
Applying: EDAC, sb_edac: Fix missing break in switch
Applying: sched/wait: Fix add_wait_queue() behavioral change
Applying: module/retpoline: Warn about missing retpoline in module
Applying: net: tcp: close sock if net namespace is exiting
Applying: sctp: fix dst refcnt leak in sctp_v4_get_dst
Applying: sctp: fix dst refcnt leak in sctp_v6_get_dst()
Applying: lockd: lost rollback of set_grace_period() in lockd_down_net()
Applying: ocfs2: make metadata estimation accurate and clear
Applying: ocfs2: try to reuse extent block in dealloc without meta_alloc
Applying: mm/shmem: do not wait for lock_page() in
shmem_unused_huge_shrink()
Applying: mm/thp: Do not wait for lock_page() in deferred_split_scan()
rebasing patchqueue on top of 'Ubuntu-4.13.0-38.43'
Current branch auto_pq/Ubuntu-4.13.0-38.43 is up to date.
clearing old exported patchqueue
exporting patchqueue using 'git format-patch [...] Ubuntu-4.13.0-38.43..
cleaning up PQ branch 'auto_pq/Ubuntu-4.13.0-38.43'
HEAD is now at 23155b1c4c2f UBUNTU: Ubuntu-4.13.0-38.43
Deleted branch auto_pq/Ubuntu-4.13.0-38.43 (was 3369573a9da2).
checking out 'Ubuntu-4.13.0-38.43' in submodule
committing results
On branch rev_fabian_git-scripts
Changes not staged for commit:
modified:
patches/kernel/0015-module-retpoline-Warn-about-missing-retpoline-in-mod.patch
modified:
patches/kernel/0021-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch
deleted:
patches/kernel/0022-mm-thp-Do-not-wait-for-lock_page-in-deferred_split_s.patch
Untracked files:
buildlog
buildlog-4.15
config-4.13.13.org
linux-tools-4.13-dbgsym_4.13.16-43_amd64.deb
linux-tools-4.13_4.13.16-43_amd64.deb
linux-tools-4.15-dbgsym_4.15.10-2_amd64.deb
linux-tools-4.15_4.15.10-2_amd64.deb
patches/kernel/0023-mm-thp-Do-not-wait-for-lock_page-in-deferred_split_s.patch
pve-headers-4.13.16-1-pve-dbgsym_4.13.16-43_amd64.deb
pve-headers-4.13.16-1-pve_4.13.16-43_amd64.deb
pve-headers-4.15.10-1-pve-dbgsym_4.15.10-2_amd64.deb
pve-headers-4.15.10-1-pve_4.15.10-2_amd64.deb
pve-headers/
pve-kernel-4.13.16-1-pve_4.13.16-43_amd64.deb
pve-kernel-4.15.10-1-pve_4.15.10-2_amd64.deb
pve-kernel_4.13.16-43_amd64.buildinfo
pve-kernel_4.13.16-43_amd64.changes
pve-kernel_4.15.10-2_amd64.buildinfo
pve-kernel_4.15.10-2_amd64.changes
submodules/spl-module/
submodules/ubuntu-bionic/
submodules/zfs-module/
no changes added to commit
root@dev5 sources/pve/pve-kernel±# git st
On branch rev_fabian_git-scripts
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified:
patches/kernel/0015-module-retpoline-Warn-about-missing-retpoline-in-mod.patch
modified:
patches/kernel/0021-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch
deleted:
patches/kernel/0022-mm-thp-Do-not-wait-for-lock_page-in-deferred_split_s.patch
no changes added to commit (use "git add" and/or "git commit -a")
_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel