WITH_META_MODE: Lessen the filemon(4) requirement scope.
- Move the sys.mk filemon requirement to bsd.init.mk as a warning. This is intended only to show when building directly in a subdirectory without filemon loaded. - Move the error into Makefile and only apply it when building from the META_TGT_WHITELIST target list. -DNO_FILEMON can be used to suppress both the warning and the error but makes WITH_META_MODE less useful. It will only compare build commands in this mode rather than track all dependencies. This fixes installing from a jail which doesn't need filemon in this phase [1]. Reported by: Nikolai Lifanov <lifanov@mail.lifanov.com> [1] Approved by: re (implicit) Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
parent
2c6fc926b3
commit
b8ef21b88a
7
Makefile
7
Makefile
@ -219,6 +219,13 @@ _CAN_USE_META_MODE?= yes
|
||||
.if !defined(_CAN_USE_META_MODE)
|
||||
_MAKE+= MK_META_MODE=no
|
||||
.unexport META_MODE
|
||||
.elif ${MK_META_MODE} == "yes"
|
||||
.if !exists(/dev/filemon) && !defined(NO_FILEMON) && !make(showconfig)
|
||||
# Require filemon be loaded to provide a working incremental build
|
||||
.error ${.newline}ERROR: The filemon module (/dev/filemon) is not loaded. \
|
||||
${.newline}ERROR: WITH_META_MODE is enabled but requires filemon for an incremental build. \
|
||||
${.newline}ERROR: 'kldload filemon' or pass -DNO_FILEMON to suppress this error.
|
||||
.endif # !exists(/dev/filemon) && !defined(NO_FILEMON)
|
||||
.endif # !defined(_CAN_USE_META_MODE)
|
||||
|
||||
# Guess machine architecture from machine type, and vice versa.
|
||||
|
@ -28,4 +28,14 @@ _SKIP_BUILD = not building at level 0
|
||||
.warning ${_SKIP_BUILD}
|
||||
.endif
|
||||
|
||||
.if ${MK_META_MODE} == "yes"
|
||||
.if !exists(/dev/filemon) && \
|
||||
${UPDATE_DEPENDFILE:Uyes:tl} != "no" && !defined(NO_FILEMON) && \
|
||||
!make(showconfig)
|
||||
.warning The filemon module (/dev/filemon) is not loaded.
|
||||
.warning META_MODE is less useful for incremental builds without filemon.
|
||||
.warning 'kldload filemon' or pass -DNO_FILEMON to suppress this warning.
|
||||
.endif
|
||||
.endif # ${MK_META_MODE} == "yes"
|
||||
|
||||
.endif # !target(__<bsd.init.mk>__)
|
||||
|
@ -60,10 +60,6 @@ META_MODE+= missing-meta=yes
|
||||
META_MODE+= silent=yes
|
||||
.endif
|
||||
.if !exists(/dev/filemon)
|
||||
.if ${UPDATE_DEPENDFILE:Uyes:tl} != "no" && !defined(NO_FILEMON) && \
|
||||
!make(showconfig)
|
||||
.error ${.newline}ERROR: The filemon module (/dev/filemon) is not loaded.
|
||||
.endif
|
||||
META_MODE+= nofilemon
|
||||
.endif
|
||||
# Require filemon data with bmake
|
||||
|
@ -7,9 +7,13 @@ using
|
||||
The meta file is created in the OBJDIR as
|
||||
.Pa target.meta .
|
||||
These meta files track the command ran, its output, and the current directory.
|
||||
When the
|
||||
The
|
||||
.Xr filemon 4
|
||||
module is loaded, any files used by the commands executed will be tracked as
|
||||
module is required unless
|
||||
.Va NO_FILEMON
|
||||
is defined.
|
||||
When the module is loaded, any files used by the commands executed will be
|
||||
tracked as
|
||||
dependencies for the target in its meta file.
|
||||
The target will be considered out-of-date and rebuilt if any of the following
|
||||
are true compared to the last build:
|
||||
|
Loading…
Reference in New Issue
Block a user