[pve-devel] [RFC kernel 2/2] debian/scripts: add import-upstream-tag
Fabian Grünbichler
f.gruenbichler at proxmox.com
Wed Apr 4 13:39:47 CEST 2018
On Wed, Apr 04, 2018 at 11:31:44AM +0200, Thomas Lamprecht wrote:
> 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.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
>
> 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:
I think we need to do "git rm" and "git add" explicitly, because
"git commit [...] files" only commits tracked files.. will do some more
testing and send a v2 with this and the other feedback.
thanks for catching it!
>
> root at 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 at 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")
>
More information about the pve-devel
mailing list