[lockdev-devel] [PATCH 08/10] build: Add git-based version and release scripts
Roger Leigh
rleigh at debian.org
Sun Feb 28 00:00:08 UTC 2010
---
SHLIBS | 3 +++
bootstrap | 16 ++++++++++++++++
configure.ac | 29 ++++++++++++++++++++++++++---
scripts/git-tag-release | 14 ++++++++++++++
scripts/git-version | 26 ++++++++++++++++++++++++++
src/Makefile.am | 2 +-
6 files changed, 86 insertions(+), 4 deletions(-)
create mode 100644 SHLIBS
create mode 100755 bootstrap
create mode 100755 scripts/git-tag-release
create mode 100755 scripts/git-version
diff --git a/SHLIBS b/SHLIBS
new file mode 100644
index 0000000..8131adb
--- /dev/null
+++ b/SHLIBS
@@ -0,0 +1,3 @@
+LOCKDEV_CURRENT_INTERFACE=1
+LOCKDEV_INTERFACE_AGE=0
+LOCKDEV_BINARY_AGE=0
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 0000000..5583138
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+# Generate version information from git release tag
+
+./scripts/git-version > VERSION
+
+# To satisfy automake
+touch ChangeLog
+
+# Bootstrap autotools
+autoreconf --verbose --force --install
+
+rm -rf autom4te.cache
+rm -f config.h.in~
diff --git a/configure.ac b/configure.ac
index 76d613d..533e228 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,14 +1,37 @@
-AC_INIT([lockdev],[1.0.3],[lockdev-devel at lists.alioth.debian.org])
+m4_define([lockdev_m4_chomp],
+[m4_format([[%.*s]], m4_bregexp(m4_translit([$1], [
+]]m4_dquote(_m4_defn([m4_cr_all]))[, [/]]m4_format([%255s], [])[),
+ [/*$]), [$1])])
+m4_define([lockdev_m4_esyscmd_s],
+[lockdev_m4_chomp(m4_esyscmd([$1]))])
+dnl Quoting the first argument results in a bizarrely corrupted package tarname
+AC_INIT(lockdev_m4_esyscmd_s([sed -ne '/^Package:/{s/Package:[[:space:]][[:space:]]*//p;q}' VERSION]),
+ [lockdev_m4_esyscmd_s([sed -ne '/^Version:/{s/Version:[[:space:]][[:space:]]*//p;q}' VERSION])],
+ [lockdev-devel at lists.alioth.debian.org])
AC_CONFIG_SRCDIR([src/lockdev.c])
-AM_CONFIG_HEADER([config.h])
+AC_CONFIG_AUX_DIR([scripts])
+AC_CONFIG_HEADER([config.h])
AC_CONFIG_MACRO_DIR([m4])
AC_PREREQ(2.53)
AC_CANONICAL_HOST
-AM_INIT_AUTOMAKE([1.6 foreign no-dist-gzip dist-bzip2 -Wall])
+
+. "${srcdir}/SHLIBS"
+AC_SUBST([LOCKDEV_CURRENT_INTERFACE])
+AC_SUBST([LOCKDEV_INTERFACE_AGE])
+AC_SUBST([LOCKDEV_BINARY_AGE])
+
+AM_INIT_AUTOMAKE([1.6 gnu no-dist-gzip dist-bzip2 -Wall])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
+RELEASE_DATE='lockdev_m4_esyscmd_s(date --date='lockdev_m4_esyscmd_s([sed -ne '/^Release-Date:/{s/Release-Date:[[:space:]][[:space:]]*//p;q}' VERSION])' '+%s')'
+RELEASE_DATE_S='lockdev_m4_esyscmd_s([sed -ne '/^Release-Date:/{s/Release-Date:[[:space:]][[:space:]]*//p;q}' VERSION])'
+AC_DEFINE_UNQUOTED([RELEASE_DATE_S], ["$RELEASE_DATE_S"], [Package release date (string).])
+AC_DEFINE_UNQUOTED([RELEASE_DATE], [$RELEASE_DATE], [Package release date (integer).])
+AC_SUBST([RELEASE_DATE])
+AC_SUBST([RELEASE_DATE_S])
+
dnl Checks for programs.
AC_PROG_CC
diff --git a/scripts/git-tag-release b/scripts/git-tag-release
new file mode 100755
index 0000000..fb8a5e8
--- /dev/null
+++ b/scripts/git-tag-release
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+PACKAGE="$(sed -ne '/^Welcome to /{s/Welcome to[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:]]*\)[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:].-]*\)\..*/\1/p;q}' < NEWS)"
+VERSION="$(sed -ne '/^Welcome to /{s/Welcome to[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:]]*\)[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:].-]*\)\..*/\2/p;q}' < NEWS)"
+
+if [ -z "$PACKAGE" ] || [ -z "$VERSION" ]; then
+ echo "Error parsing package name and version from NEWS"
+ exit 1
+fi
+
+echo "Tagging ${PACKAGE} version ${VERSION} as 'release/${PACKAGE}-${VERSION}'"
+git tag -s "release/${PACKAGE}-${VERSION}" -m "${PACKAGE} version ${VERSION}"
diff --git a/scripts/git-version b/scripts/git-version
new file mode 100755
index 0000000..1d6e83f
--- /dev/null
+++ b/scripts/git-version
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+PACKAGE="$(sed -ne '/^Welcome to /{s/Welcome to[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:]]*\)[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:].-]*\)\..*/\1/p;q}' < NEWS)"
+VERSION="$(sed -ne '/^Welcome to /{s/Welcome to[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:]]*\)[[:space:]][[:space:]]*\([[:alnum:]][[:alnum:].-]*\)\..*/\2/p;q}' < NEWS)"
+
+TAG="release/${PACKAGE}-${VERSION}"
+COMMIT="$(git rev-parse "$TAG^{}")" 2>/dev/null || COMMIT=""
+
+if [ -n "$COMMIT" ]; then
+ COMMIT_DATE="$(git log -1 "$COMMIT" --pretty="format:%ai")"
+
+ RELEASE_DATE="$(date --date="$COMMIT_DATE" '+%d %b %Y')"
+ RELEASE_BY="$(git show "$TAG" | sed -ne '/^Tagger:/{s/Tagger:[[:space:]][[:space:]]*//p;q}')"
+else
+ RELEASE_DATE="$(date '+%d %b %Y')"
+ RELEASE_BY="Unreleased"
+fi
+
+echo "Package: $PACKAGE"
+echo "Version: $VERSION"
+echo "Release-Date: $RELEASE_DATE"
+echo "Released-By: $RELEASE_BY"
+
+if [ -n "$COMMIT" ]; then
+ echo "Git-Tag: $TAG"
+fi
diff --git a/src/Makefile.am b/src/Makefile.am
index 3b4adda..e0d5b8f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,4 +14,4 @@ baudboy_LDADD = liblockdev.la
lib_LTLIBRARIES = liblockdev.la
liblockdev_la_SOURCES = lockdev.c
-liblockdev_la_LDFLAGS = -version-info 1:3:0
+liblockdev_la_LDFLAGS = -version-info $(LOCKDEV_CURRENT_INTERFACE):$(LOCKDEV_INTERFACE_AGE):$(LOCKDEV_BINARY_AGE)
--
1.7.0
More information about the lockdev-devel
mailing list