annotate src/capnproto-git-20161025/release.sh @ 140:59a8758c56b1

Add source for PortAudio stable v190600_20161030
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 03 Jan 2017 13:44:07 +0000
parents 1ac99bfc383d
children
rev   line source
cannam@133 1 #! /usr/bin/env bash
cannam@133 2
cannam@133 3 set -euo pipefail
cannam@133 4
cannam@133 5 if (grep -r KJ_DBG c++/src | egrep -v '/debug(-test)?[.]'); then
cannam@133 6 echo '*** Error: There are instances of KJ_DBG in the code.' >&2
cannam@133 7 exit 1
cannam@133 8 fi
cannam@133 9
cannam@133 10 if (egrep -r 'TODO\((now|soon)\)' *); then
cannam@133 11 echo '*** Error: There are release-blocking TODOs in the code.' >&2
cannam@133 12 exit 1
cannam@133 13 fi
cannam@133 14
cannam@133 15 doit() {
cannam@133 16 echo "@@@@ $@"
cannam@133 17 "$@"
cannam@133 18 }
cannam@133 19
cannam@133 20 get_version() {
cannam@133 21 local VERSION=$(grep AC_INIT c++/configure.ac | sed -e 's/^[^]]*],\[\([^]]*\)].*$/\1/g')
cannam@133 22 if [[ ! "$VERSION" =~ $1 ]]; then
cannam@133 23 echo "Couldn't parse version: $VERSION" >&2
cannam@133 24 exit 1
cannam@133 25 fi
cannam@133 26 echo "$VERSION"
cannam@133 27 }
cannam@133 28
cannam@133 29 get_release_version() {
cannam@133 30 get_version '^[0-9]+[.][0-9]+[.][0-9]+(-rc[0-9]+|[.][0-9]+)?$'
cannam@133 31 }
cannam@133 32
cannam@133 33 update_version() {
cannam@133 34 local OLD=$1
cannam@133 35 local NEW=$2
cannam@133 36 local BRANCH_DESC=$3
cannam@133 37
cannam@133 38 local OLD_REGEX=${OLD//./[.]}
cannam@133 39 doit sed -i -e "s/$OLD_REGEX/$NEW/g" c++/configure.ac
cannam@133 40 doit sed -i -e "s/set(VERSION.*)/set(VERSION $NEW)/g" c++/CMakeLists.txt
cannam@133 41
cannam@133 42 local NEW_NOTAG=${NEW%%-*}
cannam@133 43 declare -a NEW_ARR=(${NEW_NOTAG//./ })
cannam@133 44 doit sed -i -re "
cannam@133 45 s/^#define CAPNP_VERSION_MAJOR [0-9]+\$/#define CAPNP_VERSION_MAJOR ${NEW_ARR[0]}/g;
cannam@133 46 s/^#define CAPNP_VERSION_MINOR [0-9]+\$/#define CAPNP_VERSION_MINOR ${NEW_ARR[1]}/g;
cannam@133 47 s/^#define CAPNP_VERSION_MICRO [0-9]+\$/#define CAPNP_VERSION_MICRO ${NEW_ARR[2]:-0}/g" \
cannam@133 48 c++/src/capnp/common.h
cannam@133 49
cannam@133 50 local NEW_COMBINED=$(( ${NEW_ARR[0]} * 1000000 + ${NEW_ARR[1]} * 1000 + ${NEW_ARR[2]:-0 }))
cannam@133 51 doit sed -i -re "s/^#if CAPNP_VERSION != [0-9]*\$/#if CAPNP_VERSION != $NEW_COMBINED/g" \
cannam@133 52 c++/src/*/*.capnp.h c++/src/*/*/*.capnp.h
cannam@133 53
cannam@133 54 doit git commit -a -m "Set $BRANCH_DESC version to $NEW."
cannam@133 55 }
cannam@133 56
cannam@133 57 build_packages() {
cannam@133 58 local VERSION=$1
cannam@133 59 local VERSION_BASE=${VERSION%%-*}
cannam@133 60
cannam@133 61 echo "========================================================================="
cannam@133 62 echo "Building C++ package..."
cannam@133 63 echo "========================================================================="
cannam@133 64 cd c++
cannam@133 65 doit autoreconf -i
cannam@133 66 doit ./configure
cannam@133 67 doit make -j6 distcheck
cannam@133 68 doit make dist-zip
cannam@133 69 doit mv capnproto-c++-$VERSION.tar.gz ..
cannam@133 70 doit mv capnproto-c++-$VERSION.zip ../capnproto-c++-win32-$VERSION.zip
cannam@133 71 doit make distclean
cannam@133 72 doit ./configure --host=i686-w64-mingw32 --with-external-capnp \
cannam@133 73 --disable-shared CXXFLAGS='-static-libgcc -static-libstdc++'
cannam@133 74 doit make -j6 capnp.exe capnpc-c++.exe capnpc-capnp.exe
cannam@133 75 doit i686-w64-mingw32-strip capnp.exe capnpc-c++.exe capnpc-capnp.exe
cannam@133 76 doit mkdir capnproto-tools-win32-$VERSION
cannam@133 77 doit mv capnp.exe capnpc-c++.exe capnpc-capnp.exe capnproto-tools-win32-$VERSION
cannam@133 78 doit zip -r ../capnproto-c++-win32-$VERSION.zip capnproto-tools-win32-$VERSION
cannam@133 79 doit make maintainer-clean
cannam@133 80 cd ..
cannam@133 81 }
cannam@133 82
cannam@133 83 cherry_pick() {
cannam@133 84 shift
cannam@133 85 if [ $# -gt 0 ]; then
cannam@133 86 echo "========================================================================="
cannam@133 87 echo "Cherry-picking fixes"
cannam@133 88 echo "========================================================================="
cannam@133 89 doit git cherry-pick "$@"
cannam@133 90 fi
cannam@133 91 }
cannam@133 92
cannam@133 93 done_banner() {
cannam@133 94 local VERSION=$1
cannam@133 95 local PUSH=$2
cannam@133 96 local FINAL=$3
cannam@133 97 echo "========================================================================="
cannam@133 98 echo "Done"
cannam@133 99 echo "========================================================================="
cannam@133 100 echo "Ready to release:"
cannam@133 101 echo " capnproto-c++-$VERSION.tar.gz"
cannam@133 102 echo " capnproto-c++-win32-$VERSION.zip"
cannam@133 103 echo "Don't forget to push changes:"
cannam@133 104 echo " git push origin $PUSH"
cannam@133 105
cannam@133 106 read -s -n 1 -p "Shall I push to git and upload to capnproto.org now? (y/N)" YESNO
cannam@133 107
cannam@133 108 echo
cannam@133 109 case "$YESNO" in
cannam@133 110 y | Y )
cannam@133 111 doit git push origin $PUSH
cannam@133 112 doit gcutil push fe capnproto-c++-$VERSION.tar.gz capnproto-c++-win32-$VERSION.zip \
cannam@133 113 /var/www/capnproto.org
cannam@133 114
cannam@133 115 if [ "$FINAL" = yes ]; then
cannam@133 116 echo "========================================================================="
cannam@133 117 echo "Publishing docs"
cannam@133 118 echo "========================================================================="
cannam@133 119 cd doc
cannam@133 120 doit ./push-site.sh
cannam@133 121 cd ..
cannam@133 122 echo "========================================================================="
cannam@133 123 echo "Really done"
cannam@133 124 echo "========================================================================="
cannam@133 125 fi
cannam@133 126
cannam@133 127 echo "Release is available at:"
cannam@133 128 echo " http://capnproto.org/capnproto-c++-$VERSION.tar.gz"
cannam@133 129 ;;
cannam@133 130 * )
cannam@133 131 echo "OK, do it yourself then."
cannam@133 132 ;;
cannam@133 133 esac
cannam@133 134 }
cannam@133 135
cannam@133 136 BRANCH=$(git rev-parse --abbrev-ref HEAD)
cannam@133 137
cannam@133 138 case "${1-}:$BRANCH" in
cannam@133 139 # ======================================================================================
cannam@133 140 candidate:master )
cannam@133 141 echo "New major release."
cannam@133 142
cannam@133 143 if [ $# -gt 1 ]; then
cannam@133 144 echo "Cannot cherry-pick when starting from master. Do it yourself." >&2
cannam@133 145 exit 1
cannam@133 146 fi
cannam@133 147
cannam@133 148 HEAD_VERSION=$(get_version '^[0-9]+[.][0-9]+-dev$')
cannam@133 149 RELEASE_VERSION=${HEAD_VERSION%%-dev}.0
cannam@133 150
cannam@133 151 echo "Version: $RELEASE_VERSION"
cannam@133 152
cannam@133 153 echo "========================================================================="
cannam@133 154 echo "Creating release branch..."
cannam@133 155 echo "========================================================================="
cannam@133 156 doit git checkout -b release-$RELEASE_VERSION
cannam@133 157
cannam@133 158 update_version $HEAD_VERSION $RELEASE_VERSION-rc1 "release branch"
cannam@133 159
cannam@133 160 build_packages $RELEASE_VERSION-rc1
cannam@133 161
cannam@133 162 echo "========================================================================="
cannam@133 163 echo "Updating version in master branch..."
cannam@133 164 echo "========================================================================="
cannam@133 165
cannam@133 166 doit git checkout master
cannam@133 167 declare -a VERSION_ARR=(${RELEASE_VERSION//./ })
cannam@133 168 NEXT_VERSION=${VERSION_ARR[0]}.$((VERSION_ARR[1] + 1))
cannam@133 169
cannam@133 170 update_version $HEAD_VERSION $NEXT_VERSION-dev "mainlaine"
cannam@133 171
cannam@133 172 done_banner $RELEASE_VERSION-rc1 "master release-$RELEASE_VERSION" no
cannam@133 173 ;;
cannam@133 174
cannam@133 175 # ======================================================================================
cannam@133 176 candidate:release-* )
cannam@133 177 echo "New release candidate."
cannam@133 178 OLD_VERSION=$(get_release_version)
cannam@133 179
cannam@133 180 if [[ $OLD_VERSION == *-rc* ]]; then
cannam@133 181 # New release candidate for existing release.
cannam@133 182
cannam@133 183 RC=${OLD_VERSION##*-rc}
cannam@133 184 BRANCH_VERSION=${OLD_VERSION%%-rc*}
cannam@133 185 RC_VERSION=$BRANCH_VERSION-rc$(( RC + 1 ))
cannam@133 186
cannam@133 187 echo "Version: $RC_VERSION"
cannam@133 188 else
cannam@133 189 # New micro release.
cannam@133 190
cannam@133 191 declare -a VERSION_ARR=(${OLD_VERSION//./ })
cannam@133 192 BRANCH_VERSION=${VERSION_ARR[0]}.${VERSION_ARR[1]}.$((VERSION_ARR[2] + 1))
cannam@133 193
cannam@133 194 RC_VERSION=$BRANCH_VERSION-rc1
cannam@133 195 echo "Version: $RC_VERSION"
cannam@133 196
cannam@133 197 echo "========================================================================="
cannam@133 198 echo "Creating new release branch..."
cannam@133 199 echo "========================================================================="
cannam@133 200
cannam@133 201 doit git checkout -b release-$BRANCH_VERSION
cannam@133 202 fi
cannam@133 203
cannam@133 204 echo "========================================================================="
cannam@133 205 echo "Updating version number to $RC_VERSION..."
cannam@133 206 echo "========================================================================="
cannam@133 207
cannam@133 208 update_version $OLD_VERSION $RC_VERSION "release branch"
cannam@133 209
cannam@133 210 cherry_pick "$@"
cannam@133 211
cannam@133 212 build_packages $RC_VERSION
cannam@133 213
cannam@133 214 done_banner $RC_VERSION release-$BRANCH_VERSION no
cannam@133 215 ;;
cannam@133 216
cannam@133 217 # ======================================================================================
cannam@133 218 final:release-* )
cannam@133 219 echo "Final release."
cannam@133 220 OLD_VERSION=$(get_release_version)
cannam@133 221
cannam@133 222 if [[ $OLD_VERSION != *-rc* ]]; then
cannam@133 223 echo "Current version is already a final release. You need to create a new candidate first." >&2
cannam@133 224 exit 1
cannam@133 225 fi
cannam@133 226
cannam@133 227 if [ $# -gt 1 ]; then
cannam@133 228 echo "Cannot cherry-pick into final release. Make another candidate." >&2
cannam@133 229 exit 1
cannam@133 230 fi
cannam@133 231
cannam@133 232 RC=${OLD_VERSION##*-rc}
cannam@133 233 NEW_VERSION=${OLD_VERSION%%-rc*}
cannam@133 234
cannam@133 235 echo "Version: $NEW_VERSION"
cannam@133 236
cannam@133 237 echo "========================================================================="
cannam@133 238 echo "Updating version number to $NEW_VERSION..."
cannam@133 239 echo "========================================================================="
cannam@133 240
cannam@133 241 doit sed -i -re "s/capnproto-c[+][+]-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-c++-$NEW_VERSION/g" doc/install.md
cannam@133 242 doit sed -i -re "s/capnproto-c[+][+]-win32-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-c++-win32-$NEW_VERSION/g" doc/install.md
cannam@133 243 doit sed -i -re "s/capnproto-tools-win32-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-tools-win32-$NEW_VERSION/g" doc/install.md
cannam@133 244 update_version $OLD_VERSION $NEW_VERSION "release branch"
cannam@133 245
cannam@133 246 doit git tag v$NEW_VERSION
cannam@133 247
cannam@133 248 build_packages $NEW_VERSION
cannam@133 249
cannam@133 250 done_banner $NEW_VERSION "v$NEW_VERSION release-$NEW_VERSION" yes
cannam@133 251 ;;
cannam@133 252
cannam@133 253 # ======================================================================================
cannam@133 254 security:release-* )
cannam@133 255 echo "Security release."
cannam@133 256 OLD_VERSION=$(get_release_version)
cannam@133 257
cannam@133 258 if [[ $OLD_VERSION == *-rc* ]]; then
cannam@133 259 echo "Security releases don't have candidates." >&2
cannam@133 260 exit 1
cannam@133 261 fi
cannam@133 262
cannam@133 263 declare -a VERSION_ARR=(${OLD_VERSION//./ } 0)
cannam@133 264 NEW_VERSION=${VERSION_ARR[0]}.${VERSION_ARR[1]}.${VERSION_ARR[2]}.$((VERSION_ARR[3] + 1))
cannam@133 265
cannam@133 266 echo "Version: $NEW_VERSION"
cannam@133 267
cannam@133 268 echo "========================================================================="
cannam@133 269 echo "Updating version number to $NEW_VERSION..."
cannam@133 270 echo "========================================================================="
cannam@133 271
cannam@133 272 doit sed -i -re "s/capnproto-c[+][+]-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-c++-$NEW_VERSION/g" doc/install.md
cannam@133 273 doit sed -i -re "s/capnproto-c[+][+]-win32-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-c++-win32-$NEW_VERSION/g" doc/install.md
cannam@133 274 doit sed -i -re "s/capnproto-tools-win32-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-tools-win32-$NEW_VERSION/g" doc/install.md
cannam@133 275 update_version $OLD_VERSION $NEW_VERSION "release branch"
cannam@133 276
cannam@133 277 cherry_pick "$@"
cannam@133 278
cannam@133 279 doit git tag v$NEW_VERSION
cannam@133 280
cannam@133 281 build_packages $NEW_VERSION
cannam@133 282
cannam@133 283 done_banner $NEW_VERSION "v$NEW_VERSION release-$NEW_VERSION" yes
cannam@133 284 ;;
cannam@133 285
cannam@133 286 # ======================================================================================
cannam@133 287 retry:release-* )
cannam@133 288 echo "Retrying release."
cannam@133 289 OLD_VERSION=$(get_release_version)
cannam@133 290 echo "Version: $OLD_VERSION"
cannam@133 291
cannam@133 292 if [[ $OLD_VERSION == *-rc* ]]; then
cannam@133 293 # We can add more cherry-picks when retrying a candidate.
cannam@133 294 cherry_pick "$@"
cannam@133 295 else
cannam@133 296 if [ $# -gt 1 ]; then
cannam@133 297 echo "Cannot cherry-pick into final release. Make another candidate." >&2
cannam@133 298 exit 1
cannam@133 299 fi
cannam@133 300 fi
cannam@133 301
cannam@133 302 OLD_VERSION=$(get_release_version)
cannam@133 303 build_packages $OLD_VERSION
cannam@133 304
cannam@133 305 if [[ $OLD_VERSION == *-rc* ]]; then
cannam@133 306 BRANCH_VERSION=${OLD_VERSION%%-rc*}
cannam@133 307 done_banner $OLD_VERSION release-$BRANCH_VERSION no
cannam@133 308 else
cannam@133 309 doit git tag v$OLD_VERSION
cannam@133 310 done_banner $OLD_VERSION "v$OLD_VERSION release-$OLD_VERSION" no
cannam@133 311 fi
cannam@133 312 ;;
cannam@133 313
cannam@133 314 # ======================================================================================
cannam@133 315 *:master )
cannam@133 316 echo "Invalid command for mainline branch. Only command is 'candidate'." >&2
cannam@133 317 exit 1
cannam@133 318 ;;
cannam@133 319
cannam@133 320 *:release-* )
cannam@133 321 echo "Invalid command for release branch. Commands are 'candidate', 'final', and 'retry'." >&2
cannam@133 322 exit 1
cannam@133 323 ;;
cannam@133 324
cannam@133 325 * )
cannam@133 326 echo "Not a master or release branch." >&2
cannam@133 327 exit 1
cannam@133 328 ;;
cannam@133 329 esac