Skip to content

Commit

Permalink
Change version labels to work better with GIT
Browse files Browse the repository at this point in the history
 - 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
  • Loading branch information
dbrownell committed Oct 7, 2009
1 parent 0da2f75 commit b1f7b35
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 15 deletions.
2 changes: 1 addition & 1 deletion configure.in
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>])
AC_CONFIG_SRCDIR([src/openocd.c])

Expand Down
6 changes: 3 additions & 3 deletions doc/manual/release.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
83 changes: 79 additions & 4 deletions guess-rev.sh
Original file line number Diff line number Diff line change
@@ -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.
#

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}.
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

REV=unknown
# 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
exit
fi

echo -n $REV
# There's no reecognized repository; we must be a snapshot.
printf -- '-snapshot'
6 changes: 4 additions & 2 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/openocd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
8 changes: 4 additions & 4 deletions tools/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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}" ] || \
Expand All @@ -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=
}
Expand All @@ -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}"
Expand Down

0 comments on commit b1f7b35

Please sign in to comment.