Rework the 'make -n -n' feature such that '-n' recurses and '-N' does not.
Bmake has a documented feature of '-N' to skip executing commands which is specifically intended for debugging top-level builds and not recursing into sub-directories. This matches the older 'make -n' behavior we added which made '-n -n' the recursing target and '-n' a non-recursing target. Removing the '-n -n' feature allows the build to work as documented in the bmake manpage with '-n' and '-N'. The older '-n -n' feature was also not documented anywhere that I could see. Note that the ${_+_} var is still needed as currently bmake incorrectly executes '+' commands when '-N' is specified. The '-n' and '-n -n' features were broken for several reasons prior to this. r251748 made '_+_' never expand with '-n -n' which resulted in many sub-directories not being visited until fixed 2 years later in r288391, and many targets were given .MAKE over the past few years which resulted in non-sub-make commands, such as rm and ln and mtree, to be executed. This should also allow removing some indirection hacks in bsd.subdir.mk and other cases of .USE that have a .MAKE by using '+'. Sponsored by: EMC / Isilon Storage Division Discussed on: arch@ (mostly silence)
This commit is contained in:
parent
b5af77bf9f
commit
d506826439
8
Makefile
8
Makefile
@ -243,14 +243,8 @@ cleanworld:
|
|||||||
# Handle the user-driven targets, using the source relative mk files.
|
# Handle the user-driven targets, using the source relative mk files.
|
||||||
#
|
#
|
||||||
|
|
||||||
.if !(!empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n")
|
|
||||||
# skip this for -n to avoid changing previous behavior of
|
|
||||||
# 'make -n buildworld' etc. Using -n -n will run it.
|
|
||||||
${TGTS}: .MAKE
|
|
||||||
tinderbox toolchains kernel-toolchains: .MAKE
|
tinderbox toolchains kernel-toolchains: .MAKE
|
||||||
.endif
|
${TGTS}: .PHONY .MAKE
|
||||||
|
|
||||||
${TGTS}: .PHONY
|
|
||||||
${_+_}@cd ${.CURDIR}; ${_MAKE} ${.TARGET}
|
${_+_}@cd ${.CURDIR}; ${_MAKE} ${.TARGET}
|
||||||
|
|
||||||
# The historic default "all" target creates files which may cause stale
|
# The historic default "all" target creates files which may cause stale
|
||||||
|
6
UPDATING
6
UPDATING
@ -31,6 +31,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
|
|||||||
disable the most expensive debugging functionality run
|
disable the most expensive debugging functionality run
|
||||||
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
|
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
|
||||||
|
|
||||||
|
20151017:
|
||||||
|
The build previously allowed using 'make -n' to not recurse into
|
||||||
|
sub-directories while showing what commands would be executed, and
|
||||||
|
'make -n -n' to recursively show commands. Now 'make -n' will recurse
|
||||||
|
and 'make -N' will not.
|
||||||
|
|
||||||
20151012:
|
20151012:
|
||||||
If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
|
If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
|
||||||
and etcupdate will now use this file. A custom sendmail.cf is now
|
and etcupdate will now use this file. A custom sendmail.cf is now
|
||||||
|
@ -145,13 +145,12 @@ ECHODIR ?= true
|
|||||||
.endif
|
.endif
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if defined(.PARSEDIR)
|
.if ${.MAKEFLAGS:M-N}
|
||||||
# _+_ appears to be a workaround for the special src .MAKE not working.
|
# bmake -N is supposed to skip executing anything but it does not skip
|
||||||
# setting it to + interferes with -N
|
# exeucting '+' commands. The '+' feature is used where .MAKE
|
||||||
_+_ ?=
|
# is not safe for the entire target. -N is intended to skip building sub-makes
|
||||||
.elif !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n"
|
# so it executing '+' commands is not right. Work around the bug by not
|
||||||
# the check above matches only a single -n, so -n -n will result
|
# setting '+' when -N is used.
|
||||||
# in _+_ = +
|
|
||||||
_+_ ?=
|
_+_ ?=
|
||||||
.else
|
.else
|
||||||
_+_ ?= +
|
_+_ ?= +
|
||||||
|
Loading…
Reference in New Issue
Block a user