aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArvind Sankar <[email protected]>2020-06-19 22:08:59 -0400
committerBrian Behlendorf <[email protected]>2020-06-24 18:19:28 -0700
commit109d2c93102049e7d7fdd5de7f9edff717224b32 (patch)
tree08eeeb151b4ecbabe5e3617199da94762e7bdce6
parent33982eb24c615f78b8f6b5f54c6acb6c29cbf6e3 (diff)
Move zfs_gitrev.h to build directory
Currently an out-of-tree build does not work with read-only source directory because zfs_gitrev.h can't be created. Move this file to the build directory, which is more appropriate for a generated file, and drop the dist-hook for zfs_gitrev.h. There is no need to distribute this file since it will be regenerated as part of the compilation in any case. scripts/make_gitrev.sh tries to avoid updating zfs_gitrev.h if there has been no change, however this doesn't cover the case when the source directory is not in git: in that case zfs_gitrev.h gets overwritten even though it's always "unknown". Simplify the logic to always write out a new version of zfs_gitrev.h, compare against the old and overwrite only if different. This is now simple enough to just include in the Makefile, so drop the script. Reviewed-by: Ryan Moeller <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Arvind Sankar <[email protected]> Closes #10493
-rw-r--r--Makefile.am21
-rw-r--r--config/Rules.am3
-rwxr-xr-xcopy-builtin2
-rw-r--r--module/Kbuild.in1
-rw-r--r--module/Makefile.bsd3
-rw-r--r--scripts/Makefile.am1
-rwxr-xr-xscripts/make_gitrev.sh45
7 files changed, 23 insertions, 53 deletions
diff --git a/Makefile.am b/Makefile.am
index 101b38ac3..a90c71ee9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -47,11 +47,25 @@ EXTRA_DIST += module/zfs/THIRDPARTYLICENSE.cityhash.descrip
@CODE_COVERAGE_RULES@
+GITREV = include/zfs_gitrev.h
+
.PHONY: gitrev
gitrev:
- -${top_srcdir}/scripts/make_gitrev.sh
+ 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
+
+$(GITREV): gitrev
-BUILT_SOURCES = gitrev
+BUILT_SOURCES = $(GITREV)
+CLEANFILES = $(GITREV)
# Double-colon rules are allowed; there are multiple independent definitions.
distclean-local::
@@ -70,8 +84,7 @@ all-local:
-[ -x ${top_builddir}/scripts/zfs-tests.sh ] && \
${top_builddir}/scripts/zfs-tests.sh -c
-dist-hook: gitrev
- cp ${top_srcdir}/include/zfs_gitrev.h $(distdir)/include; \
+dist-hook:
sed ${ac_inplace} -e 's/Release:[[:print:]]*/Release: $(RELEASE)/' \
$(distdir)/META
diff --git a/config/Rules.am b/config/Rules.am
index fbbca81e6..c6dce34b0 100644
--- a/config/Rules.am
+++ b/config/Rules.am
@@ -4,7 +4,8 @@
#
DEFAULT_INCLUDES = \
- -include ${top_builddir}/zfs_config.h \
+ -include $(top_builddir)/zfs_config.h \
+ -I$(top_builddir)/include \
-I$(top_srcdir)/include \
-I$(top_srcdir)/module/icp/include \
-I$(top_srcdir)/lib/libspl/include
diff --git a/copy-builtin b/copy-builtin
index f77cbb8ff..f42f4d1a4 100755
--- a/copy-builtin
+++ b/copy-builtin
@@ -21,7 +21,7 @@ then
fi
make clean || true
-scripts/make_gitrev.sh || true
+make gitrev
rm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs"
cp --recursive include "$KERNEL_DIR/include/zfs"
diff --git a/module/Kbuild.in b/module/Kbuild.in
index 120ce87c5..031b5a9a8 100644
--- a/module/Kbuild.in
+++ b/module/Kbuild.in
@@ -22,6 +22,7 @@ ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@ @NO_FORMAT_ZERO_LENGTH@
ifneq ($(KBUILD_EXTMOD),)
zfs_include = @abs_top_srcdir@/include
ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h
+ZFS_MODULE_CFLAGS += -I@abs_top_builddir@/include
else
zfs_include = $(srctree)/include/zfs
ZFS_MODULE_CFLAGS += -include $(zfs_include)/zfs_config.h
diff --git a/module/Makefile.bsd b/module/Makefile.bsd
index d23cacd36..a46b92051 100644
--- a/module/Makefile.bsd
+++ b/module/Makefile.bsd
@@ -4,7 +4,7 @@ WITH_CTF=1
.include <bsd.sys.mk>
-SRCDIR= ${.CURDIR}
+SRCDIR=${.CURDIR}
INCDIR=${.CURDIR:H}/include
KMOD= openzfs
@@ -19,6 +19,7 @@ KMOD= openzfs
${SRCDIR}/zfs
+CFLAGS+= -I${.OBJDIR:H}/include
CFLAGS+= -I${INCDIR}
CFLAGS+= -I${INCDIR}/spl
CFLAGS+= -I${INCDIR}/os/freebsd
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 1605ab886..176304439 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -15,7 +15,6 @@ 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
deleted file mode 100755
index 1cf143794..000000000
--- a/scripts/make_gitrev.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/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
-
-cleanup() {
- ZFS_GIT_REV=${ZFS_GIT_REV:-"unknown"}
- cat << EOF > "$(dirname "$0")"/../include/zfs_gitrev.h
-#define ZFS_META_GITREV "${ZFS_GIT_REV}"
-EOF
-}
-trap cleanup EXIT
-
-# Check if git is installed and we are in a git repo.
-git rev-parse --git-dir > /dev/null 2>&1
-# Get the git current git revision
-ZFS_GIT_REV=$(git describe --always --long --dirty 2>/dev/null)
-# Check if header file already contain the exact string
-grep -sq "\"${ZFS_GIT_REV}\"" "$(dirname "$0")"/../include/zfs_gitrev.h &&
- trap - EXIT
-exit 0