Age | Commit message (Collapse) | Author |
|
no reason for those types to have different return types, all compilers
are slightly unhappy with incompatible function pointers
(again, obvious commit, no difference in generated code)
|
|
obvious warning fix
|
|
okay millert@
|
|
thing is tricky
okay millert@
|
|
standard one (:) to the very BSD specific (!) so that standard Makefiles
keep working in the presence of ! in filenames.
This doesn't supersede the usual heuristics of choosing the operator
followed by space if several are present.
okay millert@
|
|
(hi mpi@) we may wish to ignore WIFSTOPPED so that other bugs elsewhere
may get found.
Also give more information in "can't happen" case to speed up figuring
problems out.
okay millert@, mpi@
|
|
OP_INVISIBLE)
okay millert@
|
|
|
|
okay on principle from millert@/schwarze@
The rationale is that those aren't even documented (apart from .MADE) and
the corresponding code has never been maintained (just untouched when
changing other things, so it probably doesn't work right if it ever did)
This went through a full release/bulk to make sure nobody was using that stuff.
okay millert@
|
|
waiting for the father to do so.
okay millert@
|
|
reaper. Specifically, the sigprocmask/wait/sigsuspend dance is correct for
the main process, BUT you have to remember to reset the signal mask to
something sane for the child (this was a duh! moment, that bug is very
stupid)
Finally, bluhm@ saw the actual issue. Kudoes to him.
The change to "unify" sequential and parallel make made the bug reproducible
under some circumstances
(because in the parallel make case, many things may happen in different
successions, so you don't get the wrong signal mask that often, but the
sequential case is reproducible, and using the "streamlined" reaper meant the
fork would occur WITHIN the signal loop instead of OUTSIDE)
So:
- discover signal state early on through Sigset_init;
- introduce reset_signal_mask to get back to the initial state;
- call reset_signal_mask systematically after fork
This organisation thanks to cmd_exec. SOME cmd_exec happens before Job_Init
happens, some afterwards (variables are still lazy and both !!= and :sh will
occur AFTER parsing), so both fork() need to be protected.
okay bluhm@
thx to sthen@ and naddy@ and mpi@ for helping out.
|
|
|
|
|
|
|
|
|
|
simplify the running of .BEGIN/.END so that they pass through the engine
first (so they can now have dependencies). Error out properly if .BEGIN/.END
fails.
|
|
handle_one_job, always go thru Job_Make now.
|
|
in the compatMake case, we still get into handle_all_running_jobs in case
of a fatal signal and at the end. Pass compatMake around to job.c so that
it will *not* run parallel make code in the sequential make case, thus
actually making sure both engines are separate.
|
|
|
|
to availableJobs/errorJobs happens just once
|
|
|
|
|
|
|
|
|
|
- have a simple variable "sequential" that counts whether we are
running more than one job (for the expensive heuristics)
- don't expose various things globally, just have a set_noparallel() for
the parser
- preallocate exactly enough job structures and record them in availableJobs
- keep one job on the side for .INTERRUPT
|
|
|
|
in that error case.
|
|
needed, because if we're special it's a target, if we have special_op,
it's a source.
There's just SPECIAL_WAIT which requires funny handling anyhow
|
|
are not really directly related to suffix handling), so that I can eventually
understand how this whole thing works.
|
|
Rename Suff_ClearSuffixes to the more explicit Suff_DisableAllSuffixes
which describes accurately what this function actually does.
remove outdated comments about .INCLUDE/.LIBS
|
|
ago. Document what's actually going on with special keywords (mostly .PATH
has special semantics) and document that SPECIAL_NOTHING corresponds to
ignoring former keywords.
|
|
be reused throughout running make. Instead of recreating buffers of
dubious appropriate size, have one single buffer for various stages of
parsing.
|
|
are created exactly once, so they don't need to be looked up to check whether
they exist or not.
Go thru a Targ_mk_node internal with all the special fields, and note the
special nodes are the only one with special values in there
|
|
unconfuse type/special field
(first commit of a large patch that was ok'd tb@, millert@)
|
|
Also, never run .END in querymode (we don't actually care about updating
problem in that case).
okay millert@
|
|
it in the main reaper loop, instead of waiting for a job with an
expensive command to exit.
This prevents jobs with an expensive command from holding back everything
else until their full list of commands is run, instead of just the
expensive one.
(as JOB_IS_EXPENSIVE is updated before and after each command for a job,
this is safe)
This might make things slightly more parallel. It's definitely more correct
and less tangled.
okay millert@
|
|
a job getting on the errorJobs list
okay millert@
|
|
okay millert@
|
|
document this rather intricate loop (only comments no code change)
|
|
so get rid of cluttered duplicate logic
okay kn@
|
|
and the first thing job_attach_node does is... set the field to BUILDING.
probably remnants of code prior to refactoring
okay captain_obvious
|
|
- define OP_ZERO as zero, to make some function calls obvious
- split ParseDoOp into two functions: ParseDoOp that only deals with : :: !
and ParseDoSpecial that only deals with special nodes. This simplifies both
functions accordingly
- always initialize special_op
okay millert@
|
|
Rename to avoid ambiguity
- VAR_IS_SHELL (in var.c): the SHELL variable, which has specific
POSIX semantics
- VAR_SHELL (in parsevar.c): assign the result of running the command
to the variable.
no actual code change
|
|
- rename context into localvars, which is more meaningful and less generic
- instantiate the random rumbling at the start of gnode.h with actual
variable names
- explain and group gnode.h variables better
- make some comments terser/more meaningful
okay millert@
|
|
make it obvious
okay millert@
|
|
adjust comments to be more meaningful
reorder predecessors/successors fields in an order that
makes more sense to me.
okay millert@
|
|
fold back BEINGMADE and BUILDING which mean the same thing
GC CYCLE/ENDCYCLE
okay millert@
|
|
- make BufExpand a real function, zap BufOverflow
- sprinkle assert that justify the arithmetic
- use unsigned constants
- fix a bug in the unlikely condition where Buf_printf would exactly
match the buffer boundary and Buf_Retrieve would be called right after
okay millert@
|
|
fix glaring omission
okay schwarze@, jmc@
|
|
okay millert@
|