From d32a59fe2b29a7008a820d597a7efa41ccdf2f09 Mon Sep 17 00:00:00 2001 From: Arvind Sankar Date: Fri, 17 Jul 2020 17:30:51 -0400 Subject: [PATCH] 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 Reviewed-by: Eli Schwartz Signed-off-by: Arvind Sankar Closes #10595 --- Makefile.am | 11 +--------- scripts/Makefile.am | 1 + scripts/make_gitrev.sh | 50 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 10 deletions(-) create mode 100755 scripts/make_gitrev.sh 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