WebAssembly / spec

WebAssembly specification, reference interpreter, and test suite.
https://webassembly.github.io/spec/
Other
3.13k stars 445 forks source link

`make test` does not work ~on linux~ with CDPATH #1681

Closed tlively closed 1 year ago

tlively commented 1 year ago

After installing dune 3.6.1 via opam, make test from the interpreter directory gives me this error:

dune build unittest.exe
Error: Don't know how to build unittest.exe
make: *** [Makefile:58: unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest] Error 1
rossberg commented 1 year ago

Hm, that is very odd. I'm on MacOS (and dune 3.10.0), so I cannot reproduce or try that directly, but I don't see why your make would ever invoke dune build unittest.exe.

What happens when you invoke make unittest? And if that fails, too, can you paste the output of make -d unittest?

tlively commented 1 year ago

That fails too. Here's the output:

tlively@tlively:~/code/spec/interpreter$ make -d unittest
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile 'Makefile'...
Updating makefiles....
 Considering target file 'Makefile'.
  Looking for an implicit rule for 'Makefile'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.o'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.c'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.cc'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.C'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.cpp'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.p'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.f'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.F'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.m'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.r'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.s'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.S'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.mod'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.sh'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile,v'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'RCS/Makefile,v'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'RCS/Makefile'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 's.Makefile'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'SCCS/s.Makefile'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.o'.
  Looking for a rule with intermediate file 'Makefile.o'.
   Avoiding implicit rule recursion.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.c'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.cc'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.C'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.cpp'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.p'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.f'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.F'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.m'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.r'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.s'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.S'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.mod'.
   Trying pattern rule with stem 'Makefile.o'.
   Trying implicit prerequisite 'Makefile.o,v'.
   Trying pattern rule with stem 'Makefile.o'.
   Trying implicit prerequisite 'RCS/Makefile.o,v'.
   Trying pattern rule with stem 'Makefile.o'.
   Trying implicit prerequisite 'RCS/Makefile.o'.
   Trying pattern rule with stem 'Makefile.o'.
   Trying implicit prerequisite 's.Makefile.o'.
   Trying pattern rule with stem 'Makefile.o'.
   Trying implicit prerequisite 'SCCS/s.Makefile.o'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.c'.
   Looking for a rule with intermediate file 'Makefile.c'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.y'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.l'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.w'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.w'.
    Trying pattern rule with stem 'Makefile.c'.
    Trying implicit prerequisite 'Makefile.c,v'.
    Trying pattern rule with stem 'Makefile.c'.
    Trying implicit prerequisite 'RCS/Makefile.c,v'.
    Trying pattern rule with stem 'Makefile.c'.
    Trying implicit prerequisite 'RCS/Makefile.c'.
    Trying pattern rule with stem 'Makefile.c'.
    Trying implicit prerequisite 's.Makefile.c'.
    Trying pattern rule with stem 'Makefile.c'.
    Trying implicit prerequisite 'SCCS/s.Makefile.c'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.y'.
    Looking for a rule with intermediate file 'Makefile.y'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.y'.
     Trying implicit prerequisite 'Makefile.y,v'.
     Trying pattern rule with stem 'Makefile.y'.
     Trying implicit prerequisite 'RCS/Makefile.y,v'.
     Trying pattern rule with stem 'Makefile.y'.
     Trying implicit prerequisite 'RCS/Makefile.y'.
     Trying pattern rule with stem 'Makefile.y'.
     Trying implicit prerequisite 's.Makefile.y'.
     Trying pattern rule with stem 'Makefile.y'.
     Trying implicit prerequisite 'SCCS/s.Makefile.y'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.l'.
    Looking for a rule with intermediate file 'Makefile.l'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.l'.
     Trying implicit prerequisite 'Makefile.l,v'.
     Trying pattern rule with stem 'Makefile.l'.
     Trying implicit prerequisite 'RCS/Makefile.l,v'.
     Trying pattern rule with stem 'Makefile.l'.
     Trying implicit prerequisite 'RCS/Makefile.l'.
     Trying pattern rule with stem 'Makefile.l'.
     Trying implicit prerequisite 's.Makefile.l'.
     Trying pattern rule with stem 'Makefile.l'.
     Trying implicit prerequisite 'SCCS/s.Makefile.l'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.w'.
    Looking for a rule with intermediate file 'Makefile.w'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.w'.
     Trying implicit prerequisite 'Makefile.w,v'.
     Trying pattern rule with stem 'Makefile.w'.
     Trying implicit prerequisite 'RCS/Makefile.w,v'.
     Trying pattern rule with stem 'Makefile.w'.
     Trying implicit prerequisite 'RCS/Makefile.w'.
     Trying pattern rule with stem 'Makefile.w'.
     Trying implicit prerequisite 's.Makefile.w'.
     Trying pattern rule with stem 'Makefile.w'.
     Trying implicit prerequisite 'SCCS/s.Makefile.w'.
    Trying pattern rule with stem 'Makefile'.
    Rejecting impossible implicit prerequisite 'Makefile.w'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.cc'.
   Looking for a rule with intermediate file 'Makefile.cc'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.cc'.
    Trying implicit prerequisite 'Makefile.cc,v'.
    Trying pattern rule with stem 'Makefile.cc'.
    Trying implicit prerequisite 'RCS/Makefile.cc,v'.
    Trying pattern rule with stem 'Makefile.cc'.
    Trying implicit prerequisite 'RCS/Makefile.cc'.
    Trying pattern rule with stem 'Makefile.cc'.
    Trying implicit prerequisite 's.Makefile.cc'.
    Trying pattern rule with stem 'Makefile.cc'.
    Trying implicit prerequisite 'SCCS/s.Makefile.cc'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.C'.
   Looking for a rule with intermediate file 'Makefile.C'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.C'.
    Trying implicit prerequisite 'Makefile.C,v'.
    Trying pattern rule with stem 'Makefile.C'.
    Trying implicit prerequisite 'RCS/Makefile.C,v'.
    Trying pattern rule with stem 'Makefile.C'.
    Trying implicit prerequisite 'RCS/Makefile.C'.
    Trying pattern rule with stem 'Makefile.C'.
    Trying implicit prerequisite 's.Makefile.C'.
    Trying pattern rule with stem 'Makefile.C'.
    Trying implicit prerequisite 'SCCS/s.Makefile.C'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.cpp'.
   Looking for a rule with intermediate file 'Makefile.cpp'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.cpp'.
    Trying implicit prerequisite 'Makefile.cpp,v'.
    Trying pattern rule with stem 'Makefile.cpp'.
    Trying implicit prerequisite 'RCS/Makefile.cpp,v'.
    Trying pattern rule with stem 'Makefile.cpp'.
    Trying implicit prerequisite 'RCS/Makefile.cpp'.
    Trying pattern rule with stem 'Makefile.cpp'.
    Trying implicit prerequisite 's.Makefile.cpp'.
    Trying pattern rule with stem 'Makefile.cpp'.
    Trying implicit prerequisite 'SCCS/s.Makefile.cpp'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.p'.
   Looking for a rule with intermediate file 'Makefile.p'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.web'.
    Trying pattern rule with stem 'Makefile.p'.
    Trying implicit prerequisite 'Makefile.p,v'.
    Trying pattern rule with stem 'Makefile.p'.
    Trying implicit prerequisite 'RCS/Makefile.p,v'.
    Trying pattern rule with stem 'Makefile.p'.
    Trying implicit prerequisite 'RCS/Makefile.p'.
    Trying pattern rule with stem 'Makefile.p'.
    Trying implicit prerequisite 's.Makefile.p'.
    Trying pattern rule with stem 'Makefile.p'.
    Trying implicit prerequisite 'SCCS/s.Makefile.p'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.web'.
    Looking for a rule with intermediate file 'Makefile.web'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.web'.
     Trying implicit prerequisite 'Makefile.web,v'.
     Trying pattern rule with stem 'Makefile.web'.
     Trying implicit prerequisite 'RCS/Makefile.web,v'.
     Trying pattern rule with stem 'Makefile.web'.
     Trying implicit prerequisite 'RCS/Makefile.web'.
     Trying pattern rule with stem 'Makefile.web'.
     Trying implicit prerequisite 's.Makefile.web'.
     Trying pattern rule with stem 'Makefile.web'.
     Trying implicit prerequisite 'SCCS/s.Makefile.web'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.f'.
   Looking for a rule with intermediate file 'Makefile.f'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.F'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.r'.
    Trying pattern rule with stem 'Makefile.f'.
    Trying implicit prerequisite 'Makefile.f,v'.
    Trying pattern rule with stem 'Makefile.f'.
    Trying implicit prerequisite 'RCS/Makefile.f,v'.
    Trying pattern rule with stem 'Makefile.f'.
    Trying implicit prerequisite 'RCS/Makefile.f'.
    Trying pattern rule with stem 'Makefile.f'.
    Trying implicit prerequisite 's.Makefile.f'.
    Trying pattern rule with stem 'Makefile.f'.
    Trying implicit prerequisite 'SCCS/s.Makefile.f'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.F'.
    Looking for a rule with intermediate file 'Makefile.F'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.F'.
     Trying implicit prerequisite 'Makefile.F,v'.
     Trying pattern rule with stem 'Makefile.F'.
     Trying implicit prerequisite 'RCS/Makefile.F,v'.
     Trying pattern rule with stem 'Makefile.F'.
     Trying implicit prerequisite 'RCS/Makefile.F'.
     Trying pattern rule with stem 'Makefile.F'.
     Trying implicit prerequisite 's.Makefile.F'.
     Trying pattern rule with stem 'Makefile.F'.
     Trying implicit prerequisite 'SCCS/s.Makefile.F'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.r'.
    Looking for a rule with intermediate file 'Makefile.r'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile'.
     Rejecting impossible implicit prerequisite 'Makefile.l'.
     Trying pattern rule with stem 'Makefile.r'.
     Trying implicit prerequisite 'Makefile.r,v'.
     Trying pattern rule with stem 'Makefile.r'.
     Trying implicit prerequisite 'RCS/Makefile.r,v'.
     Trying pattern rule with stem 'Makefile.r'.
     Trying implicit prerequisite 'RCS/Makefile.r'.
     Trying pattern rule with stem 'Makefile.r'.
     Trying implicit prerequisite 's.Makefile.r'.
     Trying pattern rule with stem 'Makefile.r'.
     Trying implicit prerequisite 'SCCS/s.Makefile.r'.
   Trying pattern rule with stem 'Makefile'.
   Rejecting impossible implicit prerequisite 'Makefile.F'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.m'.
   Looking for a rule with intermediate file 'Makefile.m'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.ym'.
    Trying pattern rule with stem 'Makefile.m'.
    Trying implicit prerequisite 'Makefile.m,v'.
    Trying pattern rule with stem 'Makefile.m'.
    Trying implicit prerequisite 'RCS/Makefile.m,v'.
    Trying pattern rule with stem 'Makefile.m'.
    Trying implicit prerequisite 'RCS/Makefile.m'.
    Trying pattern rule with stem 'Makefile.m'.
    Trying implicit prerequisite 's.Makefile.m'.
    Trying pattern rule with stem 'Makefile.m'.
    Trying implicit prerequisite 'SCCS/s.Makefile.m'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.ym'.
    Looking for a rule with intermediate file 'Makefile.ym'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.ym'.
     Trying implicit prerequisite 'Makefile.ym,v'.
     Trying pattern rule with stem 'Makefile.ym'.
     Trying implicit prerequisite 'RCS/Makefile.ym,v'.
     Trying pattern rule with stem 'Makefile.ym'.
     Trying implicit prerequisite 'RCS/Makefile.ym'.
     Trying pattern rule with stem 'Makefile.ym'.
     Trying implicit prerequisite 's.Makefile.ym'.
     Trying pattern rule with stem 'Makefile.ym'.
     Trying implicit prerequisite 'SCCS/s.Makefile.ym'.
   Trying pattern rule with stem 'Makefile'.
   Rejecting impossible implicit prerequisite 'Makefile.r'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.s'.
   Looking for a rule with intermediate file 'Makefile.s'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.S'.
    Trying pattern rule with stem 'Makefile.s'.
    Trying implicit prerequisite 'Makefile.s,v'.
    Trying pattern rule with stem 'Makefile.s'.
    Trying implicit prerequisite 'RCS/Makefile.s,v'.
    Trying pattern rule with stem 'Makefile.s'.
    Trying implicit prerequisite 'RCS/Makefile.s'.
    Trying pattern rule with stem 'Makefile.s'.
    Trying implicit prerequisite 's.Makefile.s'.
    Trying pattern rule with stem 'Makefile.s'.
    Trying implicit prerequisite 'SCCS/s.Makefile.s'.
    Trying pattern rule with stem 'Makefile'.
    Trying implicit prerequisite 'Makefile.S'.
    Looking for a rule with intermediate file 'Makefile.S'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'Makefile.S'.
     Trying implicit prerequisite 'Makefile.S,v'.
     Trying pattern rule with stem 'Makefile.S'.
     Trying implicit prerequisite 'RCS/Makefile.S,v'.
     Trying pattern rule with stem 'Makefile.S'.
     Trying implicit prerequisite 'RCS/Makefile.S'.
     Trying pattern rule with stem 'Makefile.S'.
     Trying implicit prerequisite 's.Makefile.S'.
     Trying pattern rule with stem 'Makefile.S'.
     Trying implicit prerequisite 'SCCS/s.Makefile.S'.
   Trying pattern rule with stem 'Makefile'.
   Rejecting impossible implicit prerequisite 'Makefile.S'.
   Trying pattern rule with stem 'Makefile'.
   Trying implicit prerequisite 'Makefile.mod'.
   Looking for a rule with intermediate file 'Makefile.mod'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'Makefile.mod'.
    Trying implicit prerequisite 'Makefile.mod,v'.
    Trying pattern rule with stem 'Makefile.mod'.
    Trying implicit prerequisite 'RCS/Makefile.mod,v'.
    Trying pattern rule with stem 'Makefile.mod'.
    Trying implicit prerequisite 'RCS/Makefile.mod'.
    Trying pattern rule with stem 'Makefile.mod'.
    Trying implicit prerequisite 's.Makefile.mod'.
    Trying pattern rule with stem 'Makefile.mod'.
    Trying implicit prerequisite 'SCCS/s.Makefile.mod'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.c'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.cc'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.C'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.cpp'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.p'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.f'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.F'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.m'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.r'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.s'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.S'.
  Trying pattern rule with stem 'Makefile'.
  Rejecting impossible implicit prerequisite 'Makefile.mod'.
  Trying pattern rule with stem 'Makefile'.
  Trying implicit prerequisite 'Makefile.sh'.
  Looking for a rule with intermediate file 'Makefile.sh'.
   Avoiding implicit rule recursion.
   Trying pattern rule with stem 'Makefile.sh'.
   Trying implicit prerequisite 'Makefile.sh,v'.
   Trying pattern rule with stem 'Makefile.sh'.
   Trying implicit prerequisite 'RCS/Makefile.sh,v'.
   Trying pattern rule with stem 'Makefile.sh'.
   Trying implicit prerequisite 'RCS/Makefile.sh'.
   Trying pattern rule with stem 'Makefile.sh'.
   Trying implicit prerequisite 's.Makefile.sh'.
   Trying pattern rule with stem 'Makefile.sh'.
   Trying implicit prerequisite 'SCCS/s.Makefile.sh'.
  No implicit rule found for 'Makefile'.
  Finished prerequisites of target file 'Makefile'.
 No need to remake target 'Makefile'.
