Error in config parse and argument passing
The shake nofib runner's logic for parsing Makefiles and passing arguments doesn't work for real/mkhprog. I thought the program only has a "fast" mode (#25 ) because it ran so fast, but it turns out, the invocation doesn't pass all the arguments and it basically does nothing! Running it manually works as expected.
The Makefile:
ARGS = -a Int -b Float -c Foo -d Bar -e Double \ -f String -g String -h Int -j Double -k Bool -n Basil -p Knob -q Wizzle \ -r Wissle -s Wibble -u Widdle -A Int -B Float -C Foo -D Bar -E Double \ -F String -G String -H Int -I Float -J Double -K Bool -L Bool -M Buzzle \ -N Basil -P Knob -Q Wizzle -R Wissle -S Wibble -T Widdle
FAST_OPTS = 200 $(ARGS) NORM_OPTS = 2000 $(ARGS) SLOW_OPTS = 10000 $(ARGS)`
These args are supposed to be incorporated into the generated Haskell source skeleton.
However, nofib-run doesn't copy the ARGS
variable and generates a config.txt with only NORM_OPTS = 2000 $(ARGS)
. Sample invokation:
cd real/mkhprog; /home/ben/Projekte/haskell/nofib/_make/ssa-foo/real/mkhprog/Main 2000 $(ARGS) +RTS --machine-readable -t/home/ben/Projekte/haskell/nofib/_make/ssa-foo/real/mkhprog/Main.stats.1
Where $(ARGS)
will evaluate to nothing and the program terminates in a few milliseconds.
nofib-run ignores the name ARGs and it can't do variable substitution.
If I change the name to PROG_ARGS
, it will copy it into the config.txt, unfortunately, it invokes the program with Main $PROG_ARGS $NORM_OPTS
, but it expects the first argument to be a number.
UPDATE:
Yes, same issue for shootout/reverse-complement. The Makefile generates the input file, nofib-run can't do that. The benchmarks is never actually run.