require python 3.6

* HACKING, NEWS, README, doc/org/install.org: Update.
* m4/pypath.m4, python/spot/__init__.py: Adjust requirements.
* python/spot/ltsmin.i: Don't use capture_output, this is a 3.7
option.
This commit is contained in:
Alexandre Duret-Lutz 2024-03-26 16:21:44 +01:00
parent 88f8af22c3
commit df44f7a5c2
7 changed files with 17 additions and 10 deletions

View file

@ -42,7 +42,7 @@ since the generated files they produce are distributed.)
A complete LaTeX distribution, including latexmk and extra fonts A complete LaTeX distribution, including latexmk and extra fonts
like dsfont.sty. like dsfont.sty.
ImageMagick ImageMagick
Python >= 3.5, IPython >= 2.3 Python >= 3.6, IPython >= 2.3
Jupyter >= 4, with nbconvert Jupyter >= 4, with nbconvert
GraphViz GraphViz
Java >= 1.7 (needed to run PlantUML while generating the doc) Java >= 1.7 (needed to run PlantUML while generating the doc)

6
NEWS
View file

@ -1,5 +1,11 @@
New in spot 2.11.6.dev (not yet released) New in spot 2.11.6.dev (not yet released)
Build:
- When Python bindings are enabled, Spot now requires Python 3.6 or
later. Python 3.6 has reached end-of-life in 2021, but is still
used on CentOS 7 (which will reach end-of-support later in 2024).
Documentation: Documentation:
- https://spot.lre.epita.fr/tut25.html is a new example showing - https://spot.lre.epita.fr/tut25.html is a new example showing

4
README
View file

@ -76,7 +76,7 @@ Requirements
Spot requires a C++17-compliant compiler. G++ 7.x or later, as well Spot requires a C++17-compliant compiler. G++ 7.x or later, as well
as Clang++ 5.0 or later should work. as Clang++ 5.0 or later should work.
Spot expects a complete installation of Python (version 3.5 or later). Spot expects a complete installation of Python (version 3.6 or later).
Especially, Python's headers files should be installed. If you don't Especially, Python's headers files should be installed. If you don't
have Python installed, and do NOT want to install it, you should run have Python installed, and do NOT want to install it, you should run
configure with the --disable-python option (see below). configure with the --disable-python option (see below).
@ -133,7 +133,7 @@ flags specific to Spot:
offers a convenient interface when used in an IPython notebook, offers a convenient interface when used in an IPython notebook,
and are also used to build the CGI script that translates LTL and are also used to build the CGI script that translates LTL
formulas on-line. You may safely disable these, especially if you formulas on-line. You may safely disable these, especially if you
do not have a working Python 3.2+ installation or if you are do not have a working Python 3.6+ installation or if you are
attempting some cross-compilation. attempting some cross-compilation.
--enable-max-accsets=N --enable-max-accsets=N

View file

@ -22,7 +22,7 @@ successful development build]].
Spot requires a C++17-compliant compiler. =g++= 7.0 or later, as well Spot requires a C++17-compliant compiler. =g++= 7.0 or later, as well
as =clang++= 5.0 or later should work. as =clang++= 5.0 or later should work.
Spot expects a complete installation of Python (version 3.5 or later). Spot expects a complete installation of Python (version 3.6 or later).
Especially, Python's headers files should be installed (the package to Especially, Python's headers files should be installed (the package to
install has a name like =python-dev= or =libpython3-dev= in most install has a name like =python-dev= or =libpython3-dev= in most
distributions). If you don't have Python installed, and do NOT want distributions). If you don't have Python installed, and do NOT want

View file

@ -1,5 +1,5 @@
AC_DEFUN([adl_CHECK_PYTHON], AC_DEFUN([adl_CHECK_PYTHON],
[AM_PATH_PYTHON([3.5]) [AM_PATH_PYTHON([3.6])
case $PYTHON in case $PYTHON in
[[\\/$]]* | ?:[[\\/]]* );; [[\\/$]]* | ?:[[\\/]]* );;
*) AC_MSG_ERROR([The PYTHON variable must be set to an absolute filename.]);; *) AC_MSG_ERROR([The PYTHON variable must be set to an absolute filename.]);;

View file

@ -19,8 +19,8 @@
import sys import sys
if sys.hexversion < 0x03030000: if sys.hexversion < 0x03060000:
sys.exit("This module requires Python 3.3 or newer") sys.exit("This module requires Python 3.6 or newer")
import subprocess import subprocess
import os import os
@ -710,7 +710,7 @@ def automata(*sources, timeout=None, ignore_abort=True,
# returned by spot.automata() is destroyed. Otherwise, _supress() # returned by spot.automata() is destroyed. Otherwise, _supress()
# is just a dummy context manager that does nothing (Python 3.7 # is just a dummy context manager that does nothing (Python 3.7
# introduces nullcontext() for this purpose, but at the time of # introduces nullcontext() for this purpose, but at the time of
# writing we support Python 3.4). # writing we still have to support Python 3.6).
mgr = proc if proc else _supress() mgr = proc if proc else _supress()
with mgr: with mgr:
while a: while a:
@ -730,7 +730,7 @@ def automata(*sources, timeout=None, ignore_abort=True,
# an exception. # an exception.
if ret and sys.exc_info()[0] is None: if ret and sys.exc_info()[0] is None:
raise subprocess.CalledProcessError(ret, filename[:-1]) raise subprocess.CalledProcessError(ret, filename[:-1])
# deleting o explicitly now prevents Python 3.5 from # deleting o explicitly used to prevent Python 3.5 from
# reporting the following error: "<built-in function # reporting the following error: "<built-in function
# delete_automaton_parser_options> returned a result with # delete_automaton_parser_options> returned a result with
# an error set". It's not clear to me if the bug is in Python # an error set". It's not clear to me if the bug is in Python

View file

@ -173,7 +173,8 @@ try:
try: try:
p = subprocess.run(['divine', 'compile', p = subprocess.run(['divine', 'compile',
'--ltsmin', t.name], '--ltsmin', t.name],
capture_output=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True) universal_newlines=True)
if p.stdout: print(p.stdout) if p.stdout: print(p.stdout)
if p.stderr: print(p.stderr, file=sys.stderr) if p.stderr: print(p.stderr, file=sys.stderr)