Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
okay beck@
|
|
okay beck@
|
|
unknown keywords.
uniform white space handling.
okay beck@
|
|
okay beck@
|
|
of prerequisites. This prevents complaints from the var module and from
other developers.
That's a bug I introduced 5 years ago... found out by miod@
okay miod@
|
|
this was yet another weirdness in our make that isn't shared by
other makes, and that isn't part of any standard.
This means end-of-line spaces in variables ARE significant (spaces
around the equal sign still aren't).
okay sthen@, "sounds fine" deraadt@
|
|
problem found by Tobias Ulmer.
|
|
- do ^C checking differently: don't record sent signals, but when jobs
die, recheck whether we received/have pending a INT/QUIT/TERM/HUP signal.
Then don't display our process group "normally", instead group together
everything dying by signal/shell dying by signal (just give the target
names).
- make certain we always handle signals before dying from "other conditions"
- have the parser messages look more like normal messages
- remove double error messages from some parser errors
- make sure unclosed variables ARE errors when some modifiers are present
- keep track of the base directory we're run from, so that submakes can
get shortened directories...
- make sure the whole error message including silent command fits into a
reasonable length.
okay millert@
|
|
|
|
especially bad during runtime as we trap ^C.
For instance ${A:C/-*//g}. Problem found by rpe@
Do the same as other modern tools: advance by one char and repeat, so
that there's at most one empty word match at each position.
okay millert@
|
|
|
|
okay millert@
|
|
|
|
Actually less ambiguous than .if target().
|
|
definitely non portable behavior.
discussed with millert@, who rightfully insisted on the optional debug part
|
|
namely:
- targets that ARE the same file shouldn't build concurrently.
- targets in the same group (e.g., file.c file.c: file.y) shouldn't build
concurrently.
This probably fixes all the remaining races in make -j4 build in src.
|
|
construction
|
|
deraadt@, millert@
|
|
- nodes for .POSIX and .SCCS_GET (which don't do anything)
- zap remaining suffix crud.
new scaffolding:
- groupling list and HELDBACK state to avoid races in engine.
- parser recognizes lists of targets that shoul be grouped together
- OP_DOUBLE to mark nodes that have multiple lists of commands
|
|
targets is actually separate targets.
|
|
|
|
feedback & ok jmc@
|
|
signal because the process already bought it (pgroups will do that to you)
(lots of discussion with Todd on that one)
- tweak error handling some more to make it less verbose when just one job
is running...
- show signal name in case of signal interrupts.
- zap OP_LIB, move that stuff to the location where we warn when we meet
that bug.
okay millert@
|
|
some input from jmc@, might not be 100% perfect yet, but better than
nothing at all.
|
|
in stdin interaction.
Fixes update-patches as reported by aja...
|
|
- put back some job control, turns out it's necessary when we don't run a
shell.
- zap old #ifdef CLEANUP code... probably doesn't even compile.
- kill most of the OP_LIB code. Just keep a wee little bit for compatibility
(deprecated .LIBS and .INCLUDES, warns for weird dependencies instead of
erroring out).
- much improved debugging and -p output: sort variables, targets, rules,
output stuff in a nicer format mimicing input.
- better error message when no command is found, explain where the target comes from.
- sort final error list by file.
- show system files in errors as <bsd.prog.mk>
- reincorporate random delay, that was dropped
- optimize siginfo output by not regenerating the whole string each time.
- finish zapping old LocationInfo field that's no longer used.
|
|
instead of "sources", target rules, makefile names).
document most recent changes.
discussed with jmc@
|
|
|
|
|
|
instead of forking a "job" per target, and having that job further fork
separate commands, have make maintain a list of jobs, indexed by pid
of currently running commands, and handle process termination
continuation-style. This has lots of benefits:
- make is responsible for most printing, so we no longer need pipes nor
job control: make -j jobs see the tty.
- no more special-casing for jobs that don't really execute anything.
- unify code for make -jn and make -B, including signal handlers and
job waiting. So make -n, make -q, +cmd now run commands in the same
way in all cases.
- unified more accurate error-reporting, as make knows precisely which
command failed. Commands are tagged with their lines, and we display failing
commands in silent mode.
- fine-grained "expensive" command handling (recursion limiter). Do it
per-command instead of per-target.
Moreover, signal response is now simpler, as we just block the signals
in a small critical sections, test for events, and sigpause (thanks a lot
to guenther@ and millert@), so running make is now almost always paused
without any busy-waiting.
Thanks to everyone who tested and gave input.
|
|
a shell reserved word.
okay millert@
|
|
test:
! pgrep process
work, without trying to look for a '!' command
(remember that not running a shell for each command is an optimization ?)
bug fix prompted by eric@'s remark, okay millert@
|
|
even with only-inline, won't compile with -O0, so debugging is very
difficult...
discussed with jsg@
|
|
- add info to be able to pinpoint parse errors at runtime.
- let job runners abort when a parse error happens while expanding a variable
during execution
- fix an infinite loop when compiling without FEATURE_RECVARS.
okay millert@, krw@
the very few errors found out by this (less than 10 over src/X/ports)
fixed trivially beforehand, as requested by deraadt@
|
|
ok espie@
|
|
use the same logic to update the parent (factored out as SuffLinkParent())
as is used for updating the original parent. Fixes the "make -j2" problem
reported by tedu@ at c2k11
ok espie@
|
|
|
|
be slightly more verbose and really explain what's going on.
okay millert@
|
|
Sometimes they mess up, so add .CHEAP/.EXPENSIVE to explicitly tell make
'hey this is not THAT bad' or 'worse than you think'.
agreed by guenther@, millert@ (and some tweaks)
|
|
|
|
recognize that and create a struct Location_ for it.
mostly from Jonathan Calmels, a few nits from me.
okay otto@
|
|
converting gettimeofday()'s output, and pass utimes() NULL to get
the time from inside the kernel instead
ok espie@, stress testing on NFS by deraadt@
|
|
Found by Michael W. Bombardieri <mwb at bom dot nom dot co> using lint.
ok deraadt@
|