This is an automated email from the ASF dual-hosted git repository.

ctubbsii pushed a commit to branch 1.10.3-rc0
in repository https://gitbox.apache.org/repos/asf/accumulo.git

commit fb09e7e2594c451317ce6294b9dd27bd0c5e6c05
Author: Christopher Tubbs <[email protected]>
AuthorDate: Wed Apr 5 15:40:30 2023 -0400

    Backport release candidate script
    
    Backport current version of release candidate script from the main
    branch
---
 assemble/build.sh | 213 +++++++++++++++++++++++++++++++++---------------------
 1 file changed, 131 insertions(+), 82 deletions(-)

diff --git a/assemble/build.sh b/assemble/build.sh
index 5bbca61372..38321484d6 100755
--- a/assemble/build.sh
+++ b/assemble/build.sh
@@ -8,7 +8,7 @@
 # "License"); you may not use this file except in compliance
 # with the License.  You may obtain a copy of the License at
 #
-#   http://www.apache.org/licenses/LICENSE-2.0
+#   https://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing,
 # software distributed under the License is distributed on an
@@ -30,21 +30,36 @@ export tagPrefix="rel/"
 
 # check if running in a color terminal
 terminalSupportsColor() {
-  local c; c=$(tput colors 2>/dev/null) || c=-1
+  local c
+  c=$(tput colors 2>/dev/null) || c=-1
   [[ -t 1 ]] && [[ $c -ge 8 ]]
 }
 terminalSupportsColor && doColor=1 || doColor=0
 
-color() { local c; c=$1; shift; [[ $doColor -eq 1 ]] && echo -e 
"\\e[0;${c}m${*}\\e[0m" || echo "$@"; }
+color() {
+  local c
+  c=$1
+  shift
+  [[ $doColor -eq 1 ]] && echo -e "\\e[0;${c}m${*}\\e[0m" || echo "$@"
+}
 red() { color 31 "$@"; }
 green() { color 32 "$@"; }
 yellow() { color 33 "$@"; }
 
-fail() { echo -e ' ' "$@"; exit 1; }
-runLog() { local o; o=$1 && shift && echo "$(green Running) $(yellow "$@" '>>' 
"$o")" && echo Running "$@" >> "$o" && eval "$@" >> "$o"; }
-run() { echo "$(green Running) $(yellow "$@")" && eval "$@"; }
+fail() {
+  echo -e ' ' "$@"
+  exit 1
+}
+runLog() {
+  local o
+  o=$1 && shift && echo "$(green Running) $(yellow "$@" '>>' "$o")" && echo 
Running "$*" >>"$o" && "$@" >>"$o"
+}
+run() { echo "$(green Running) $(yellow "$@")" && "$@"; }
 
