Commit 04d787fa authored by Kenton Varda's avatar Kenton Varda

Extend release script to support security point releases which do not change the soname.

parent 16542ea3
...@@ -209,8 +209,12 @@ else ...@@ -209,8 +209,12 @@ else
lib_LTLIBRARIES = libkj.la libkj-async.la libcapnp.la libcapnp-rpc.la libcapnpc.la lib_LTLIBRARIES = libkj.la libkj-async.la libcapnp.la libcapnp-rpc.la libcapnpc.la
endif endif
# Don't include security release in soname -- we want to replace old binaries
# in this case.
SO_VERSION = $(shell echo $(VERSION) | sed -re 's/^([0-9]+[.][0-9]+[.][0-9]+)([.][0-9]+)?(-.*)?$$/\1\3/g')
libkj_la_LIBADD = $(PTHREAD_LIBS) libkj_la_LIBADD = $(PTHREAD_LIBS)
libkj_la_LDFLAGS = -release $(VERSION) -no-undefined libkj_la_LDFLAGS = -release $(SO_VERSION) -no-undefined
libkj_la_SOURCES= \ libkj_la_SOURCES= \
src/kj/common.c++ \ src/kj/common.c++ \
src/kj/units.c++ \ src/kj/units.c++ \
...@@ -230,7 +234,7 @@ libkj_la_SOURCES= \ ...@@ -230,7 +234,7 @@ libkj_la_SOURCES= \
if !LITE_MODE if !LITE_MODE
libkj_async_la_LIBADD = libkj.la $(PTHREAD_LIBS) libkj_async_la_LIBADD = libkj.la $(PTHREAD_LIBS)
libkj_async_la_LDFLAGS = -release $(VERSION) -no-undefined libkj_async_la_LDFLAGS = -release $(SO_VERSION) -no-undefined
libkj_async_la_SOURCES= \ libkj_async_la_SOURCES= \
src/kj/async.c++ \ src/kj/async.c++ \
src/kj/async-unix.c++ \ src/kj/async-unix.c++ \
...@@ -247,7 +251,7 @@ heavy_sources = \ ...@@ -247,7 +251,7 @@ heavy_sources = \
endif !LITE_MODE endif !LITE_MODE
libcapnp_la_LIBADD = libkj.la $(PTHREAD_LIBS) libcapnp_la_LIBADD = libkj.la $(PTHREAD_LIBS)
libcapnp_la_LDFLAGS = -release $(VERSION) -no-undefined libcapnp_la_LDFLAGS = -release $(SO_VERSION) -no-undefined
libcapnp_la_SOURCES= \ libcapnp_la_SOURCES= \
src/capnp/c++.capnp.c++ \ src/capnp/c++.capnp.c++ \
src/capnp/blob.c++ \ src/capnp/blob.c++ \
...@@ -265,7 +269,7 @@ libcapnp_la_SOURCES= \ ...@@ -265,7 +269,7 @@ libcapnp_la_SOURCES= \
if !LITE_MODE if !LITE_MODE
libcapnp_rpc_la_LIBADD = libcapnp.la libkj-async.la libkj.la $(PTHREAD_LIBS) libcapnp_rpc_la_LIBADD = libcapnp.la libkj-async.la libkj.la $(PTHREAD_LIBS)
libcapnp_rpc_la_LDFLAGS = -release $(VERSION) -no-undefined libcapnp_rpc_la_LDFLAGS = -release $(SO_VERSION) -no-undefined
libcapnp_rpc_la_SOURCES= \ libcapnp_rpc_la_SOURCES= \
src/capnp/serialize-async.c++ \ src/capnp/serialize-async.c++ \
src/capnp/capability.c++ \ src/capnp/capability.c++ \
...@@ -278,7 +282,7 @@ libcapnp_rpc_la_SOURCES= \ ...@@ -278,7 +282,7 @@ libcapnp_rpc_la_SOURCES= \
src/capnp/ez-rpc.c++ src/capnp/ez-rpc.c++
libcapnpc_la_LIBADD = libcapnp.la libkj.la $(PTHREAD_LIBS) libcapnpc_la_LIBADD = libcapnp.la libkj.la $(PTHREAD_LIBS)
libcapnpc_la_LDFLAGS = -release $(VERSION) -no-undefined libcapnpc_la_LDFLAGS = -release $(SO_VERSION) -no-undefined
libcapnpc_la_SOURCES= \ libcapnpc_la_SOURCES= \
src/capnp/compiler/md5.h \ src/capnp/compiler/md5.h \
src/capnp/compiler/md5.c++ \ src/capnp/compiler/md5.c++ \
......
...@@ -40,6 +40,7 @@ TEST(Common, Version) { ...@@ -40,6 +40,7 @@ TEST(Common, Version) {
kj::StringPtr actualVersion = VERSION; kj::StringPtr actualVersion = VERSION;
KJ_ASSERT(actualVersion == expectedVersion || KJ_ASSERT(actualVersion == expectedVersion ||
actualVersion.startsWith(kj::str(expectedVersion, '-')) || actualVersion.startsWith(kj::str(expectedVersion, '-')) ||
actualVersion.startsWith(kj::str(expectedVersion, '.')) ||
(actualVersion == devVersion && CAPNP_VERSION_MICRO == 0), (actualVersion == devVersion && CAPNP_VERSION_MICRO == 0),
expectedVersion, actualVersion); expectedVersion, actualVersion);
#endif #endif
......
...@@ -27,7 +27,7 @@ get_version() { ...@@ -27,7 +27,7 @@ get_version() {
} }
get_release_version() { get_release_version() {
get_version '^[0-9]+[.][0-9]+[.][0-9]+(-rc[0-9]+)?$' get_version '^[0-9]+[.][0-9]+[.][0-9]+(-rc[0-9]+|[.][0-9]+)?$'
} }
update_version() { update_version() {
...@@ -238,9 +238,9 @@ case "${1-}:$BRANCH" in ...@@ -238,9 +238,9 @@ case "${1-}:$BRANCH" in
echo "Updating version number to $NEW_VERSION..." echo "Updating version number to $NEW_VERSION..."
echo "=========================================================================" echo "========================================================================="
doit sed -i -re "s/capnproto-c[+][+]-[0-9]+[.][0-9]+[.][0-9]+\>/capnproto-c++-$NEW_VERSION/g" doc/install.md doit sed -i -re "s/capnproto-c[+][+]-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-c++-$NEW_VERSION/g" doc/install.md
doit sed -i -re "s/capnproto-c[+][+]-win32-[0-9]+[.][0-9]+[.][0-9]+\>/capnproto-c++-win32-$NEW_VERSION/g" doc/install.md 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
doit sed -i -re "s/capnproto-tools-win32-[0-9]+[.][0-9]+[.][0-9]+\>/capnproto-tools-win32-$NEW_VERSION/g" doc/install.md 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
update_version $OLD_VERSION $NEW_VERSION "release branch" update_version $OLD_VERSION $NEW_VERSION "release branch"
doit git tag v$NEW_VERSION doit git tag v$NEW_VERSION
...@@ -250,6 +250,39 @@ case "${1-}:$BRANCH" in ...@@ -250,6 +250,39 @@ case "${1-}:$BRANCH" in
done_banner $NEW_VERSION "v$NEW_VERSION release-$NEW_VERSION" yes done_banner $NEW_VERSION "v$NEW_VERSION release-$NEW_VERSION" yes
;; ;;
# ======================================================================================
security:release-* )
echo "Security release."
OLD_VERSION=$(get_release_version)
if [[ $OLD_VERSION == *-rc* ]]; then
echo "Security releases don't have candidates." >&2
exit 1
fi
declare -a VERSION_ARR=(${OLD_VERSION//./ } 0)
NEW_VERSION=${VERSION_ARR[0]}.${VERSION_ARR[1]}.${VERSION_ARR[2]}.$((VERSION_ARR[3] + 1))
echo "Version: $NEW_VERSION"
echo "========================================================================="
echo "Updating version number to $NEW_VERSION..."
echo "========================================================================="
doit sed -i -re "s/capnproto-c[+][+]-[0-9]+[.][0-9]+[.][0-9]+([.][0-9]+)?\>/capnproto-c++-$NEW_VERSION/g" doc/install.md
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
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
update_version $OLD_VERSION $NEW_VERSION "release branch"
cherry_pick "$@"
doit git tag v$NEW_VERSION
build_packages $NEW_VERSION
done_banner $NEW_VERSION "v$NEW_VERSION release-$NEW_VERSION" yes
;;
# ====================================================================================== # ======================================================================================
retry:release-* ) retry:release-* )
echo "Retrying release." echo "Retrying release."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment