[Sound-open-firmware] [PATCH] version: improve git version for build and IPC
Improve the git version and include last commit for IPC version message.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com --- .gitignore | 3 + Makefile.am | 13 ++-- configure.ac | 6 +- git-version-gen | 170 ---------------------------------------------------- git-version.sh | 10 ++++ src/ipc/intel-ipc.c | 3 +- 6 files changed, 26 insertions(+), 179 deletions(-) delete mode 100755 git-version-gen create mode 100755 git-version.sh
diff --git a/.gitignore b/.gitignore index 5cb1d71..9223f60 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ *.rom *.man .version +.tarball-version
Makefile Makefile.in @@ -27,9 +28,11 @@ CHANGELOG ltmain.sh m4/* libtool +src/include/version.h
autom4te* config.* *.gz *.xz src/arch/xtensa/reef +reef-v* diff --git a/Makefile.am b/Makefile.am index b3dcce6..c47580e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,9 +15,12 @@ export ARCH_INCDIR = \ export PLATFORM_INCDIR = \ -I $(SRC_DIR)/platform/$(PLATFORM)/include
-BUILT_SOURCES = $(top_srcdir)/.version -$(top_srcdir)/.version: - echo $(VERSION) > $@-t && mv $@-t $@ +BUILT_SOURCES = $(top_srcdir)/src/include/version.h + +$(top_srcdir)/src/include/version.h: + ./git-version.sh + dist-hook: - echo $(VERSION) > $(distdir)/.tarball-version - echo $(VERSION) > $(distdir)/.version + ./git-version.sh + cat .version > $(distdir)/.tarball-version + cat .version > $(distdir)/.version diff --git a/configure.ac b/configure.ac index 71e7795..7c1acf4 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@
AC_PREREQ([2.69]) -AC_INIT([Reef],[m4_esyscmd(./git-version-gen .tarball-version)],[sound-open-firmware@alsa-project.org]) +AC_INIT([Reef],[m4_esyscmd(./git-version.sh)],[sound-open-firmware@alsa-project.org]) AC_CONFIG_SRCDIR([src/init/init.c]) AC_CONFIG_HEADERS([src/include/config.h]) AC_CONFIG_MACRO_DIRS([m4]) @@ -10,8 +10,8 @@ AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability subdir-objects silent-rule AM_MAINTAINER_MODE([enable])
# get version info from git -m4_define(reef_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`) -m4_define(reef_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`) +m4_define(reef_major, `cat .version | cut -dv -f2 | cut -d. -f1`) +m4_define(reef_minor, `cat .version | cut -d. -f2 | cut -d- -f1`) AC_DEFINE_UNQUOTED([REEF_MAJOR], reef_major, [Reef major version]) AC_DEFINE_UNQUOTED([REEF_MINOR], reef_minor, [Reef minor version])
diff --git a/git-version-gen b/git-version-gen deleted file mode 100755 index 7546884..0000000 --- a/git-version-gen +++ /dev/null @@ -1,170 +0,0 @@ -#!/bin/sh -# Print a version string. -scriptversion=2012-09-25.20 - -# Copyright (C) 2007-2008 Free Software Foundation -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see http://www.gnu.org/licenses/. - -# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. -# It may be run two ways: -# - from a git repository in which the "git describe" command below -# produces useful output (thus requiring at least one signed tag) -# - from a non-git-repo directory containing a .tarball-version file, which -# presumes this script is invoked like "./git-version-gen .tarball-version". - -# In order to use intra-version strings in your project, you will need two -# separate generated version string files: -# -# .tarball-version - present only in a distribution tarball, and not in -# a checked-out repository. Created with contents that were learned at -# the last time autoconf was run, and used by git-version-gen. Must not -# be present in either $(srcdir) or $(builddir) for git-version-gen to -# give accurate answers during normal development with a checked out tree, -# but must be present in a tarball when there is no version control system. -# Therefore, it cannot be used in any dependencies. GNUmakefile has -# hooks to force a reconfigure at distribution time to get the value -# correct, without penalizing normal development with extra reconfigures. -# -# .version - present in a checked-out repository and in a distribution -# tarball. Usable in dependencies, particularly for files that don't -# want to depend on config.h but do want to track version changes. -# Delete this file prior to any autoconf run where you want to rebuild -# files to pick up a version string change; and leave it stale to -# minimize rebuild time after unrelated changes to configure sources. -# -# It is probably wise to add these two files to .gitignore, so that you -# don't accidentally commit either generated file. -# -# Use the following line in your configure.ac, so that $(VERSION) will -# automatically be up-to-date each time configure is run (and note that -# since configure.ac no longer includes a version string, Makefile rules -# should not depend on configure.ac for version updates). -# -# AC_INIT([GNU project], -# m4_esyscmd([build-aux/git-version-gen .tarball-version]), -# [bug-project@example]) -# -# Then use the following lines in your Makefile.am, so that .version -# will be present for dependencies, and so that .tarball-version will -# exist in distribution tarballs. -# -# BUILT_SOURCES = $(top_srcdir)/.version -# $(top_srcdir)/.version: -# echo $(VERSION) > $@-t && mv $@-t $@ -# dist-hook: -# echo $(VERSION) > $(distdir)/.tarball-version -# echo $(VERSION) > $(distdir)/.version - -case $# in - 1) ;; - *) echo 1>&2 "Usage: $0 $srcdir/.tarball-version"; exit 1;; -esac - -tarball_version_file=$1 -nl=' -' -v= - -# First see if there is a tarball-only version file. -# then try "git describe", then default. -if test -f $tarball_version_file -then - v=`cat $tarball_version_file` || exit 1 - case $v in - *$nl*) v= ;; # reject multi-line output - [0-9]*) ;; - *) v= ;; - esac - test -z "$v" \ - && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2 -fi - -# This is presently used by the GNOME-OSTree build system; it -# helps support the case where the meta-build system has already -# determined the git revision, but we may not be able to run "git describe" -# because we're inside a chroot. -if test -n "$GIT_DESCRIBE_FOR_BUILD"; -then - v=$GIT_DESCRIBE_FOR_BUILD -fi - -if test -n "$v" -then - : # use $v -elif test -e .git \ - && v=`git describe --abbrev=4 --match='v[0-9]*' HEAD 2>/dev/null` \ - && [ -n "$v" ] -then - # If we are on a "dev" tag, we need to check that it is not the same - # reference as the a previous version tag (this only happens when we are - # working with a release tag). - # NB The below trick relies on the $v being an exact tag to work which - # will only work when HEAD == tag. When further commits have been made on top - # of the tag, the $v will be supplimented with the number of commits since - # that tag and the commit ref of the most recent commit and thus will - # fail the test below (as intended) - v2=`git describe --abbrev=4 --match='v[0-9].[0-9]' --contains $v 2>/dev/null | cut -d'^' -f1` - [ -n "$v2" ] && v=$v2 - - # Is this a new git that lists number of commits since the last - # tag or the previous older version that did not? - # Newer: v6.10-77-g0f8faeb - # Older: v6.10-g0f8faeb -# case $v in -# *-*-*) : git describe is okay three part flavor ;; -# *-*) -# : git describe is older two part flavor -# # Recreate the number of commits and rewrite such that the -# # result is the same as if we were using the newer version -# # of git describe. -# vtag=`echo "$v" | sed 's/-.*//'` -# numcommits=`git rev-list "$vtag"..HEAD | wc -l` -# v=`echo "$v" | sed "s/(.*)-(.*)/\1-$numcommits-\2/"`; -# ;; -# esac - - # Change the first '-' to a '.', so version-comparing tools work properly. - # Remove the "g" in git describe's output string, to save a byte. -# v=`echo "$v" | sed 's/-/./;s/(.*)-g/\1-/'`; - : -else - echo 1>&2 "$0: Failed to determine git revision" - exit 1 -fi - -v=`echo "$v" |sed 's/^v//'` - -# Don't declare a version "dirty" merely because a time stamp has changed. -git status > /dev/null 2>&1 - -dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty= -case "$dirty" in - '') ;; - *) # Append the suffix only if there isn't one already. - case $v in - *-dirty) ;; - *) v="$v-dirty" ;; - esac ;; -esac - -# Omit the trailing newline, so that m4_esyscmd can use the result directly. -echo "$v" | tr -d '\012' - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/git-version.sh b/git-version.sh new file mode 100755 index 0000000..f8f1e58 --- /dev/null +++ b/git-version.sh @@ -0,0 +1,10 @@ + +# version for configure +echo -n `git describe --abbrev=4` + +# version for make dist +git describe --abbrev=4 > .version +git describe --abbrev=4 > .tarball-version + +# git commit for IPC +echo "#define REEF_BUILD "`git describe --abbrev=4 | cut -d- -f3`"" > src/include/version.h diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c index b7ecbba..6f5c54f 100644 --- a/src/ipc/intel-ipc.c +++ b/src/ipc/intel-ipc.c @@ -59,6 +59,7 @@ #include <uapi/intel-ipc.h> #include <reef/intel-ipc.h> #include <config.h> +#include <version.h>
/* convert DSP mailbox address to host offset */ #define to_host_offset(_s) \ @@ -123,7 +124,7 @@ static const struct ipc_intel_ipc_fw_version fw_version = { .minor = REEF_MINOR, .major = REEF_MAJOR, .type = 0, - .fw_build_hash = VERSION, + .fw_build_hash = REEF_BUILD, .fw_log_providers_hash = 0, };
participants (1)
-
Liam Girdwood