Change version labels to work better with GIT

- The guess-rev.sh script is now a tweaked version of "setlocalversion" as
   seen in Linux, U-Boot, and various other projects.  When it finds source
   control support (git, hg, svn) it uses IDs from there.  Else (specific
   to this project) it reports itself as "-snapshot", e.g. from gitweb.

   I verified this new "guess-rev.sh" script runs under Cygwin.

 - Also update the generic version strings to be like "0.3.0-dev" (during
   development) instead of the very long "0.3.0-in-development".  These also
   show up in the PDF docs.  For better tracking, we might eventually change
   these strings to include the version IDs too.

 - Change the startup banner version strings so they include the guess-rev
   output.  Development and release versions with GIT will be like

    Open On-Chip Debugger 0.3.0-dev-00282-g7191a4f-dirty (2009-10-05-20:57) 
    Open On-Chip Debugger 0.3.0 (2009-10-05-20:57) 

   instead of the previous SVN-specific (even when using git-svn!)

    Open On-Chip Debugger 0.3.0-in-development (2009-10-05-01:39) svn:exported
    Open On-Chip Debugger 0.3.0 (2009-10-05-01:39) Release



git-svn-id: svn://svn.berlios.de/openocd/trunk@2809 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
dbrownell 2009-10-07 05:43:05 +00:00
parent 0da2f750a1
commit b1f7b35983
6 changed files with 92 additions and 15 deletions

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.60) AC_PREREQ(2.60)
AC_INIT([openocd], [0.3.0-in-development], AC_INIT([openocd], [0.3.0-dev],
[OpenOCD Mailing List <openocd-development@lists.berlios.de>]) [OpenOCD Mailing List <openocd-development@lists.berlios.de>])
AC_CONFIG_SRCDIR([src/openocd.c]) AC_CONFIG_SRCDIR([src/openocd.c])

View File

@ -62,9 +62,9 @@ the minor version will @a also be zero (<code>y = 0, z = 0</code>).
@subsection releaseversiontags Version Tags @subsection releaseversiontags Version Tags
After these required numeric components, the version string may contain After these required numeric components, the version string may contain
one or more <i>version tags</i>, such as '-rc1' or '-in-development'. one or more <i>version tags</i>, 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 their version number. This tag helps developers identify reports
created from the Subversion repository, and it can be detected and created from the Subversion repository, and it can be detected and
manipulated by the release script. Specifically, this tag will be 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. - This material should be produced during the development cycle.
- Add a new item for each @c NEWS-worthy contribution, when committed. - Add a new item for each @c NEWS-worthy contribution, when committed.
-# bump library version if our API changed (not yet required) -# 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 major/minor releases, remove version tag from trunk, @a or
- For bug-fix releases, remove version tag from release branch. - For bug-fix releases, remove version tag from release branch.
-# Branch or tag the required tree in the Subversion repository: -# Branch or tag the required tree in the Subversion repository:

View File

@ -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'

View File

@ -28,10 +28,12 @@ AM_CPPFLAGS = \
libopenocd_la_CPPFLAGS = -DPKGBLDDATE=\"`date +%F-%R`\" 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 if RELEASE
libopenocd_la_CPPFLAGS += -DRELSTR=\"Release\" -DPKGBLDREV=\"\" libopenocd_la_CPPFLAGS += -DRELSTR=\"\"
else 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 endif
# add default CPPFLAGS # add default CPPFLAGS

View File

@ -49,7 +49,7 @@
#define OPENOCD_VERSION \ #define OPENOCD_VERSION \
"Open On-Chip Debugger " VERSION " (" PKGBLDDATE ") " RELSTR PKGBLDREV "Open On-Chip Debugger " VERSION RELSTR " (" PKGBLDDATE ")"
static void print_version(void) static void print_version(void)
{ {

View File

@ -97,7 +97,7 @@ package_info_load() {
PACKAGE_VERSION="$(package_info_load_version)" PACKAGE_VERSION="$(package_info_load_version)"
[ "${RELEASE_VERSION}" ] || \ [ "${RELEASE_VERSION}" ] || \
RELEASE_VERSION=${PACKAGE_VERSION/-in-development/} RELEASE_VERSION=${PACKAGE_VERSION/-dev/}
[ "${PACKAGE_NAME}" -a "${PACKAGE_VERSION}" ] || \ [ "${PACKAGE_NAME}" -a "${PACKAGE_VERSION}" ] || \
die "package information is missing from configure script" die "package information is missing from configure script"
@ -427,7 +427,7 @@ do_commit() {
package_info_load package_info_load
svn_setup_load svn_setup_load
[ "${PACKAGE_VERSION/in-development/}" = "${PACKAGE_VERSION}" ] || \ [ "${PACKAGE_VERSION/dev/}" = "${PACKAGE_VERSION}" ] || \
die "'${PACKAGE_NAME}-${PACKAGE_VERSION}' cannot be released" die "'${PACKAGE_NAME}-${PACKAGE_VERSION}' cannot be released"
[ "${PACKAGE_VERSION%.0}" = "${PACKAGE_VERSION}" ] || \ [ "${PACKAGE_VERSION%.0}" = "${PACKAGE_VERSION}" ] || \
@ -437,7 +437,7 @@ do_commit() {
do_release_step_prep() { 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 # reset RELEASE_VERSION now to allow release version to be detected
export RELEASE_VERSION= export RELEASE_VERSION=
} }
@ -447,7 +447,7 @@ do_release_step_branch_bump() {
local TYPE="$1" local TYPE="$1"
echo "Bump ${TYPE} version and add tag:" echo "Bump ${TYPE} version and add tag:"
do_version_bump ${TYPE} do_version_bump ${TYPE}
do_version_tag_add in-development do_version_tag_add dev
} }
do_release_step_branch() { do_release_step_branch() {
do_svn_switch "${PACKAGE_BRANCH}" do_svn_switch "${PACKAGE_BRANCH}"