Closed anshumanmohan closed 1 year ago
I've got a more complete review in my queue, but for now:
I would have thought that, if I had
slow-odgi-all-tests: slow-odgi-all-oracles
and I made
all-tests
repeatedly without touching the oracles, theall-oracles
script would not be run after the first time: the dependency would be satisfied for free based on which files were newer. This does not seem to be happening; theall-oracles
stuff is run every time.
Classic Make only does this "redo work only if something has changed" based on files. That is, it knows it needs to rebuild foo.o
based on foo.c
if the filesystem modification time for the foo.c
file is newer than the foo.o
file. So for "phony" targets like test-*
that don't correspond to files, Make just assumes everything needs to be done every time.
Incorporating the changes that were suggested in #50 after I closed it too early. Plus two other things.
Makefile unzipping
Earlier I had a Makefile like:
Now I have a new style:
That is, I've "unzipped", for each algorithm, (1) the setup/oracle and (2) the test. This is nice because we can generate the oracles once, noisily (it's noisy because they are all
--save
commands andturnt
warns us withnot ok ... # missing
each time). This basically gets us into expect-testing land. We can now run theslow-odgi-all-tests
target repeatedly against the same expect files. Anynot ok
s here are meaningful.One problem I'm having here is that
make
is not behaving as I understand it should. I would have thought that, if I hadand I made
all-tests
repeatedly without touching the oracles, theall-oracles
script would not be run after the first time: the dependency would be satisfied for free based on which files were newer. This does not seem to be happening; theall-oracles
stuff is run every time.No more load-bearing strings in
flip
Important background:
odgi
really does add "_inv" to the name of a path if it flips it. That bit wasn't made up by me...My previous system was:
paths
.My new system is:
paths_dec
. The dec is for "decorated".paths_dec
of its bools to create the newpaths
, which is now as before.The point is that, earlier, an input graph that already had "_inv" in a path name would have led to link-generation, regardless of whether the path required flipping and therefore link-generation. Indeed, I think iterated calls to
flip
would have been unnecessarily complex (and eventually, after dedup, no-ops) instead of just being simple no-ops. I think the new style fixes that.