Re: make: warn about fallback from parallel to compat mode
Roland Illig <[email protected]> Sun, 25 May 2025 19:54:43 +0200
| Newsgroups | gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
Am 25.05.2025 um 19:18 schrieb Simon J. Gerraty: > Roland Illig <[email protected]> wrote: >> broken-target: >> ${MAKEDIRTARGET} subdir subdir-target1 subdir-target2 >> >> The reason is that the target (indirectly) runs a sub-make, but the >> sub-make does not coordinate the number of running jobs with the main >> make process. This may lead to more than the desired jobs running in >> parallel, or to only a single job. >> >> The cause for this is that the target is neither marked with ".MAKE" nor >> does one of its unexpanded commands contain the magic word "make" or the >> expression "${MAKE}". > > FWIW I think it is sufficient to simply recommend adding .MAKE, > trying to explain, tricks like adding ${: make} better belongs in the > man page - see recent elaboration on meta mode ;-) Moving the explanation to the manual page sounds good. >> +make: warning: internal option "-J 31,32" in <curdir> refers to an unopened file descriptor; falling back to compat mode. >> + If the target is supposed to recurse even with -n, add the .MAKE pseudo-source to the target. > > ie. make that just: > > make: warning: internal option "-J 31,32" in <curdir> refers to \ > unopened descriptors; add pseudo-source .MAKE to the target to avoid this. I had considered this but decided against it because adding .MAKE to a target has two effects: 1. The file descriptors are passed on. That's intended. 2. All the node's command are run even in -n mode. That's sometimes intended and sometimes not, for example for plain "echo" commands. Due to the "sometimes not", I didn't dare to suggest a single fix when three different fixes are available, each with its own benefits and drawbacks. Roland