mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
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 <ryan@iXsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Closes #10493
This commit is contained in:
parent
33982eb24c
commit
109d2c9310
21
Makefile.am
21
Makefile.am
@ -47,11 +47,25 @@ EXTRA_DIST += module/zfs/THIRDPARTYLICENSE.cityhash.descrip
|
|||||||
|
|
||||||
@CODE_COVERAGE_RULES@
|
@CODE_COVERAGE_RULES@
|
||||||
|
|
||||||
|
GITREV = include/zfs_gitrev.h
|
||||||
|
|
||||||
.PHONY: gitrev
|
.PHONY: gitrev
|
||||||
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
|
||||||
|
|
||||||
BUILT_SOURCES = gitrev
|
$(GITREV): gitrev
|
||||||
|
|
||||||
|
BUILT_SOURCES = $(GITREV)
|
||||||
|
CLEANFILES = $(GITREV)
|
||||||
|
|
||||||
# Double-colon rules are allowed; there are multiple independent definitions.
|
# Double-colon rules are allowed; there are multiple independent definitions.
|
||||||
distclean-local::
|
distclean-local::
|
||||||
@ -70,8 +84,7 @@ all-local:
|
|||||||
-[ -x ${top_builddir}/scripts/zfs-tests.sh ] && \
|
-[ -x ${top_builddir}/scripts/zfs-tests.sh ] && \
|
||||||
${top_builddir}/scripts/zfs-tests.sh -c
|
${top_builddir}/scripts/zfs-tests.sh -c
|
||||||
|
|
||||||
dist-hook: gitrev
|
dist-hook:
|
||||||
cp ${top_srcdir}/include/zfs_gitrev.h $(distdir)/include; \
|
|
||||||
sed ${ac_inplace} -e 's/Release:[[:print:]]*/Release: $(RELEASE)/' \
|
sed ${ac_inplace} -e 's/Release:[[:print:]]*/Release: $(RELEASE)/' \
|
||||||
$(distdir)/META
|
$(distdir)/META
|
||||||
|
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
DEFAULT_INCLUDES = \
|
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)/include \
|
||||||
-I$(top_srcdir)/module/icp/include \
|
-I$(top_srcdir)/module/icp/include \
|
||||||
-I$(top_srcdir)/lib/libspl/include
|
-I$(top_srcdir)/lib/libspl/include
|
||||||
|
@ -21,7 +21,7 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
make clean || true
|
make clean || true
|
||||||
scripts/make_gitrev.sh || true
|
make gitrev
|
||||||
|
|
||||||
rm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs"
|
rm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs"
|
||||||
cp --recursive include "$KERNEL_DIR/include/zfs"
|
cp --recursive include "$KERNEL_DIR/include/zfs"
|
||||||
|
@ -22,6 +22,7 @@ ZFS_MODULE_CFLAGS += @KERNEL_DEBUG_CFLAGS@ @NO_FORMAT_ZERO_LENGTH@
|
|||||||
ifneq ($(KBUILD_EXTMOD),)
|
ifneq ($(KBUILD_EXTMOD),)
|
||||||
zfs_include = @abs_top_srcdir@/include
|
zfs_include = @abs_top_srcdir@/include
|
||||||
ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h
|
ZFS_MODULE_CFLAGS += -include @abs_top_builddir@/zfs_config.h
|
||||||
|
ZFS_MODULE_CFLAGS += -I@abs_top_builddir@/include
|
||||||
else
|
else
|
||||||
zfs_include = $(srctree)/include/zfs
|
zfs_include = $(srctree)/include/zfs
|
||||||
ZFS_MODULE_CFLAGS += -include $(zfs_include)/zfs_config.h
|
ZFS_MODULE_CFLAGS += -include $(zfs_include)/zfs_config.h
|
||||||
|
@ -4,7 +4,7 @@ WITH_CTF=1
|
|||||||
|
|
||||||
.include <bsd.sys.mk>
|
.include <bsd.sys.mk>
|
||||||
|
|
||||||
SRCDIR= ${.CURDIR}
|
SRCDIR=${.CURDIR}
|
||||||
INCDIR=${.CURDIR:H}/include
|
INCDIR=${.CURDIR:H}/include
|
||||||
|
|
||||||
KMOD= openzfs
|
KMOD= openzfs
|
||||||
@ -19,6 +19,7 @@ KMOD= openzfs
|
|||||||
${SRCDIR}/zfs
|
${SRCDIR}/zfs
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS+= -I${.OBJDIR:H}/include
|
||||||
CFLAGS+= -I${INCDIR}
|
CFLAGS+= -I${INCDIR}
|
||||||
CFLAGS+= -I${INCDIR}/spl
|
CFLAGS+= -I${INCDIR}/spl
|
||||||
CFLAGS+= -I${INCDIR}/os/freebsd
|
CFLAGS+= -I${INCDIR}/os/freebsd
|
||||||
|
@ -15,7 +15,6 @@ EXTRA_DIST = \
|
|||||||
dkms.postbuild \
|
dkms.postbuild \
|
||||||
enum-extract.pl \
|
enum-extract.pl \
|
||||||
kmodtool \
|
kmodtool \
|
||||||
make_gitrev.sh \
|
|
||||||
man-dates.sh \
|
man-dates.sh \
|
||||||
paxcheck.sh \
|
paxcheck.sh \
|
||||||
zfs2zol-patch.sed \
|
zfs2zol-patch.sed \
|
||||||
|
@ -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
|
|
Loading…
Reference in New Issue
Block a user