Skip to content

Commit

Permalink
Move zfs_gitrev.h to build directory
Browse files Browse the repository at this point in the history
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 <ryan@iXsystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Closes #10493
  • Loading branch information
nivedita76 authored and behlendorf committed Jun 25, 2020
1 parent 33982eb commit 109d2c9
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 53 deletions.
21 changes: 17 additions & 4 deletions Makefile.am
Expand Up @@ -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::
Expand All @@ -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

Expand Down
3 changes: 2 additions & 1 deletion config/Rules.am
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion copy-builtin
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions module/Kbuild.in
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion module/Makefile.bsd
Expand Up @@ -4,7 +4,7 @@ WITH_CTF=1

.include <bsd.sys.mk>

SRCDIR= ${.CURDIR}
SRCDIR=${.CURDIR}
INCDIR=${.CURDIR:H}/include

KMOD= openzfs
Expand All @@ -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
Expand Down
1 change: 0 additions & 1 deletion scripts/Makefile.am
Expand Up @@ -15,7 +15,6 @@ EXTRA_DIST = \
dkms.postbuild \
enum-extract.pl \
kmodtool \
make_gitrev.sh \
man-dates.sh \
paxcheck.sh \
zfs2zol-patch.sed \
Expand Down
45 changes: 0 additions & 45 deletions scripts/make_gitrev.sh

This file was deleted.

1 comment on commit 109d2c9

@h1z1
Copy link

@h1z1 h1z1 commented on 109d2c9 Mar 13, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Guessing out of tree builds aren't used that often, glad to see this get fixed though. Any chance of a backport?

Please sign in to comment.