Author: bdrewery
Date: Tue Jun 14 16:20:19 2016
New Revision: 301888
URL: https://svnweb.freebsd.org/changeset/base/301888

Log:
  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 <lifa...@mail.lifanov.com> [1]
  Approved by:  re (implicit)
  Sponsored by: EMC / Isilon Storage Division

Modified:
  head/Makefile
  head/share/mk/bsd.init.mk
  head/share/mk/sys.mk
  head/tools/build/options/WITH_META_MODE

Modified: head/Makefile
==============================================================================
--- head/Makefile       Tue Jun 14 16:20:14 2016        (r301887)
+++ head/Makefile       Tue Jun 14 16:20:19 2016        (r301888)
@@ -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.

Modified: head/share/mk/bsd.init.mk
==============================================================================
--- head/share/mk/bsd.init.mk   Tue Jun 14 16:20:14 2016        (r301887)
+++ head/share/mk/bsd.init.mk   Tue Jun 14 16:20:19 2016        (r301888)
@@ -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>__)

Modified: head/share/mk/sys.mk
==============================================================================
--- head/share/mk/sys.mk        Tue Jun 14 16:20:14 2016        (r301887)
+++ head/share/mk/sys.mk        Tue Jun 14 16:20:19 2016        (r301888)
@@ -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

Modified: head/tools/build/options/WITH_META_MODE
==============================================================================
--- head/tools/build/options/WITH_META_MODE     Tue Jun 14 16:20:14 2016        
(r301887)
+++ head/tools/build/options/WITH_META_MODE     Tue Jun 14 16:20:19 2016        
(r301888)
@@ -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:
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to