Ticket #231 (closed bug: fixed)

Opened 5 years ago

Last modified 5 years ago

make -j2 test fails

Reported by: moritz Owned by: coke
Priority: normal Milestone:
Component: testing Version:
Severity: medium Keywords:
Cc: Language:
Patch status: Platform:

Description

I usually do

make realclean; perl Configure.pl --cc='ccache gcc' && make -j2 test

and these days (for example r36039) it fails:

/usr/bin/perl -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/core.pod
/usr/bin/perldoc -ud ops/debug.pod ../src/ops/debug.ops
/usr/bin/perl t/harness --gc-debug --running-make-test -r t/op/annotate.t
Perldoc (Pod::Perldoc::ToPod) output saved to ops/debug.pod
/usr/bin/perl -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/debug.pod
/usr/bin/perldoc -ud ops/experimental.pod ../src/ops/experimental.ops
Can't exec parrot at t/op/annotate.t line 1.
t/op/annotate......  Dubious, test returned 2 (wstat 512, 0x200)        
 No subtests run 
===(       0 )==========================================================
Test Summary Report
-------------------
t/op/annotate.t (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output

So it seems that t/op/annotate.t doesn't depend on the `all' make target.

Attachments

no.special.annotate.patch Download (0.9 KB) - added by jkeenan 5 years ago.
Eliminate superfluous make target test_pbc_annotation_persistence

Change History

  Changed 5 years ago by Infinoid

  • status changed from new to closed
  • resolution set to fixed

Thanks, fixed in r36284.

  Changed 5 years ago by jkeenan

  • status changed from closed to reopened
  • resolution fixed deleted

I am reopening this ticket because I am not convinced the solution implemented was the correct one.

Infinoid committed this code and log message in r36284:

Index: config/gen/makefiles/root.in
===================================================================
--- config/gen/makefiles/root.in        (revision 36283)
+++ config/gen/makefiles/root.in        (revision 36284)
@@ -1443,7 +1443,7 @@
 test_prep : all
 
 # We always want to test annotations are persisted in PBC during make test.
-test_pbc_annotation_persistence :
+test_pbc_annotation_persistence : test_prep
        $(PERL) t/harness $(EXTRA_TEST_ARGS) -r t/op/annotate.t
 
 # Run test cases with a single call of t/harness. Users have to look at only


$ svn log -r 36284 .
------------------------------------------------------------------------
r36284 | Infinoid | 2009-02-02 10:20:55 -0500 (Mon, 02 Feb 2009) | 3 lines

[makefile] The t/op/annotate.t test can't run before parrot is built.
Thus, it needs to depend on test_prep, otherwise it fails with -j.
This fixes TT #231.

I'm puzzled about two things here. First, hundreds of our tests depend on the existence of the parrot executable. They all depend on test_prep. Why should we need to single out just one, t/op/annotate.t, for a special make target?

Second, t/op/annotate.t, solely by virtue of its location in t/op/, is included in @Parrot::Harness::DefaultTests::runcore_tests. runcore_tests, in turn, is always included in the default tests run by t/harness.

As an experiment, I deleted the code referencing test_pbc_annotation_persistence from config/gen/makefiles/root.in, reconfigured, and rebuilt with make -j2 test. t/op/annotate.t was run in exactly the same position in the lists of tests as I get every other time.

Granted, I'm not on a dual-core (or is it dual-processor) machine, so I don't know if -j2 has any impact when I run make. But I see no reason for a make target focusing on just one test file. I am attaching a patch to delete that target. Infinoid, moritz: please comment.

Thank you very much.
kid51

Changed 5 years ago by jkeenan

Eliminate superfluous make target test_pbc_annotation_persistence

follow-up: ↓ 4   Changed 5 years ago by jrtayloriv

I'm currently having errors when I try to build r41532 on x86-64 Linux with make -j5, but not when I try to build with make. Here is the error I get for make -j5:

Compiling with:
/usr/bin/perl5.10.1 tools/build/vtable_extend.pl
xx.c
x86_64-pc-linux-gnu-gcc -I./include -march=core2 -msse4.1 -O2 -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DHASATTRIBUTE_CONST -DHASATTRIBUTE_DEPRECATED -DHASATTRIBUTE_MALLOC -DHASATTRIBUTE_NONNULL -DHASATTRIBUTE_NORETURN -DHASATTRIBUTE_PURE -DHASATTRIBUTE_UNUSED -DHASATTRIBUTE_WARN_UNUSED_RESULT -falign-functions=16 -fvisibility=hidden -funit-at-a-time -maccumulate-outgoing-args -W -Wall -Waggregate-return -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wdisabled-optimization -Wendif-labels -Wextra -Wformat -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wlogical-op -Wmissing-braces -Wmissing-field-initializers -Wno-missing-format-attribute -Wmissing-include-dirs -Wpacked -Wparentheses -Wpointer-arith -Wreturn-type -Wsequence-point -Wno-shadow -Wsign-compare -Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs -Wundef -Wunknown-pragmas -Wno-unused -Wvariadic-macros -Wwrite-strings -Wbad-function-cast -Wc++-compat -Wdeclaration-after-statement -Werror=declaration-after-statement -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wnonnull -DHAS_GETTEXT -g -DHAVE_COMPUTED_GOTO -DCLOCK_BEST=CLOCK_PROCESS_CPUTIME_ID -fPIC -I. -o xx.o -c xx.c
/usr/bin/perl5.10.1 tools/build/pbcversion_h.pl > include/parrot/pbcversion.h
/usr/bin/perl5.10.1 tools/build/ops2pm.pl  src/ops/core.ops src/ops/bit.ops src/ops/cmp.ops src/ops/debug.ops src/ops/experimental.ops src/ops/io.ops src/ops/math.ops src/ops/object.ops src/ops/pmc.ops src/ops/set.ops src/ops/string.ops src/ops/sys.ops src/ops/var.ops 
/usr/bin/perl5.10.1 tools/build/pmc2c.pl --vtable 
/usr/bin/perl5.10.1 tools/build/ops2pm.pl  src/ops/core.ops src/ops/bit.ops src/ops/cmp.ops src/ops/debug.ops src/ops/experimental.ops src/ops/io.ops src/ops/math.ops src/ops/object.ops src/ops/pmc.ops src/ops/set.ops src/ops/string.ops src/ops/sys.ops src/ops/var.ops 
/usr/bin/perl5.10.1 tools/build/c2str.pl src/debug.c > src/debug.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/dynext.c > src/dynext.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/events.c > src/events.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/exceptions.c > src/exceptions.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/global.c > src/global.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/global_setup.c > src/global_setup.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/hll.c > src/hll.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/call/pcc.c > src/call/pcc.str
trap                      1253       experimental, not in ops.num
/usr/bin/perl5.10.1 tools/build/c2str.pl src/interp/inter_cb.c > src/interp/inter_cb.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/interp/inter_create.c > src/interp/inter_create.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/interp/inter_misc.c > src/interp/inter_misc.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/io/api.c > src/io/api.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/key.c > src/key.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/library.c > src/library.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/multidispatch.c > src/multidispatch.str
trap                      1253       experimental, not in ops.num
/usr/bin/perl5.10.1 tools/build/c2str.pl src/frame_builder.c > src/frame_builder.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/packfile.c > src/packfile.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/pmc.c > src/pmc.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/pmc_freeze.c > src/pmc_freeze.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/oo.c > src/oo.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/runcore/main.c > src/runcore/main.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/runcore/profiling.c > src/runcore/profiling.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/scheduler.c > src/scheduler.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/spf_render.c > src/spf_render.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/spf_vtable.c > src/spf_vtable.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/string/api.c > src/string/api.str
/usr/bin/perl5.10.1 tools/build/c2str.pl src/sub.c > src/sub.str
/usr/bin/perl5.10.1 tools/build/parrot_config_c.pl --mini > \
    src/null_config.c
src/nci_test.c
gmake -C docs
gmake[1]: Entering directory `/home/jrt4/code/parrot/docs'
/usr/bin/perl5.10.1 -MExtUtils::Command -e mkpath ops
/usr/bin/perldoc -ud packfile-c.pod ../src/packfile.c
/usr/bin/perldoc -ud ops/bit.pod ../src/ops/bit.ops
src/glut_callbacks.c
/usr/bin/perldoc -ud ops/cmp.pod ../src/ops/cmp.ops
Perldoc (Pod::Perldoc::ToPod) output saved to ops/cmp.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/cmp.pod
Perldoc (Pod::Perldoc::ToPod) output saved to packfile-c.pod
Perldoc (Pod::Perldoc::ToPod) output saved to ops/bit.pod
./parrot -o compilers/nqp/nqp.pbc compilers/nqp/nqp.pir
make: ./parrot: Command not found
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/bit.pod
make: *** [compilers/nqp/nqp.pbc] Error 127
make: *** Waiting for unfinished jobs....
/usr/bin/perldoc -ud ops/core.pod ../src/ops/core.ops
/usr/bin/perldoc -ud ops/debug.pod ../src/ops/debug.ops
/usr/bin/perldoc -ud ops/experimental.pod ../src/ops/experimental.ops
Perldoc (Pod::Perldoc::ToPod) output saved to ops/core.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/core.pod
Perldoc (Pod::Perldoc::ToPod) output saved to ops/debug.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/debug.pod
Perldoc (Pod::Perldoc::ToPod) output saved to ops/experimental.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/experimental.pod
/usr/bin/perldoc -ud ops/io.pod ../src/ops/io.ops
/usr/bin/perldoc -ud ops/math.pod ../src/ops/math.ops
/usr/bin/perldoc -ud ops/object.pod ../src/ops/object.ops
Perldoc (Pod::Perldoc::ToPod) output saved to ops/io.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/io.pod
/usr/bin/perldoc -ud ops/pmc.pod ../src/ops/pmc.ops
Perldoc (Pod::Perldoc::ToPod) output saved to ops/math.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/math.pod
Perldoc (Pod::Perldoc::ToPod) output saved to ops/object.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/object.pod
Perldoc (Pod::Perldoc::ToPod) output saved to ops/pmc.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/pmc.pod
/usr/bin/perldoc -ud ops/set.pod ../src/ops/set.ops
/usr/bin/perldoc -ud ops/string.pod ../src/ops/string.ops
/usr/bin/perldoc -ud ops/sys.pod ../src/ops/sys.ops
Perldoc (Pod::Perldoc::ToPod) output saved to ops/set.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/set.pod
Perldoc (Pod::Perldoc::ToPod) output saved to ops/sys.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/sys.pod
Perldoc (Pod::Perldoc::ToPod) output saved to ops/string.pod
/usr/bin/perldoc -ud ops/var.pod ../src/ops/var.ops
Perldoc (Pod::Perldoc::ToPod) output saved to ops/var.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/string.pod
/usr/bin/perl5.10.1 -MExtUtils::Command -e ExtUtils::Command::chmod 0644 ops/var.pod
gmake[1]: Leaving directory `/home/jrt4/code/parrot/docs'

-- Jesse Taylor

in reply to: ↑ 3   Changed 5 years ago by jkeenan

  • component changed from configure to testing

Replying to jrtayloriv:

I'm currently having errors when I try to build r41532 on x86-64 Linux with make -j5, but not when I try to build with make. Here is the error I get for make -j5:

Jesse,

Could you transfer this report to a separate ticket? I reopened this ticket because I think the setup of test* targets in config/gen/makefiles/root.in is wrong.

Your failure is a build failure and deserves its own ticket.

Thank you very much.

kid51

  Changed 5 years ago by mikehh

The only thing I notice here is that the test is generated using the -r core which also generates .pbc code for the test. There might be a specific reason for this. In terms of running the test itself, I would say that it is run normally in make test/smolder_test(smoke) with the default core or specifically with the -r core in make fulltest/make testr.

In terms of the comment by jrtayloriv, I also get this failure and it is due to changes made in r41514 by pmichaud. As no one else has done this yet I will open a new ticket for it.

  Changed 5 years ago by coke

  • owner set to coke
  • status changed from reopened to new

  Changed 5 years ago by coke

There are many issues raised in this ticket, but I think they are all resolved now.

make -j2

I've just done some extensive work to verify dependencies for all files and fixed all the known issues.

t/op/annotate.t

This test was run specially with a separate core because at one point, it was decided that this particular feature had to be tested as part of a normal 'make test' run, not simply 'make testr' or 'make fulltest'.

However, the original target used to run this test has since been removed, so the deps used for it are academic. If it's added back later, we can verify the prereqs then.

nqp build additions in r41514

The nqp-rx additions are fairly stable at this point. (The nqp variants added in this revision are long gone.)

  Changed 5 years ago by coke

  • status changed from new to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.