svn commit: r301888 - in head: . share/mk tools/build/options

Bryan Drewery bdrewery at FreeBSD.org
Tue Jun 14 16:20:21 UTC 2016


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 <lifanov at 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:


More information about the svn-src-head mailing list