commit 1c458dc1212865e9c9e2fd0207f15a72f4988e63
Author: José Matos <[email protected]>
Date: Mon Jun 10 10:04:26 2024 +0100
Python runtime detection requirement upgraded to 3.8
Remove -tt option that is a no-op in Python 3.
Remove search for Python 2
---
config/lyxpython.m4 | 62 -----------------------------------------------
src/support/os.cpp | 70 ++++++++++-------------------------------------------
2 files changed, 13 insertions(+), 119 deletions(-)
diff --git a/config/lyxpython.m4 b/config/lyxpython.m4
deleted file mode 100644
index 21d0d8a963..0000000000
--- a/config/lyxpython.m4
+++ /dev/null
@@ -1,62 +0,0 @@
-## ------------------------ -*- Autoconf -*-
-# adapted for LyX from the automake python support.
-## Python file handling
-## From Andrew Dalke
-## Updated by James Henstridge
-## ------------------------
-# Copyright (C) 1999-2015 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-dnl Usage: LYX_PATH_PYTHON23(PY2-MIN-VERSION, PYTHON3-MIN-VERSION)
-dnl Find a suitable Python interpreter, that is either python2 >= $1
-dnl or python3 >= $2. Stop with an error message if it has not been found.
-AC_DEFUN([LYX_PATH_PYTHON23],
- [
- m4_define(py2_ver, [patsubst($1,[\.],[,])])
- m4_define(py3_ver, [patsubst($2,[\.],[,])])
-
- m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python3 python2 python])
-
- if test -n "$PYTHON"; then
- # If the user set $PYTHON, use it and don't search something else.
- AC_MSG_CHECKING([whether $PYTHON version is >= $1 or $2])
- LYX_PYTHON_CHECK_VERSION([$PYTHON],
- [AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])
- AC_MSG_ERROR([Python interpreter is not
suitable])])
- am_display_PYTHON=$PYTHON
- else
- # Otherwise, try each interpreter until we find one that satisfies
- # LYX_PYTHON_CHECK_VERSION.
- AC_CACHE_CHECK([for a Python interpreter with version >= $1 or $2],
- [am_cv_pathless_PYTHON],[
- for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
- test "$am_cv_pathless_PYTHON" = none && break
- LYX_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [break])
- done])
- # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
- if test "$am_cv_pathless_PYTHON" = none; then
- PYTHON=:
- else
- AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
- fi
- am_display_PYTHON=$am_cv_pathless_PYTHON
- fi
-
- if test "$PYTHON" = : ; then
- AC_MSG_ERROR([no suitable Python interpreter found])
- fi
-])
-
-# LYX_PYTHON_CHECK_VERSION(PROG, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
-# ---------------------------------------------------------------------------
-# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= py2_ver or
py3_ver.
-# Run ACTION-IF-FALSE otherwise.
-AC_DEFUN([LYX_PYTHON_CHECK_VERSION],
- [prog="import sys
-version = sys.version_info@<:@:3@:>@
-sys.exit(not ((py2_ver) <= version < (3,0,0) or version >= (py3_ver)))"
- AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$2], [$3])])
diff --git a/src/support/os.cpp b/src/support/os.cpp
index 27427cd8ea..a245a46957 100644
--- a/src/support/os.cpp
+++ b/src/support/os.cpp
@@ -56,12 +56,12 @@ int timeout_ms()
}
-static string const python23_call(string const & binary, bool verbose = false)
+static string const python_call(string const & binary, bool verbose = false)
{
- const string version_info = " -c \"from __future__ import
print_function; import sys; print(sys.version_info[:2], end='')\"";
- // Default to "python" if no binary is given.
+ const string version_info = " -c \"import sys;
print(sys.version_info[:2], end='')\"";
+ // Default to "python3" if no binary is given.
if (binary.empty())
- return "python -tt";
+ return "python3";
if (verbose)
lyxerr << "Examining " << binary << "\n";
@@ -80,14 +80,12 @@ static string const python23_call(string const & binary,
bool verbose = false)
int major = convert<int>(sm.str(1));
int minor = convert<int>(sm.str(2));
- if((major == 2 && minor < 7) || (major == 3 && minor < 5))
+ if((major < 3) || (major == 3 && minor < 8))
return string();
if (verbose)
lyxerr << "Found Python " << out.result << "\n";
- // Add the -tt switch so that mixed tab/whitespace
- // indentation is an error
- return binary + " -tt";
+ return binary;
}
@@ -102,15 +100,14 @@ static string const find_python_binary()
#ifdef _WIN32
// Check through python launcher whether python 3 is
// installed on computer.
- string command = python23_call("py -3");
+ string command = python_call("py -3");
#else
// Check whether python3 in PATH is the right one.
- string command = python23_call("python3");
+ string command = python_call("python3");
#endif // _WIN32
if (!command.empty())
return command;
-#ifndef _WIN32
// python3 does not exists, let us try to find python3.x in PATH
// the search is probably broader than required
// but we are trying hard to find a valid python binary
@@ -125,59 +122,18 @@ static string const find_python_binary()
for (auto const & bin2 : list) {
string const binary = "\"" + addName(localdir,
bin2.toLocal8Bit().constData()) + "\"";
- command = python23_call(binary, true);
+ command = python_call(binary, true);
if (!command.empty())
return command;
}
}
-#endif // !_WIN32
- // python 3 was not found let us look for python 2
-#ifdef _WIN32
- command = python23_call("py -2");
-#else
- command = python23_call("python2");
-#endif // _WIN32
- if (!command.empty())
- return command;
-
-#ifdef _WIN32
- // python launcher is not installed, let cmd auto check
- // PATH for a python.exe
- command = python23_call("python");
if (!command.empty())
return command;
- //failed, prepare to search PATH manually
- vector<string> const path = getEnvPath("PATH");
- lyxerr << "Manually looking for python in PATH ...\n";
- QString const exeName = "python*";
-#else
- // python2 does not exists, let us try to find python2.x in PATH
- // the search is probably broader than required
- // but we are trying hard to find a valid python binary
- lyxerr << "Looking for python 2.x ...\n";
- QString const exeName = "python2*";
-#endif // _WIN32
-
- for (auto const & bin : path) {
- QString const dir = toqstr(bin);
- string const localdir = dir.toLocal8Bit().constData();
- QDir qdir(dir);
- qdir.setFilter(QDir::Files | QDir::Executable);
- QStringList list = qdir.entryList(QStringList(exeName));
- for (auto const & bin2 : list) {
- string const binary = "\"" + addName(localdir,
- bin2.toLocal8Bit().constData()) + "\"";
- command = python23_call(binary, true);
- if (!command.empty())
- return command;
- }
- }
-
// If this happens all hope is lost that this is a sane system
- lyxerr << "Warning: No python v2.x or 3.x binary found.\n";
- return python23_call("");
+ lyxerr << "Warning: No Python 3.x binary found.\n";
+ return python_call("");
}
@@ -194,12 +150,12 @@ string const python(bool reset)
bool hasPython()
{
- return !(python23_call(python()).empty());
+ return !(python_call(python()).empty());
}
string const python_info()
{
- const string info_version = " -c \"from __future__ import
print_function; import sys; print('{}
({})'.format(sys.version.split()[0],sys.executable), end='')\"";
+ const string info_version = " -c \"import sys; print('{}
({})'.format(sys.version.split()[0],sys.executable), end='')\"";
if (!hasPython())
return("None");
return (runCommand(python() + info_version).result);
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs