Skip to content

Commit

Permalink
Make GIT_REV logic work in release tarballs
Browse files Browse the repository at this point in the history
Currently GIT_REV doesn't get set properly when building a release
tarball. To fix this we arrange for .gitcommit to contain the (short)
commit hash in tarballs generated with git-archive(1) using export-subst in
gitattributes. This way the correct commit hash is (reproducibly) included
in the release tarballs while not burdening the maintainers with updating
it in the git repo.

Please note this even works on Github and similar forges as they use
git-archive for generating tarballs so this works out quite nicely.
  • Loading branch information
DanielG committed May 25, 2022
1 parent cffec1f commit 222e7a2
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.v linguist-language=Verilog
/.gitcommit export-subst
1 change: 1 addition & 0 deletions .gitcommit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$Format:%h$
11 changes: 11 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,18 @@ LDLIBS += -lrt
endif

YOSYS_VER := 0.17+41

# Note: We arrange for .gitcommit to contain the (short) commit hash in
# tarballs generated with git-archive(1) using .gitattributes. The git repo
# will have this file in its unexpanded form tough, in which case we fall
# back to calling git directly.
TARBALL_GIT_REV := $(shell cat $(YOSYS_SRC)/.gitcommit)
ifeq ($(TARBALL_GIT_REV),$$Format:%h$$)
GIT_REV := $(shell git ls-remote $(YOSYS_SRC) HEAD -q | $(AWK) 'BEGIN {R = "UNKNOWN"}; ($$2 == "HEAD") {R = substr($$1, 1, 9); exit} END {print R}')
else
GIT_REV := $(TARBALL_GIT_REV)
endif

OBJS = kernel/version_$(GIT_REV).o

bumpversion:
Expand Down

0 comments on commit 222e7a2

Please sign in to comment.