Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

#                                                                    -*-perl-*-
# Date: Tue, 11 Aug 1992 09:34:26 -0400
# From: pds@lemming.webo.dg.com (Paul D. Smith)

$description = "Test load balancing (-l) option.";

$details = "\
This test creates a makefile where all depends on three rules
which contain the same body.  Each rule checks for the existence
of a temporary file; if it exists an error is generated.  If it
doesn't exist then it is created, the rule sleeps, then deletes
the temp file again.  Thus if any of the rules are run in
parallel the test will fail.  When make is called in this test,
it is given the -l option with a value of 0.0001.  This ensures
that the load will be above this number and make will therefore
decide that it cannot run more than one job even though -j 4 was
also specified on the command line.";

open(MAKEFILE,"> $makefile");

# The Contents of the MAKEFILE ...

print MAKEFILE <<'EOF';
SHELL = /bin/sh

define test
if [ ! -f test-file ]; then \
  echo >> test-file; sleep 2; rm -f test-file; \
else \
  echo $@ FAILED; \
fi
endef

all : ONE TWO THREE
ONE : ; @$(test)
TWO : ; @$(test)
THREE : ; @$(test)
EOF


# END of Contents of MAKEFILE

close(MAKEFILE);

$mkoptions = "-l 0.0001";
$mkoptions .= " -j 4" if ($parallel_jobs);

&run_make_with_options($makefile, $mkoptions, &get_logfile);

$slurp = &read_file_into_string (&get_logfile(1));
if ($slurp !~ /cannot enforce load limit/) {
  &compare_output("", &get_logfile(1));
}

1;