diff --git a/Makefile.am b/Makefile.am index 6bf013ec9..18ad36d2b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,6 +33,10 @@ distclean-local:: -o -name '*.order' -o -name '*.markers' \) \ -type f -print | xargs $(RM) +dist-hook: + sed -i 's/Release:[[:print:]]*/Release: $(RELEASE)/' \ + $(distdir)/META + ctags: $(RM) $(top_srcdir)/tags find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags diff --git a/config/zfs-meta.m4 b/config/zfs-meta.m4 index a961657cd..2deda715d 100644 --- a/config/zfs-meta.m4 +++ b/config/zfs-meta.m4 @@ -1,10 +1,14 @@ -dnl # -dnl # ZFS_AC_META -dnl # Read metadata from the META file. -dnl # -dnl # AUTHOR: -dnl # Chris Dunlap -dnl # +############################################################################### +# Written by Chris Dunlap . +# Modified by Brian Behlendorf . +############################################################################### +# ZFS_AC_META: Read metadata from the META file. When building from a +# git repository the ZFS_META_RELEASE field will be overwritten if there +# is an annotated tag matching the form ZFS_META_NAME-ZFS_META_VERSION-*. +# This allows for working builds to be uniquely identified using the git +# commit hash. +############################################################################### + AC_DEFUN([ZFS_AC_META], [ AH_BOTTOM([ @@ -20,9 +24,9 @@ AC_DEFUN([ZFS_AC_META], [ AC_MSG_CHECKING([metadata]) META="$srcdir/META" - _zfs_ac_meta_got_file=no + _zfs_ac_meta_type="none" if test -f "$META"; then - _zfs_ac_meta_got_file=yes + _zfs_ac_meta_type="META file" ZFS_META_NAME=_ZFS_AC_META_GETVAL([(?:NAME|PROJECT|PACKAGE)]); if test -n "$ZFS_META_NAME"; then @@ -41,6 +45,16 @@ AC_DEFUN([ZFS_AC_META], [ fi ZFS_META_RELEASE=_ZFS_AC_META_GETVAL([RELEASE]); + if git rev-parse --git-dir > /dev/null 2>&1; then + _match="${ZFS_META_NAME}-${ZFS_META_VERSION}*" + _alias=$(git describe --match=${_match} 2>/dev/null) + _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') + if test -n "${_release}"; then + ZFS_META_RELEASE=${_release} + _zfs_ac_meta_type="git describe" + fi + fi + if test -n "$ZFS_META_RELEASE"; then AC_DEFINE_UNQUOTED([ZFS_META_RELEASE], ["$ZFS_META_RELEASE"], [Define the project release.] @@ -116,7 +130,7 @@ AC_DEFUN([ZFS_AC_META], [ fi fi - AC_MSG_RESULT([$_zfs_ac_meta_got_file]) + AC_MSG_RESULT([$_zfs_ac_meta_type]) ] )