summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArvind Sankar <[email protected]>2020-07-17 17:30:51 -0400
committerBrian Behlendorf <[email protected]>2020-07-22 09:59:36 -0700
commitd32a59fe2b29a7008a820d597a7efa41ccdf2f09 (patch)
treee8a87697057f7b4051f8cb09d265d0cf66d0d8a2
parent5dd92909c6d1ed606aac7c6ffe3df68513bb5ed1 (diff)
Restore scripts/make_gitrev.sh
Commit 109d2c931020 ("Move zfs_gitrev.h to build directory") removed scripts/make_gitrev.sh, putting the logic into the Makefile itself. However, at least the Arch Linux packager wants the script so that the file can be generated without having to run configure first, for DKMS packaging purposes. So move the make recipe back into the script. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Eli Schwartz <[email protected]> Signed-off-by: Arvind Sankar <[email protected]> Closes #10595
-rw-r--r--Makefile.am11
-rw-r--r--scripts/Makefile.am1
-rwxr-xr-xscripts/make_gitrev.sh50
3 files changed, 52 insertions, 10 deletions
diff --git a/Makefile.am b/Makefile.am
index 0c0114661..98cf55880 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -54,16 +54,7 @@ CLEANFILES = $(GITREV)
PHONY = gitrev
gitrev:
- $(AM_V_GEN)ZFS_GITREV=$$(cd $(top_srcdir) && \
- git describe --always --long --dirty 2>/dev/null); \
- ZFS_GITREV=$${ZFS_GITREV:-unknown}; \
- printf '#define\tZFS_META_GITREV "%s"\n' \
- "$${ZFS_GITREV}" >$(GITREV)~; \
- if cmp -s $(GITREV) $(GITREV)~; then \
- $(RM) $(GITREV)~; \
- else \
- mv -f $(GITREV)~ $(GITREV); \
- fi
+ $(AM_V_GEN)$(top_srcdir)/scripts/make_gitrev.sh $(GITREV)
all: gitrev
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 2ef9071f1..20c2ee8cd 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -15,6 +15,7 @@ EXTRA_DIST = \
dkms.postbuild \
enum-extract.pl \
kmodtool \
+ make_gitrev.sh \
man-dates.sh \
paxcheck.sh \
zfs2zol-patch.sed \
diff --git a/scripts/make_gitrev.sh b/scripts/make_gitrev.sh
new file mode 100755
index 000000000..8db4de931
--- /dev/null
+++ b/scripts/make_gitrev.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+#
+# CDDL HEADER START
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+# CDDL HEADER END
+#
+
+# Copyright (c) 2018 by Delphix. All rights reserved.
+# Copyright (c) 2018 by Matthew Thode. All rights reserved.
+
+#
+# Generate zfs_gitrev.h. Note that we need to do this for every
+# invocation of `make`, including for incremental builds. Therefore we
+# can't use a zfs_gitrev.h.in file which would be processed only when
+# `configure` is run.
+#
+
+set -e -u
+
+top_srcdir="$(dirname "$0")/.."
+GITREV="${1:-include/zfs_gitrev.h}"
+
+# GITREV should be a relative path (relative to top_builddir)
+case "${GITREV}" in
+ /*) echo "Error: ${GITREV} should be a relative path" >&2
+ exit 1;;
+esac
+
+ZFS_GITREV=$({ cd "${top_srcdir}" &&
+ git describe --always --long --dirty 2>/dev/null; } || :)
+ZFS_GITREV=${ZFS_GITREV:-unknown}
+
+GITREVTMP="${GITREV}~"
+printf '#define\tZFS_META_GITREV "%s"\n' "${ZFS_GITREV}" >"${GITREVTMP}"
+if cmp -s "${GITREV}" "${GITREVTMP}"
+then
+ rm -f "${GITREVTMP}"
+else
+ mv -f "${GITREVTMP}" "${GITREV}"
+fi