Updating goal targets....
Considering target file 'unittest'.
 File 'unittest' does not exist.
  Considering target file 'unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest'.
   File 'unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest' does not exist.
   Looking for an implicit rule for 'unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest'.
   Trying pattern rule with stem '/usr/local/google/home/tlively/code/spec/interpreter/unittest'.
   Found an implicit rule for 'unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest'.
   Finished prerequisites of target file 'unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest'.
  Must remake target 'unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest'.
dune build unittest.exe
Putting child 0x563777c39980 (unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest) PID 138324 on the chain.
Live child 0x563777c39980 (unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest) PID 138324
Error: Don't know how to build unittest.exe
Reaping losing child 0x563777c39980 PID 138324
make: *** [Makefile:58: unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest] Error 1
Removing child 0x563777c39980 PID 138324 from chain.
rossberg commented 1 year ago
Considering target file 'unittest'.
 File 'unittest' does not exist.
  Considering target file 'unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest'.

That is super odd. How does make get to try that path as a target? On my machine I see:

Considering target file `unittest'.
 File `unittest' does not exist.
  Considering target file `unittest/smallint'.

which is what I would expect from the rules.

Hm, difficult to debug remotely, but can you add this to the makefile and run make show_unittest:

show_unittest:
    @echo UNITTESTS=${UNITTESTS}
    @echo UNITTESTFILES=${UNITTESTFILES}
    @echo UNITTESTTARGETS=${UNITTESTS:%=unittest/%}
tlively commented 1 year ago
tlively@tlively:~/code/spec/interpreter$ make show_unittest
UNITTESTS=/usr/local/google/home/tlively/code/spec/interpreter/unittest smallint
UNITTESTFILES=/usr/local/google/home/tlively/code/spec/interpreter/unittest smallint.ml
UNITTESTTARGETS=unittest//usr/local/google/home/tlively/code/spec/interpreter/unittest unittest/smallint

Indeed, when I run $ (cd unittest; ls *.ml), it prints:

/usr/local/google/home/tlively/code/spec/interpreter/unittest
smallint.ml

That bogus first line is actually being printed by cd, and apparently it's doing that because I have a CDPATH set, so this is unlikely to affect very many people.

I added > /dev/null the cd command in the Makefile and that got me slightly further:

tlively@tlively:~/code/spec/interpreter$ make -d unittest
<...>
Considering target file 'unittest'.
 File 'unittest' does not exist.
  Considering target file 'unittest/smallint'.
   File 'unittest/smallint' does not exist.
   Looking for an implicit rule for 'unittest/smallint'.
   Trying pattern rule with stem 'smallint'.
   Found an implicit rule for 'unittest/smallint'.
   Finished prerequisites of target file 'unittest/smallint'.
  Must remake target 'unittest/smallint'.
dune build smallint
Putting child 0x558801a6e9b0 (unittest/smallint) PID 361643 on the chain.
Live child 0x558801a6e9b0 (unittest/smallint) PID 361643
Error: Don't know how to build smallint
Reaping losing child 0x558801a6e9b0 PID 361643
make: *** [Makefile:58: unittest/smallint] Error 1
Removing child 0x558801a6e9b0 PID 361643 from chain.

What is the expected dune build command? If I know that, I can probably debug further.

rossberg commented 1 year ago

Interesting, I didn't even know about CDPATH.

What you should be seeing is this:

interpreter> make unittest
dune build smallint.exe
dune exec ./smallint.exe               

or

interpreter> make -d unittest
[...]
Considering target file `unittest'.
 File `unittest' does not exist.
  Considering target file `unittest/smallint'.
   File `unittest/smallint' does not exist.
   Looking for an implicit rule for `unittest/smallint'.
   Trying pattern rule with stem `smallint'.
   Found an implicit rule for `unittest/smallint'.
   Finished prerequisites of target file `unittest/smallint'.
  Must remake target `unittest/smallint'.
dune build smallint.exe
Putting child 0x60000232c050 (unittest/smallint) PID 32731 on the chain.
Live child 0x60000232c050 (unittest/smallint) PID 32731 
Reaping winning child 0x60000232c050 PID 32731 
dune exec ./smallint.exe
Live child 0x60000232c050 (unittest/smallint) PID 32734 
Reaping winning child 0x60000232c050 PID 32734 
Removing child 0x60000232c050 PID 32734 from chain.
  Successfully remade target file `unittest/smallint'.
 Finished prerequisites of target file `unittest'.
Must remake target `unittest'.
Successfully remade target file `unittest'.

I'm absolutely puzzled why you're getting dune build smallint without the .exe, given that the .exe is super explicit in the build rule. Dune won't understand what to do without it. Is this with an otherwise unmodified Makefile?

tlively commented 1 year ago

Ah, sorry about that, I had removed the .exe in my previous attempts to get things working. I put it back and now everything works great. Will make a PR adding the redirection to /dev/null.