Commit b1f7b359 authored by dbrownell's avatar dbrownell
Browse files

Change version labels to work better with GIT

 - The 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 "" 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:// b42882b7-edfa-0310-969c-e2dbd0fdcd60
parent 0da2f750
AC_INIT([openocd], [0.3.0-in-development],
AC_INIT([openocd], [0.3.0-dev],
[OpenOCD Mailing List <>])
......@@ -62,9 +62,9 @@ the minor version will @a also be zero (<code>y = 0, z = 0</code>).
@subsection releaseversiontags Version Tags
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
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
- 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:
# 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.
usage() {
echo "Usage: $0 [srctree]" >&2
exit 1
cd "${1:-.}" || usage
# 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}.
printf '%s%s' -g $head
# Is this git on svn?
if git config --get svn-remote.svn.url >/dev/null; then
printf -- '-svn%s' "`git svn find-rev $head`"
# 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
# All done with git
# 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"
# Are there uncommitted changes?
# These are represented by + after the changeset id.
case "$hgid" in
*+|*+\ *) printf '%s' -dirty ;;
# All done with mercurial
# 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"
which svnversion > /dev/null 2>&1 && REV=`svnversion -n "$1"`
# All done with svn
echo -n $REV
# There's no reecognized repository; we must be a snapshot.
printf -- '-snapshot'
......@@ -28,10 +28,12 @@ AM_CPPFLAGS = \
libopenocd_la_CPPFLAGS = -DPKGBLDDATE=\"`date +%F-%R`\"
# banner output includes RELSTR appended to $VERSION from the configure script
# returns either a repository version ID or "-snapshot"
libopenocd_la_CPPFLAGS += -DRELSTR=\"Release\" -DPKGBLDREV=\"\"
libopenocd_la_CPPFLAGS += -DRELSTR=\"\"
libopenocd_la_CPPFLAGS += -DRELSTR=\"svn:\" -DPKGBLDREV=\"`$(top_srcdir)/ $(top_srcdir)`\"
libopenocd_la_CPPFLAGS += -DRELSTR=\"`$(top_srcdir)/ $(top_srcdir)`\"
# add default CPPFLAGS
......@@ -49,7 +49,7 @@
"Open On-Chip Debugger " VERSION RELSTR " (" PKGBLDDATE ")"
static void print_version(void)
......@@ -97,7 +97,7 @@ package_info_load() {
[ "${RELEASE_VERSION}" ] || \
[ "${PACKAGE_NAME}" -a "${PACKAGE_VERSION}" ] || \
die "package information is missing from configure script"
......@@ -427,7 +427,7 @@ do_commit() {
[ "${PACKAGE_VERSION/in-development/}" = "${PACKAGE_VERSION}" ] || \
[ "${PACKAGE_VERSION/dev/}" = "${PACKAGE_VERSION}" ] || \
die "'${PACKAGE_NAME}-${PACKAGE_VERSION}' cannot be released"
......@@ -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
......@@ -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}"
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