-currentBranch() { local b; b=$(git symbolic-ref -q HEAD) && echo 
"${b##refs/heads/}"; }
+currentBranch() {
+  local b
+  b=$(git symbolic-ref -q HEAD) && echo "${b##refs/heads/}"
+}
 
 cacheGPG() {
   # make sure gpg agent has key cached
@@ -54,7 +69,8 @@ cacheGPG() {
   until selectFingerprint; do
     red 'ERROR - Invalid selection'
   done
-  local TESTFILE; TESTFILE=$(mktemp --tmpdir 
"${USER}-gpgTestFile-XXXXXXXX.txt")
+  local TESTFILE
+  TESTFILE=$(mktemp --tmpdir "${USER}-gpgTestFile-XXXXXXXX.txt")
   [[ -r $TESTFILE ]] && gpg --local-user "$SELECTED_FINGERPRINT" --sign 
"$TESTFILE" && rm -f "$TESTFILE" "$TESTFILE.gpg"
 }
 
@@ -69,9 +85,14 @@ prompter() {
   echo "$x"
 }
 
-pretty() { local f; f=$1; shift; git log "--pretty=tformat:$f" "$@"; }
+pretty() {
+  local f
+  f=$1
+  shift
+  git log "--pretty=tformat:$f" "$@"
+}
 gitCommits() { pretty %H "$@"; }
-gitCommit()  { gitCommits -n1 "$@"; }
+gitCommit() { gitCommits -n1 "$@"; }
 gitSubject() { pretty %s "$@"; }
 
 selectFingerprint() {
@@ -100,42 +121,50 @@ selectFingerprint() {
 
 createEmail() {
   echo
-  yellow  "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
+  yellow "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
   echo
-  echo    "  Release candidate will be staged at:"
-  echo    "    $(yellow 'https://repository.apache.org/#stagingRepositories')"
+  echo "  Release candidate will be staged at:"
+  echo "    $(yellow 'https://repository.apache.org/#stagingRepositories')"
   echo
-  echo    "  $(green 'DO')       click $(green 'Close')   to complete the 
staging process!"
-  echo    "  $(red 'DO *NOT*') click $(red 'Release') until after the vote has 
been approved!"
+  echo "  $(green 'DO')       click $(green 'Close')   to complete the staging 
process!"
+  echo "  $(red 'DO *NOT*') click $(red 'Release') until after the vote has 
been approved!"
   echo
-  yellow  "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
+  yellow "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
   echo
   # $1 version (optional); $2 rc sequence num (optional); $3 staging repo num 
(optional)
-  local ver; [[ -n "$1" ]] && ver=$1 || ver=$(prompter 'version to be released 
(eg. x.y.z)' '[0-9]+[.][0-9]+[.][0-9]+')
-  local rc; [[ -n "$2" ]] && rc=$2 || rc=$(prompter 'release candidate 
sequence number (eg. 1, 2, etc.)' '[0-9]+')
-  local stagingrepo; [[ -n "$3" ]] && stagingrepo=$3 || stagingrepo=$(prompter 
'staging repository number from 
https://repository.apache.org/#stagingRepositories' '[0-9]+')
-  local srcSha; [[ -n "$4" ]] && srcSha=$4 || srcSha=$(prompter 'SHA512 for 
source tarball' '[0-9a-f]{128}')
-  local binSha; [[ -n "$5" ]] && binSha=$5 || binSha=$(prompter 'SHA512 for 
binary tarball' '[0-9a-f]{128}')
-
-  local branch; branch=$ver-rc$rc
-  local commit; commit=$(gitCommit "$branch") || exit 1
-  local tag; tag=$tagPrefix$ver
+  local ver
+  [[ -n $1 ]] && ver=$1 || ver=$(prompter 'version to be released (eg. x.y.z)' 
'[0-9]+[.][0-9]+[.][0-9]+')
+  local rc
+  [[ -n $2 ]] && rc=$2 || rc=$(prompter 'release candidate sequence number 
(eg. 1, 2, etc.)' '[0-9]+')
+  local stagingrepo
+  [[ -n $3 ]] && stagingrepo=$3 || stagingrepo=$(prompter 'staging repository 
number from https://repository.apache.org/#stagingRepositories' '[0-9]+')
+  local srcSha
+  [[ -n $4 ]] && srcSha=$4 || srcSha=$(prompter 'SHA512 for source tarball' 
'[0-9a-f]{128}')
+  local binSha
+  [[ -n $5 ]] && binSha=$5 || binSha=$(prompter 'SHA512 for binary tarball' 
'[0-9a-f]{128}')
+
+  local branch
+  branch=$ver-rc$rc
+  local commit
+  commit=$(gitCommit "$branch") || exit 1
+  local tag
+  tag=$tagPrefix$ver
   echo
-  yellow  "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
+  yellow "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
   echo
-  echo    "    Don't forget to make the staged branch available for review by"
-  echo    "    pushing a branch named $(yellow "$branch") with its head at"
-  echo    "      $(yellow "$commit"):"
+  echo "    Don't forget to make the staged branch available for review by"
+  echo "    pushing a branch named $(yellow "$branch") with its head at"
+  echo "      $(yellow "$commit"):"
   echo
-  echo    "      # replace $(yellow "\$origin") with your upstream remote name 
"
-  echo    "      $(green "git push") $(yellow "\$origin") $(green 
"$commit:refs/heads/$branch")"
+  echo "      # replace $(yellow 'ORIGIN') with your upstream remote name "
+  echo "      $(green "git push") $(yellow 'ORIGIN') $(green 
"$commit:refs/heads/$branch")"
   echo
-  echo    "    Remember, $(red DO NOT PUSH) the $(red "$tag") tag until after 
the vote"
-  echo    "    passes and the tag is re-made with a gpg signature using:"
-  echo    "      $(red "git tag -f -s -m '$projNameLong $ver' $tag") \\"
-  echo    "      $(red "$commit")"
+  echo "    Remember, $(red DO NOT PUSH) the $(red "$tag") tag until after the 
vote"
+  echo "    passes and the tag is re-made with a gpg signature using:"
+  echo "      $(red "git tag -f -s -m '$projNameLong $ver' $tag") \\"
+  echo "      $(red "$commit")"
   echo
-  yellow  "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
+  yellow "IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! IMPORTANT!! 
IMPORTANT!!"
   echo
   read -r -s -p 'Press Enter to generate the [VOTE] email...'
   echo 1>&2
@@ -146,14 +175,18 @@ createEmail() {
   done
 
   # compute the date with a buffer of 30 minutes
-  local votedate; votedate=$(date -d "+3 days 30 minutes" "+%s")
+  local votedate
+  votedate=$(date -d "+3 days 30 minutes" "+%s")
   # round back to the previous half-hour
-  local halfhour; halfhour=$((votedate - (votedate % 1800)))
+  local halfhour
+  halfhour=$((votedate - (votedate % 1800)))
   votedate=$(date -u -d"1970-01-01 $halfhour seconds UTC")
   export TZ="America/New_York"
-  local edtvotedate; edtvotedate=$(date -d"1970-01-01 $halfhour seconds UTC")
+  local edtvotedate
+  edtvotedate=$(date -d"1970-01-01 $halfhour seconds UTC")
   export TZ="America/Los_Angeles"
-  local pdtvotedate; pdtvotedate=$(date -d"1970-01-01 $halfhour seconds UTC")
+  local pdtvotedate
+  pdtvotedate=$(date -d"1970-01-01 $halfhour seconds UTC")
 
   cat <<EOF
 $(yellow '============================================================')
@@ -224,9 +257,12 @@ cleanUpAndFail() {
   run git checkout "$3"
 
   # pre-populate branches with expected next branch; de-duplicate later
-  local branches; branches=("$4")
-  local tags; tags=()
-  local x; local y
+  local branches
+  branches=("$4")
+  local tags
+  tags=()
+  local x
+  local y
   for x in $(gitCommits "${cBranch}..${nBranch}"); do
     for y in $(git branch --contains "$x" | cut -c3-); do
       branches=("${branches[@]}" "$y")
@@ -238,7 +274,8 @@ cleanUpAndFail() {
 
   # de-duplicate branches
   local a
-  local tmpArray; tmpArray=("${branches[@]}")
+  local tmpArray
+  tmpArray=("${branches[@]}")
   IFS=$'\n' read -d '' -r -a branches < <(printf '%s\n' "${tmpArray[@]}" | 
sort -u)
   for x in "${branches[@]}"; do
     echo "Do you wish to clean up (delete) the branch $(yellow "$x")?"
@@ -277,21 +314,21 @@ selectRemote() {
 
 createReleaseCandidate() {
   echo
-  yellow  "WARNING!! WARNING!! WARNING!! WARNING!! WARNING!! WARNING!!"
+  yellow "WARNING!! WARNING!! WARNING!! WARNING!! WARNING!! WARNING!!"
   echo
-  echo    "  Don't forget to $(yellow 'Set up your development environment')!"
-  echo    "  For details, see the section by that name at:"
-  echo    "  $(green 
'https://infra.apache.org/publishing-maven-artifacts.html')"
+  echo "  Don't forget to $(yellow 'Set up your development environment')!"
+  echo "  For details, see the section by that name at:"
+  echo "  $(green 'https://infra.apache.org/publishing-maven-artifacts.html')"
   echo
-  echo    "  This will modify your local git repository by creating"
-  echo    "  branches and tags. Afterwards, you may need to perform"
-  echo    "  some manual steps to complete the release or to rollback"
-  echo    "  in the case of failure."
+  echo "  This will modify your local git repository by creating"
+  echo "  branches and tags. Afterwards, you may need to perform"
+  echo "  some manual steps to complete the release or to rollback"
+  echo "  in the case of failure."
   echo
-  echo    "  Release candidate will be staged at:"
-  echo    "    $(yellow 'https://repository.apache.org/#stagingRepositories')"
+  echo "  Release candidate will be staged at:"
+  echo "    $(yellow 'https://repository.apache.org/#stagingRepositories')"
   echo
-  yellow  "WARNING!! WARNING!! WARNING!! WARNING!! WARNING!! WARNING!!"
+  yellow "WARNING!! WARNING!! WARNING!! WARNING!! WARNING!! WARNING!!"
   echo
 
   if [[ ${#@} -ne 0 ]]; then
@@ -303,30 +340,38 @@ createReleaseCandidate() {
   ver=$(xmllint --shell pom.xml <<<'xpath 
/*[local-name()="project"]/*[local-name()="version"]/text()' | grep content= | 
cut -f2 -d=)
   ver=${ver%%-SNAPSHOT}
   echo "Building release candidate for version: $(green "$ver")"
-  local tag; tag=$tagPrefix$ver
-
-  local cBranch; cBranch=$(currentBranch) || fail "$(red Failure)" to get 
current branch from git
-  local rc; rc=$(prompter 'release candidate sequence number (eg. 1, 2, etc.)' 
'[0-9]+')
-  local tmpNextVer; tmpNextVer="${ver%.*}.$((${ver##*.}+1))"
-  local nextVer; nextVer=$(prompter "next snapshot version to be released 
[$tmpNextVer]" '([0-9]+[.][0-9]+[.][0-9]+)?')
+  local tag
+  tag=$tagPrefix$ver
+
+  local cBranch
+  cBranch=$(currentBranch) || fail "$(red Failure)" to get current branch from 
git
+  local rc
+  rc=$(prompter 'release candidate sequence number (eg. 1, 2, etc.)' '[0-9]+')
+  local tmpNextVer
+  tmpNextVer="${ver%.*}.$((${ver##*.} + 1))"
+  local nextVer
+  nextVer=$(prompter "next snapshot version to be released [$tmpNextVer]" 
'([0-9]+[.][0-9]+[.][0-9]+)?')
   [[ -n $nextVer ]] || nextVer=$tmpNextVer
-  local rcBranch; rcBranch=$ver-rc$rc
-  local nBranch; nBranch=$rcBranch-next
+  local rcBranch
+  rcBranch=$ver-rc$rc
+  local nBranch
+  nBranch=$rcBranch-next
 
   cacheGPG || fail "Unable to cache GPG credentials into gpg-agent"
 
   # create working branch
-  run git checkout -b "$nBranch" "$cBranch" || \
+  run git checkout -b "$nBranch" "$cBranch" ||
     fail "Unable to create working branch $(red "$nBranch") from $(red 
"$cBranch")!"
 
   # create a release candidate from a branch
-  local oFile; oFile=$(mktemp --tmpdir 
"$projName-build-$rcBranch-XXXXXXXX.log")
+  local oFile
+  oFile=$(mktemp --tmpdir "$projName-build-$rcBranch-XXXXXXXX.log")
   {
     [[ -w $oFile ]] && runLog "$oFile" mvn clean release:clean
   } || cleanUpAndFail 'mvn clean release:clean' "$oFile" "$cBranch" "$nBranch"
-  runLog "$oFile" mvn -B release:prepare 
-DdevelopmentVersion="${nextVer}-SNAPSHOT" 
"-Dgpg.keyname=$SELECTED_FINGERPRINT" || \
+  runLog "$oFile" mvn -B release:prepare 
-DdevelopmentVersion="${nextVer}-SNAPSHOT" 
"-Dgpg.keyname=$SELECTED_FINGERPRINT" ||
     cleanUpAndFail "mvn -B release:prepare 
-DdevelopmentVersion=${nextVer}-SNAPSHOT" "$oFile" "$cBranch" "$nBranch"
-  runLog "$oFile" mvn release:perform "-Dgpg.keyname=$SELECTED_FINGERPRINT" || 
\
+  runLog "$oFile" mvn release:perform "-Dgpg.keyname=$SELECTED_FINGERPRINT" ||
     cleanUpAndFail "mvn release:perform" "$oFile" "$cBranch" "$nBranch"
 
   # switch back to original branch
@@ -334,22 +379,22 @@ createReleaseCandidate() {
 
   # verify the next branch contains both expected log messages and no more
   {
-    [[ $(gitCommits "${cBranch}..${nBranch}" | wc -l) -eq 2 ]] && \
-      [[ $(gitCommit  "${nBranch}~2") ==  $(gitCommit "${cBranch}") ]] && \
-      [[ $(gitSubject "${nBranch}")   =~ ^\[maven-release-plugin\]\ prepare\ 
for\ next ]] && \
+    [[ $(gitCommits "${cBranch}..${nBranch}" | wc -l) -eq 2 ]] &&
+      [[ $(gitCommit "${nBranch}~2") == $(gitCommit "${cBranch}") ]] &&
+      [[ $(gitSubject "${nBranch}") =~ ^\[maven-release-plugin\]\ prepare\ 
for\ next ]] &&
       [[ $(gitSubject "${nBranch}~1") =~ ^\[maven-release-plugin\]\ prepare\ 
release\ rel[/] ]]
   } || cleanUpAndFail "verifying that $nBranch contains only logs from release 
plugin"
 
   # verify the tag is one behind $nBranch and one ahead of $cBranch
-  [[ $(gitCommit "${nBranch}~1") == $(gitCommit "refs/tags/$tag") ]] || \
+  [[ $(gitCommit "${nBranch}~1") == $(gitCommit "refs/tags/$tag") ]] ||
     cleanUpAndFail "verifying that ${nBranch}~1 == refs/tags/$tag"
 
   # remove tag which was created
-  run git tag -d "$tag" || \
+  run git tag -d "$tag" ||
     cleanUpAndFail "removing unused git tag $tag"
 
   # create release candidate branch to vote on
-  run git branch "$rcBranch" "${nBranch}~1" || \
+  run git branch "$rcBranch" "${nBranch}~1" ||
     cleanUpAndFail "creating branch $rcBranch"
 
   # determine remote to use
@@ -364,20 +409,25 @@ createReleaseCandidate() {
     echo "Do you wish to push the following branches to $SELECTED_REMOTE 
($(green "$SELECTED_REMOTE_URL"))?"
     echo "  $(yellow "$rcBranch")      (for others to examine for the vote)"
     echo "  $(yellow "$nBranch") (for merging into $cBranch if vote passes)"
-    local a; a=$(prompter "letter 'y' or 'n'" '[yn]')
+    local a
+    a=$(prompter "letter 'y' or 'n'" '[yn]')
     {
-      [[ $a == 'y' ]] && \
+      [[ $a == 'y' ]] &&
         run git push -u "$SELECTED_REMOTE" "refs/heads/$nBranch" 
"refs/heads/$rcBranch"
     } || red "Did not push branches; you'll need to perform this step 
manually."
   fi
 
-  local numSrc; numSrc=$(find target/checkout/ -type f -name 
"$projName-$ver-source-release.tar.gz" | wc -l)
-  local numBin; numBin=$(find target/checkout/ -type f -name 
"$projName-$ver-bin.tar.gz" | wc -l)
+  local numSrc
+  numSrc=$(find target/checkout/ -type f -name 
"$projName-$ver-source-release.tar.gz" | wc -l)
+  local numBin
+  numBin=$(find target/checkout/ -type f -name "$projName-$ver-bin.tar.gz" | 
wc -l)
   shopt -s globstar
-  local srcSha; srcSha=""
-  local binSha; binSha=""
-  [[ $numSrc = "1" ]] && srcSha=$(sha512sum 
target/checkout/**/"$projName-$ver-source-release.tar.gz" | cut -f1 -d" ")
-  [[ $numBin = "1" ]] && binSha=$(sha512sum 
target/checkout/**/"$projName-$ver-bin.tar.gz" | cut -f1 -d" ")
+  local srcSha
+  srcSha=""
+  local binSha
+  binSha=""
+  [[ $numSrc == "1" ]] && srcSha=$(sha512sum 
target/checkout/**/"$projName-$ver-source-release.tar.gz" | cut -f1 -d" ")
+  [[ $numBin == "1" ]] && binSha=$(sha512sum 
target/checkout/**/"$projName-$ver-bin.tar.gz" | cut -f1 -d" ")
 
   # continue to creating email notification
   echo "$(red Running)" "$(yellow "$scriptname" --create-email "$ver" "$rc")"
@@ -394,4 +444,3 @@ elif [[ $1 == '--create-email' ]]; then
 else
   fail "Missing one of: $(red --create-release-candidate), $(red 
--create-email)"
 fi
-

Reply via email to