debian/scripts: add import-upstream-tag
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
parent
eec53b4f3f
commit
a5d0221028
119
debian/scripts/import-upstream-tag
vendored
Executable file
119
debian/scripts/import-upstream-tag
vendored
Executable file
@ -0,0 +1,119 @@
|
|||||||
|
#!/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 || "$#" -gt 4 ]]; then
|
||||||
|
echo "USAGE: $0 submodule patchdir tag [rebase]"
|
||||||
|
echo "\t fetches and checks out 'tag' in 'submodule'"
|
||||||
|
echo "\t if 'rebase' is given, imports, rebases and exports patchqueue from 'patchdir' as well"
|
||||||
|
exit 1
|
||||||
|
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 add "${kernel_patchdir}"
|
||||||
|
git commit --verbose -s -m "rebase patches on top of ${new_tag}" -m "(generated with debian/scripts/import-upstream-tag)" "${kernel_patchdir}"
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user