evoldoers / biomake

GNU-Make-like utility for managing builds and complex workflows
BSD 3-Clause "New" or "Revised" License
100 stars 9 forks source link

biomake does not actually abort on ^C. #43

Closed dondelelcaro closed 6 years ago

dondelelcaro commented 7 years ago

It is incredibly difficult to trigger biomake to exit with SIGINT (^C). You basically have to kill it, and all of the subprocesses which biomake generates.

Presumably there is some way to override the interrupt handler of prolog to actually exit sanely.

cmungall commented 7 years ago

Hmm, I'm unable to recreate this in my OS X environment

Makefile:

sleep:
    sleep 9999
$ biomake
Target sleep not materialized - build required
sleep 9999

Then I ^C it:

^CForeign predicate shell/2 did not clear exception: error(shell(signal(2),sleep 9999),context(shell/2,_G3771))
While building sleep: Error 1 executing sleep 9999

Bit of an opaque error message but it seems to respect SIGINT.

What environment do you use? Can you recreate this with a small example?

dondelelcaro commented 7 years ago

I actually ran across it because I ran biomake on the Makefile that biomake distributes.

On other makefiles it seems to work fine, though.

ihh commented 6 years ago

The root-level Makefile launches a bunch of biomake sub-jobs (each running SWI-Prolog in its own shell). Pressing ctrl-C will probably go to one of the sub-jobs. On my system you get the same behavior if you run GNU make on this Makefile.