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
lib_LTLIBRARIES = libkj.la libkj-async.la libcapnp.la libcapnp-rpc.la libcapnpc.la
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_LDFLAGS = -release $(VERSION) -no-undefined
libkj_la_LDFLAGS = -release $(SO_VERSION) -no-undefined
libkj_la_SOURCES= \
src/kj/common.c++ \
src/kj/units.c++ \
......@@ -230,7 +234,7 @@ libkj_la_SOURCES= \
if !LITE_MODE
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= \
src/kj/async.c++ \
src/kj/async-unix.c++ \
......@@ -247,7 +251,7 @@ heavy_sources = \
endif !LITE_MODE
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= \
src/capnp/c++.capnp.c++ \
src/capnp/blob.c++ \
......@@ -265,7 +269,7 @@ libcapnp_la_SOURCES= \
if !LITE_MODE
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= \
src/capnp/serialize-async.c++ \
src/capnp/capability.c++ \
......@@ -278,7 +282,7 @@ libcapnp_rpc_la_SOURCES= \
src/capnp/ez-rpc.c++
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= \
src/capnp/compiler/md5.h \
src/capnp/compiler/md5.c++ \
......
......@@ -40,6 +40,7 @@ TEST(Common, Version) {
kj::StringPtr actualVersion = VERSION;
KJ_ASSERT(actualVersion == expectedVersion ||
actualVersion.startsWith(kj::str(expectedVersion, '-')) ||
actualVersion.startsWith(kj::str(expectedVersion, '.')) ||
(actualVersion == devVersion && CAPNP_VERSION_MICRO == 0),
expectedVersion, actualVersion);
#endif
......
......@@ -27,7 +27,7 @@ get_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() {
......@@ -238,9 +238,9 @@ case "${1-}:$BRANCH" in
echo "Updating version number to $NEW_VERSION..."
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[+][+]-win32-[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-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"
doit git tag v$NEW_VERSION
......@@ -250,6 +250,39 @@ case "${1-}:$BRANCH" in
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-* )
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