diff options
author | Herbert Valerio Riedel <hvr@gnu.org> | 2014-11-27 10:50:51 +0100 |
---|---|---|
committer | Herbert Valerio Riedel <hvr@gnu.org> | 2014-11-27 21:59:02 +0100 |
commit | 73e5e2f8bade2d8b2b1ecae958fe12d0b24591ef (patch) | |
tree | db399728d04c46d1e6d08c20863c9c2263c889a8 /ghc.mk | |
parent | 01f03cb30426fad1b848051fa142c04c8816a80c (diff) | |
download | haskell-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 'ghc.mk')
-rw-r--r-- | ghc.mk | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -1109,13 +1109,27 @@ SRC_DIST_GHC_DIRS = mk rules docs distrib bindisttest libffi includes \ SRC_DIST_GHC_FILES += \ configure.ac config.guess config.sub configure \ aclocal.m4 README ANNOUNCE HACKING LICENSE Makefile install-sh \ - settings.in VERSION \ + settings.in VERSION GIT_COMMIT_ID \ boot packages ghc.mk VERSION : echo $(ProjectVersion) >VERSION -sdist : VERSION +.PHONY: GIT_COMMIT_ID +GIT_COMMIT_ID: + @if test -d .git && test "`git rev-parse HEAD`" != "$(ProjectGitCommitId)"; then \ + echo "******************************************************************************"; \ + echo "Stale ProjectGitCommitId (=$(ProjectGitCommitId)) detected!"; \ + echo "'git rev-parse HEAD' says: `git rev-parse HEAD`"; \ + echo "Please re-run './configure' before creating source-distribution"; \ + echo "******************************************************************************"; \ + exit 1; \ + fi + @if test -f $@ && test "`cat $@`" = "$(ProjectGitCommitId)"; \ + then echo "$@ needs no update"; \ + else echo "update $@ ($(ProjectGitCommitId))"; echo -n "$(ProjectGitCommitId)" > $@; fi + +sdist : VERSION GIT_COMMIT_ID # Use: # $(call sdist_ghc_file,compiler,stage2,cmm,Foo/Bar,CmmLex,x) |