I'm using a complex non-recursive make system to run test suites, some
subset of which are performance tests which should not run in
parallel.

Is there any way to get gmake to run a job serially? Ideally something like:

mytarget: .NOTPARALLEL

Currently I'm forced to either break up the test suite rules and run
the perf tests separately, or do something really ugly like:

EMPTY :=
COMMA := ,
SPACE := $(EMPTY) $(EMPTY)

# macros to get the job descriptor FDs
JSFDS = $(patsubst --jobserver-fds=%,%,$(filter --jobserver-fds=%,$(MAKEFLAGS)))
RJSFD = $(firstword $(subst $(COMMA),$(SPACE),$(JSFDS)))
WJSFD = $(lastword $(subst $(COMMA),$(SPACE),$(JSFDS)))

holdjobs:
    +read -N7 -u$(RJSFD)

freejobs: $(ALLTS)
    +echo -n '+++++++' >&$(WJSFD)

$(SERIAL_TESTS): holdjobs

freejobs: $(SERIAL_TESTS)

serialized_tests:  $(SERIAL_TESTS) freejobs

(the above works only for -j8, for example). As an aside is there any
way to determine the original -jN argument?

  - Ed

_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to