The previous implementation was fine to catch timeout of third-party
tools (like dot), but to good to catch timeout in Spot itself, because
Python will not deliver a SIGALRM while a native function (e.g. Spot's
translation) is running. So we fork() the Python process, with a
parent that does nothing but wait for the termination of the child or
for an alarm. On SIGALRM, the parent kills all children.
* wrap/python/ajax/spot.in: Adjust to fork.
* wrap/python/tests/alarm.py: New test file to test this
scenario in a more controled environment.
* wrap/python/tests/Makefile.am: Add it.
(option_map::parse_options): Rewrite. Do not modify the input
string, allow !foo as a shorthand for foo=0, and support K and
M suffixes for values.
* src/tgbatest/randtgba.cc (cons_emptiness_check): Simplify.
* wrap/python/spot.i: Process optionmap.hh.
* wrap/python/tests/optionmap.py: New file.
* wrap/python/tests/Makefile.am (TESTS): Add it.
* wrap/python/spot.i: Include misc/bddalloc.hh and misc/minato.hh.
* wrap/python/tests/minato.py: New file.
* wrap/python/tests/Makefile.am (TESTS): Add minato.py.
(libspotswigpy_la_SOURCES, libspotswigpy_la_CFLAGS)
(libspotswigpy_la_LDFLAGS): New variables.
(_spot_la_LIBADD, _buddy_la_LDFLAGS): Link with libspotswigpy.la
($(srcdir)/spot_wrap.cxx, $(srcdir)/buddy_wrap.cxx): Run
swig with -c.
* wrap/python/tests/libpy.c: New file.
* wrap/python/tests/run.in: Run python if no arguments are given.
* wrap/python/tests/interdep.py: New file.
* wrap/python/tests/Makefile.am (TESTS): Add interdep.py.
and wrap/python/tests/run.
* wrap/python/Makefile.am (SUBDIRS): New variable.
* wrap/python/spot.i: Include all formulae headers from ltlast/,
as well as ltlvisit/destroy.hh.
(spot::ltl::formula::__cmp__, spot::ltl::formula::__str__): New
functions.
* wrap/python/tests/Makefile.am, wrap/python/tests/ltlsimple.py,
wrap/python/tests/run.in: New files.