summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2020-10-28 18:33:22 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2020-10-28 18:33:22 +0900
commit3ba7b5cf2dc98ebe22291928b38a1e79b79f52e0 (patch)
tree1c7bc7fe8f67be4c5b808654c95fa07b03f469ad
parent254e9765fe4285681802f5fe15f575bcf7e1815c (diff)
Make Makefile fail when git information is not available
-rw-r--r--BUILD.md7
-rw-r--r--Makefile19
2 files changed, 24 insertions, 2 deletions
diff --git a/BUILD.md b/BUILD.md
index dba8b22f..711228d3 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -24,6 +24,13 @@ make build
make release
```
+> :warning: Makefile uses git commands to determine the version and the
+> revision information for `fzf --version`. So if you're building fzf from an
+> environment where its git information is not available, you have to manually
+> set `$FZF_VERSION` and `$FZF_REVISION`.
+>
+> e.g. `FZF_VERSION=0.24.0 FZF_REVISION=tarball make`
+
Third-party libraries used
--------------------------
diff --git a/Makefile b/Makefile
index 4308d373..f67bd81e 100644
--- a/Makefile
+++ b/Makefile
@@ -5,10 +5,25 @@ MAKEFILE := $(realpath $(lastword $(MAKEFILE_LIST)))
ROOT_DIR := $(shell dirname $(MAKEFILE))
SOURCES := $(wildcard *.go src/*.go src/*/*.go) $(MAKEFILE)
-VERSION := $(shell git describe --abbrev=0)
+ifdef FZF_VERSION
+VERSION := $(FZF_VERSION)
+else
+VERSION := $(shell git describe --abbrev=0 2> /dev/null)
+endif
+ifeq ($(VERSION),)
+$(error Not on git repository; cannot determine $$FZF_VERSION)
+endif
VERSION_TRIM := $(shell sed "s/-.*//" <<< $(VERSION))
VERSION_REGEX := $(subst .,\.,$(VERSION_TRIM))
-REVISION := $(shell git log -n 1 --pretty=format:%h -- $(SOURCES))
+
+ifdef FZF_REVISION
+REVISION := $(FZF_REVISION)
+else
+REVISION := $(shell git log -n 1 --pretty=format:%h -- $(SOURCES) 2> /dev/null)
+endif
+ifeq ($(REVISION),)
+$(error Not on git repository; cannot determine $$FZF_REVISION)
+endif
BUILD_FLAGS := -a -ldflags "-X main.version=$(VERSION) -X main.revision=$(REVISION) -w '-extldflags=$(LDFLAGS)'" -tags "$(TAGS)"
BINARY64 := fzf-$(GOOS)_amd64