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)
|
.if !defined(_CAN_USE_META_MODE)
|
||||||
_MAKE+= MK_META_MODE=no
|
_MAKE+= MK_META_MODE=no
|
||||||
.unexport META_MODE
|
.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)
|
.endif # !defined(_CAN_USE_META_MODE)
|
||||||
|
|
||||||
# Guess machine architecture from machine type, and vice versa.
|
# Guess machine architecture from machine type, and vice versa.
|
||||||
|
@ -28,4 +28,14 @@ _SKIP_BUILD = not building at level 0
|
|||||||
.warning ${_SKIP_BUILD}
|
.warning ${_SKIP_BUILD}
|
||||||
.endif
|
.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>__)
|
.endif # !target(__<bsd.init.mk>__)
|
||||||
|
@ -60,10 +60,6 @@ META_MODE+= missing-meta=yes
|
|||||||
META_MODE+= silent=yes
|
META_MODE+= silent=yes
|
||||||
.endif
|
.endif
|
||||||
.if !exists(/dev/filemon)
|
.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
|
META_MODE+= nofilemon
|
||||||
.endif
|
.endif
|
||||||
# Require filemon data with bmake
|
# Require filemon data with bmake
|
||||||
|
@ -7,9 +7,13 @@ using
|
|||||||
The meta file is created in the OBJDIR as
|
The meta file is created in the OBJDIR as
|
||||||
.Pa target.meta .
|
.Pa target.meta .
|
||||||
These meta files track the command ran, its output, and the current directory.
|
These meta files track the command ran, its output, and the current directory.
|
||||||
When the
|
The
|
||||||
.Xr filemon 4
|
.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.
|
dependencies for the target in its meta file.
|
||||||
The target will be considered out-of-date and rebuilt if any of the following
|
The target will be considered out-of-date and rebuilt if any of the following
|
||||||
are true compared to the last build:
|
are true compared to the last build:
|
||||||
|
Loading…
Reference in New Issue
Block a user