PACKAGE_VERSION="$(package_info_load_version)"
[ "${RELEASE_VERSION}" ] || \
- RELEASE_VERSION=${PACKAGE_VERSION/-in-development/}
+ RELEASE_VERSION=${PACKAGE_VERSION/-dev/}
[ "${PACKAGE_NAME}" -a "${PACKAGE_VERSION}" ] || \
die "package information is missing from configure script"
maybe_build() { [ -f "src/openocd" ] || do_build; }
do_build_clean() { [ -f Makefile ] && make maintainer-clean >/dev/null; }
-maybe_rebuild() {
- if [ -f "configure" ]; then
- echo "Re-running autoconf..."
- autoconf
- echo "Re-running automake..."
- automake
- fi
- if [ -f "Makefile" ]; then
- do_configure
- do_build
- fi
-}
-
do_changelog() {
echo "Updating working copy to HEAD..."
do_svn update
usage: $0 version <command>
Version Commands:
tag {add|remove} <label> Add or remove the specified tag.
- bump {major|minor|micro|rc} Bump the specified version number;
- resets less-significant numbers to zero.
- All but 'rc' releases drop that tag.
+ bump {major|minor|micro} Bump the specified version number, and
+ reset less-significant numbers to zero.
+ bump tag <label> Add or bump a versioned tag (e.g. -rcN).
+ bump final <label> Remove a versioned tag (e.g. -rcN).
USAGE
}
"Bump ${CMD} package version number"
}
do_version_bump_major() {
- has_version_tag 'rc\d' do_version_
do_version_bump_sed "$((PACKAGE_MAJOR + 1)).0.0"
}
do_version_bump_minor() {
do_version_bump_micro() {
do_version_bump_sed "${PACKAGE_MAJOR_AND_MINOR}.$((PACKAGE_MICRO + 1))"
}
-do_version_bump_rc() {
- die "patch missing: -rc support is not implemented"
+do_version_bump_tag() {
+ local TAG="$1"
+ [ "${TAG}" ] || die "TAG argument is missing"
+ local TAGS="${PACKAGE_VERSION_TAGS}"
+ if has_version_tag "${TAG}"; then
+ local RC=$(do_version_tag_value "${TAG}")
+ RC=$((${RC} + 1))
+ TAGS=$(echo ${TAGS} | perl -npe "s/-${TAG}[\\d]*/-${TAG}${RC}/")
+ else
+ TAGS="-${TAG}1${PACKAGE_VERSION_TAGS}"
+ fi
+ PACKAGE_VERSION_TAGS="${TAGS}"
+ do_version_bump_sed "${PACKAGE_VERSION_BASE}"
+}
+do_version_bump_final() {
+ local TAG="$1"
+ [ "${TAG}" ] || die "TAG argument is missing"
+ has_version_tag "${TAG}" || die "-${TAG} tag is missing"
+ do_version_tag_remove "${TAG}$(do_version_tag_value "${TAG}")"
}
do_version_bump() {
CMD="$1"
shift
case "${CMD}" in
- major|minor|micro|rc)
- eval "do_version_bump_${CMD}"
+ major|minor|micro|final|tag)
+ eval "do_version_bump_${CMD}" "$@"
;;
*)
do_version_usage
}
has_version_tag() {
- test "${PACKAGE_VERSION/-${TAG}/}" != "${PACKAGE_VERSION}"
+ test "${PACKAGE_VERSION/-${1}/}" != "${PACKAGE_VERSION}"
+}
+do_version_tag_value() {
+ local TAG="$1"
+ echo ${PACKAGE_VERSION_TAGS} | perl -ne "/-${TAG}"'(\d+)/ && print $1'
}
-
do_version_tag_add() {
local TAG="$1"
- has_version_tag && die "error: tag '-${TAG}' exists in '${PACKAGE_VERSION}'"
+ has_version_tag "${TAG}" && \
+ die "error: tag '-${TAG}' exists in '${PACKAGE_VERSION}'"
do_version_sed "${PACKAGE_VERSION}-${TAG}" \
"Add '-${TAG}' version tag"
}
do_version_tag_remove() {
local TAG="$1"
- has_version_tag || die "error: tag '-${TAG}' missing from '${PACKAGE_VERSION}'"
+ has_version_tag "${TAG}" || \
+ die "error: tag '-${TAG}' missing from '${PACKAGE_VERSION}'"
do_version_sed "${PACKAGE_VERSION/-${TAG}/}" \
"Remove '-${TAG}' version tag"
}
case "${CMD}" in
tag|bump)
do_version_commit "$(eval "do_version_${CMD}" "$@")"
- maybe_rebuild
;;
commit)
local MSG="$1"
[ "${MSG}" ] || die "usage: $0 version commit <message>"
do_version_commit "${MSG}"
- maybe_rebuild
;;
*)
do_version_usage
package_info_load
svn_setup_load
- [ "${PACKAGE_VERSION/in-development/}" = "${PACKAGE_VERSION}" ] || \
+ [ "${PACKAGE_VERSION/dev/}" = "${PACKAGE_VERSION}" ] || \
die "'${PACKAGE_NAME}-${PACKAGE_VERSION}' cannot be released"
[ "${PACKAGE_VERSION%.0}" = "${PACKAGE_VERSION}" ] || \
do_release_step_prep() {
- do_version tag remove in-development
+ do_version tag remove dev
# reset RELEASE_VERSION now to allow release version to be detected
export RELEASE_VERSION=
}
local TYPE="$1"
echo "Bump ${TYPE} version and add tag:"
do_version_bump ${TYPE}
- do_version_tag_add in-development
+ do_version_tag_add dev
}
do_release_step_branch() {
do_svn_switch "${PACKAGE_BRANCH}"
local A=${PACKAGE_TAG}
local B=${A/https/http}
local PACKAGE_BUILD=${B/${USER}@/}
+
do_svn_switch "${PACKAGE_TAG}"
do_svn_switch --relocate "${PACKAGE_TAG}" "${PACKAGE_BUILD}"
+
+ # required to force SVN to update the in-source URL keyword
+ [ "${RELEASE_DRY_RUN}" ] || rm -v -f src/openocd.c
+ do_svn revert src/openocd.c
+
do_stage
do_clean
+
do_svn_switch --relocate "${PACKAGE_BUILD}" "${PACKAGE_TAG}"
do_svn_switch "${SVN_URL}"
}