summaryrefslogtreecommitdiff
path: root/aclocal.m4
diff options
context:
space:
mode:
authorHerbert Valerio Riedel <hvr@gnu.org>2014-11-27 10:50:51 +0100
committerHerbert Valerio Riedel <hvr@gnu.org>2014-11-27 21:59:02 +0100
commit73e5e2f8bade2d8b2b1ecae958fe12d0b24591ef (patch)
treedb399728d04c46d1e6d08c20863c9c2263c889a8 /aclocal.m4
parent01f03cb30426fad1b848051fa142c04c8816a80c (diff)
downloadhaskell-73e5e2f8bade2d8b2b1ecae958fe12d0b24591ef.tar.gz
Embed Git commit id into `ghc --info` output
Since we switched to a Git submodule based GHC Git repo, `ghc.git`'s commit id uniquely identifies the state of the GHC source-tree. So having that information embedded into the `ghc` executable provides valuable information to track accurately (especially when created by buildbots) from which source-tree-state a given `ghc` snapshot (distribution) was generated. So this commit adds a new field `"Project Git commit id"` to the `ghc --info` meta-data containing the `./configure`-time Git commit id as reported by `git rev-parse HEAD`. This field can also be queried with `ghc --print-project-git-commit-id`. For source distributions, the file `GIT_COMMIT_ID` is created (with some sanity checking to detect stale commit ids, as that would render this information rather useless) Reviewed By: austin Differential Revision: https://phabricator.haskell.org/D528
Diffstat (limited to 'aclocal.m4')
-rw-r--r--aclocal.m418
1 files changed, 18 insertions, 0 deletions
diff --git a/aclocal.m4 b/aclocal.m4
index b41bf41559..2aa55d7d84 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1581,11 +1581,29 @@ if test "$RELEASE" = "NO"; then
dnl less likely to go wrong.
PACKAGE_VERSION=${PACKAGE_VERSION}.`date +%Y%m%d`
fi
+
+ AC_MSG_CHECKING([for GHC Git commit id])
+ if test -d .git; then
+ git_commit_id=`git rev-parse HEAD`
+ if test -n "$git_commit_id" 2>&1 >/dev/null; then true; else
+ AC_MSG_ERROR([failed to detect revision: check that git is in your path])
+ fi
+ PACKAGE_GIT_COMMIT_ID=$git_commit_id
+ AC_MSG_RESULT(inferred $PACKAGE_GIT_COMMIT_ID)
+ elif test -f GIT_COMMIT_ID; then
+ PACKAGE_GIT_COMMIT_ID=`cat GIT_COMMIT_ID`
+ AC_MSG_RESULT(given $PACKAGE_GIT_COMMIT_ID)
+ else
+ AC_MSG_WARN([cannot determine snapshot revision: no .git directory and no 'GIT_COMMIT_ID' file])
+ PACKAGE_GIT_COMMIT_ID="0000000000000000000000000000000000000000"
+ fi
+
fi
# Some renamings
AC_SUBST([ProjectName], [$PACKAGE_NAME])
AC_SUBST([ProjectVersion], [$PACKAGE_VERSION])
+AC_SUBST([ProjectGitCommitId], [$PACKAGE_GIT_COMMIT_ID])
# Split PACKAGE_VERSION into (possibly empty) parts
VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`