From 9432169952078fab93e4d90dbf2f7b9979fac29f Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Mar 17 2022 02:40:21 +0000 Subject: kernel-rebase/c9s: Add prepdistgit stage to assist in the release process 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. --- diff --git a/kernel-rebase/c9s/kernel-rebase.sh b/kernel-rebase/c9s/kernel-rebase.sh index d6bd2b6..1ee0ff1 100755 --- a/kernel-rebase/c9s/kernel-rebase.sh +++ b/kernel-rebase/c9s/kernel-rebase.sh @@ -22,20 +22,21 @@ export LC_ALL="C.UTF-8" 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 @@ debug= 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 @@ if [ -z "$kernel_srcdir" ]; then 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 @@ else 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 diff --git a/kernel-rebase/c9s/package-diffs/0001-Do-not-sign-the-kernel-or-modules-for-now.patch b/kernel-rebase/c9s/package-diffs/0001-Do-not-sign-the-kernel-or-modules-for-now.patch new file mode 100644 index 0000000..90350b3 --- /dev/null +++ b/kernel-rebase/c9s/package-diffs/0001-Do-not-sign-the-kernel-or-modules-for-now.patch @@ -0,0 +1,35 @@ +From fa7e9e6a6d7427398a7a93caec12dd1f576b2fe3 Mon Sep 17 00:00:00 2001 +From: Neal Gompa +Date: Sun, 12 Dec 2021 18:08:38 -0500 +Subject: [PATCH] Do not sign the kernel or modules for now + +The capability to do this is not yet available... + +Reference: https://pagure.io/centos-infra/issue/307 +Reference: https://git.centos.org/centos/board/issue/67 +--- + kernel.spec | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/kernel.spec b/kernel.spec +index cfadf41..b47a31d 100755 +--- a/kernel.spec ++++ b/kernel.spec +@@ -103,6 +103,14 @@ Summary: The Linux kernel + # Sign modules on all arches + %global signmodules 1 + ++%if 0%{?centos_hs} ++# We cannot do signing for secure boot yet... ++# Cf. https://pagure.io/centos-infra/issue/307 ++# Cf. https://git.centos.org/centos/board/issue/67 ++%global signkernel 0 ++%global signmodules 0 ++%endif ++ + # Compress modules only for architectures that build modules + %ifarch noarch + %global zipmodules 0 +-- +2.35.1 +