| |
@@ -22,20 +22,21 @@
|
| |
kernelrebasesh="$(basename "$0")"
|
| |
|
| |
usage() {
|
| |
- echo >&2 "usage: $kernelrebasesh --kernel-srcdir=DIR [--only-stage=STAGE] [--release-build] [--debug]"
|
| |
- echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work --only-stage=prep --debug"
|
| |
- echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work --only-stage=prep"
|
| |
- echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work --release-build"
|
| |
- echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work"
|
| |
+ echo >&2 "usage: $kernelrebasesh --kernel-srcdir=DIR --kernel-pkgdir=DIR [--only-stage=STAGE] [--release-build] [--debug]"
|
| |
+ echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work --kernel-pkgdir=/var/tmp/pkgwork --only-stage=prep --debug"
|
| |
+ echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work --kernel-pkgdir=/var/tmp/pkgwork --only-stage=prep"
|
| |
+ echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work --kernel-pkgdir=/var/tmp/pkgwork --release-build"
|
| |
+ echo >&2 " eg: $kernelrebasesh --kernel-srcdir=/var/tmp/work --kernel-pkgdir=/var/tmp/pkgwork"
|
| |
exit 255
|
| |
}
|
| |
|
| |
- optTemp=$(getopt --options '+k:,s:,r,d,h' --longoptions 'kernel-srcdir:,only-stage:,release-build,debug,help' --name "$kernelrebasesh" -- "$@")
|
| |
+ optTemp=$(getopt --options '+k:,p:,s:,r,d,h' --longoptions 'kernel-srcdir:,kernel-pkgdir:,only-stage:,release-build,debug,help' --name "$kernelrebasesh" -- "$@")
|
| |
eval set -- "$optTemp"
|
| |
unset optTemp
|
| |
|
| |
current_dir="$PWD"
|
| |
kernel_srcdir=
|
| |
+ kernel_pkgdir=
|
| |
only_stage="all"
|
| |
release_build=
|
| |
debug=
|
| |
@@ -43,6 +44,7 @@
|
| |
while true; do
|
| |
case "$1" in
|
| |
-k|--kernel-srcdir) kernel_srcdir="$2" ; shift 2 ;;
|
| |
+ -p|--kernel-pkgdir) kernel_pkgdir="$2" ; shift 2 ;;
|
| |
-s|--only-stage) only_stage="$2" ; shift 2 ;;
|
| |
-r|--release-build) release_build="yes" ; shift ;;
|
| |
-d|--debug) debug="yes" ; shift ;;
|
| |
@@ -56,8 +58,13 @@
|
| |
usage
|
| |
fi
|
| |
|
| |
+ if [ -z "$kernel_pkgdir" ]; then
|
| |
+ echo "Options not set!"
|
| |
+ usage
|
| |
+ fi
|
| |
+
|
| |
if [ -n "$only_stage" ]; then
|
| |
- valid_stages=("prep" "rebase" "buildsrpm" "all")
|
| |
+ valid_stages=("prep" "rebase" "buildsrpm" "prepdistgit" "all")
|
| |
stage_found=
|
| |
for valid_stage in "${valid_stages[@]}"; do
|
| |
if [ "$valid_stage" = "$only_stage" ]; then
|
| |
@@ -168,3 +175,45 @@
|
| |
make dist-srpm BUILDID=".test.$(date +'%Y%m%d%H%m' --utc)"
|
| |
fi
|
| |
popd
|
| |
+
|
| |
+ # Define stage for preparing to commit to Dist-Git
|
| |
+ current_stage="prepdistgit"
|
| |
+
|
| |
+ [ "$only_stage" = "prep" ] || [ "$only_stage" = "rebase" ] || [ "$only_stage" = "buildsrpm" ] && echo "Short-circuiting and exiting early, per user request!" && exit 0
|
| |
+
|
| |
+ [ "$release_build" != "yes" ] && echo "Not a release build, so no Dist-Git work needed!" && exit 0
|
| |
+
|
| |
+ echo "[*] STAGE: $current_stage"
|
| |
+ kernelsrpm_name="kernel-${kerneltree_latestcs9ver}.hs1.el9.src.rpm"
|
| |
+ kernelsrpm_location="${kernel_srcdir}/redhat/rpm/SRPMS/${kernelsrpm_name}"
|
| |
+ kerneldistgit_url="ssh://git@git.centos.org/rpms/kernel.git"
|
| |
+
|
| |
+ echo "Checking for existing checkout of Hyperscale kernel packaging tree..."
|
| |
+ if [ -d "${kernel_pkgdir}" ]; then
|
| |
+ pushd "${kernel_pkgdir}"
|
| |
+ kernelpkgtree_origin_remote=$(git remote get-url origin)
|
| |
+ [ "$kernelpkgtree_origin_remote" != "$kerneldistgit_url" ] && \
|
| |
+ echo "Invalid repository, exiting!" && exit 10
|
| |
+ git checkout c9s-sig-hyperscale
|
| |
+ git pull --ff-only
|
| |
+ echo "Existing checkout found and configured!"
|
| |
+ popd
|
| |
+ else
|
| |
+ echo "No existing checkout of the Hyperscale kernel packaging tree found!"
|
| |
+ echo "Setting up new checkout at ${kernel_pkgdir}..."
|
| |
+ git clone "${kerneldistgit_url}" --branch c9s-sig-hyperscale "${kernel_pkgdir}"
|
| |
+ echo "New checkout configured!"
|
| |
+ fi
|
| |
+ echo "Fetching code from Git remotes..."
|
| |
+ kernelsrpm_unpacktmpdir="${kernel_pkgdir}/tmp-$(date +'%Y%m%d%H%m' --utc)"
|
| |
+ pushd "${kernel_pkgdir}"
|
| |
+ rm *
|
| |
+ mkdir -p "${kernelsrpm_unpacktmpdir}"
|
| |
+ bsdtar --extract --verbose --file "${kernelsrpm_location}" --directory "${kernelsrpm_unpacktmpdir}"
|
| |
+ pushd "${kernelsrpm_unpacktmpdir}"
|
| |
+ sha512sum --tag *.tar.* *.x509 > sources
|
| |
+ mv * ..
|
| |
+ popd
|
| |
+ rm -rf "${kernelsrpm_unpacktmpdir}"
|
| |
+ patch --no-backup-if-mismatch -p1 < "${current_dir}"/package-diffs/*.patch
|
| |
+ popd
|
| |
This new stage does the work to prepare the Dist-Git repository to commit
the update. It does not actually upload sources or commit to the repo,
but it does simplify the process to actually prepare for doing that.