diff --git a/configure.in b/configure.in index 6febcb237..8e2881cf4 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_PREREQ(2.60) -AC_INIT([openocd], [0.3.0-in-development], +AC_INIT([openocd], [0.3.0-dev], [OpenOCD Mailing List ]) AC_CONFIG_SRCDIR([src/openocd.c]) diff --git a/doc/manual/release.txt b/doc/manual/release.txt index c47796607..2ba652de2 100644 --- a/doc/manual/release.txt +++ b/doc/manual/release.txt @@ -62,9 +62,9 @@ the minor version will @a also be zero (y = 0, z = 0). @subsection releaseversiontags Version Tags After these required numeric components, the version string may contain -one or more version tags, such as '-rc1' or '-in-development'. +one or more version tags, such as '-rc1' or '-dev'. -The trunk and all branches should have the tag '-in-development' in +The trunk and all branches should have the tag '-dev' in their version number. This tag helps developers identify reports created from the Subversion repository, and it can be detected and manipulated by the release script. Specifically, this tag will be @@ -218,7 +218,7 @@ The following steps should be followed to produce each release: - This material should be produced during the development cycle. - Add a new item for each @c NEWS-worthy contribution, when committed. -# bump library version if our API changed (not yet required) - -# Remove -in-development tag from package version: + -# Remove -dev tag from package version in configure.in: - For major/minor releases, remove version tag from trunk, @a or - For bug-fix releases, remove version tag from release branch. -# Branch or tag the required tree in the Subversion repository: diff --git a/guess-rev.sh b/guess-rev.sh index aee6770df..7adbe2817 100755 --- a/guess-rev.sh +++ b/guess-rev.sh @@ -1,8 +1,83 @@ -#!/bin/bash +#!/bin/sh +# +# This scripts adds local version information from the version +# control systems git, mercurial (hg) and subversion (svn). +# +# Copied from Linux 2.6.32 scripts/setlocalversion and modified +# slightly to work better for OpenOCD. # -REV=unknown +usage() { + echo "Usage: $0 [srctree]" >&2 + exit 1 +} -which svnversion > /dev/null 2>&1 && REV=`svnversion -n "$1"` +cd "${1:-.}" || usage -echo -n $REV +# Check for git and a git repo. +if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then + + # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it, + # because this version is defined in the top level Makefile. + if [ -z "`git describe --exact-match 2>/dev/null`" ]; then + + # If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"), + # we pretty print it. + if atag="`git describe 2>/dev/null`"; then + echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' + + # If we don't have a tag at all we print -g{commitish}. + else + printf '%s%s' -g $head + fi + fi + + # Is this git on svn? + if git config --get svn-remote.svn.url >/dev/null; then + printf -- '-svn%s' "`git svn find-rev $head`" + fi + + # Update index only on r/w media + [ -w . ] && git update-index --refresh --unmerged > /dev/null + + # Check for uncommitted changes + if git diff-index --name-only HEAD | grep -v "^scripts/package" \ + | read dummy; then + printf '%s' -dirty + fi + + # All done with git + exit +fi + +# Check for mercurial and a mercurial repo. +if hgid=`hg id 2>/dev/null`; then + tag=`printf '%s' "$hgid" | cut -d' ' -f2` + + # Do we have an untagged version? + if [ -z "$tag" -o "$tag" = tip ]; then + id=`printf '%s' "$hgid" | sed 's/[+ ].*//'` + printf '%s%s' -hg "$id" + fi + + # Are there uncommitted changes? + # These are represented by + after the changeset id. + case "$hgid" in + *+|*+\ *) printf '%s' -dirty ;; + esac + + # All done with mercurial + exit +fi + +# Check for svn and a svn repo. +if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then + rev=`echo $rev | awk '{print $NF}'` + printf -- '-svn%s' "$rev" + + # All done with svn + exit +fi + +# There's no reecognized repository; we must be a snapshot. +printf -- '-snapshot' diff --git a/src/Makefile.am b/src/Makefile.am index 9198d0caf..a223f9512 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,10 +28,12 @@ AM_CPPFLAGS = \ libopenocd_la_CPPFLAGS = -DPKGBLDDATE=\"`date +%F-%R`\" +# banner output includes RELSTR appended to $VERSION from the configure script +# guess-rev.sh returns either a repository version ID or "-snapshot" if RELEASE -libopenocd_la_CPPFLAGS += -DRELSTR=\"Release\" -DPKGBLDREV=\"\" +libopenocd_la_CPPFLAGS += -DRELSTR=\"\" else -libopenocd_la_CPPFLAGS += -DRELSTR=\"svn:\" -DPKGBLDREV=\"`$(top_srcdir)/guess-rev.sh $(top_srcdir)`\" +libopenocd_la_CPPFLAGS += -DRELSTR=\"`$(top_srcdir)/guess-rev.sh $(top_srcdir)`\" endif # add default CPPFLAGS diff --git a/src/openocd.c b/src/openocd.c index 95c2f237d..86b8aaf27 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -49,7 +49,7 @@ #define OPENOCD_VERSION \ - "Open On-Chip Debugger " VERSION " (" PKGBLDDATE ") " RELSTR PKGBLDREV + "Open On-Chip Debugger " VERSION RELSTR " (" PKGBLDDATE ")" static void print_version(void) { diff --git a/tools/release.sh b/tools/release.sh index 106799ceb..f1ed4a73a 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -97,7 +97,7 @@ package_info_load() { 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" @@ -427,7 +427,7 @@ do_commit() { 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}" ] || \ @@ -437,7 +437,7 @@ do_commit() { 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= } @@ -447,7 +447,7 @@ do_release_step_branch_bump() { 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}"