From: Juergen Spitzmueller Date: Wed, 12 Feb 2020 15:11:01 +0000 (+0100) Subject: Revert "Fix bug #11712." X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=87428e4aad48c884fee635a118772b82fd104324;p=features.git Revert "Fix bug #11712." This breaks on Linux This reverts commit fdf81a9bab2f4f50a3eaf22cc0e09ac454f470ed. --- diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp index bca242d376..e8119959fd 100644 --- a/src/support/filetools.cpp +++ b/src/support/filetools.cpp @@ -635,7 +635,7 @@ string const addName(string const & path, string const & fname) if (path != "." && path != "./" && !path.empty()) { buf = os::internal_path(path); - if (!suffixIs(buf, '/')) + if (!suffixIs(path, '/')) buf += '/'; } @@ -1039,7 +1039,7 @@ cmd_ret const runCommand(string const & cmd) command = rtrim(command, "2>&1"); err2out = true; } - string const cmdarg = "/d /c \"" + command+"\""; + string const cmdarg = "/d /c " + command; string const comspec = getEnv("COMSPEC"); security.nLength = sizeof(SECURITY_ATTRIBUTES); diff --git a/src/support/os.cpp b/src/support/os.cpp index b1e4e09b8e..10430bf5a2 100644 --- a/src/support/os.cpp +++ b/src/support/os.cpp @@ -48,7 +48,7 @@ int timeout_min() static string const python23_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=\\\"\\\")\""; + 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. if (binary.empty()) return "python -tt"; @@ -89,31 +89,49 @@ static string const find_python_binary() // PEP 397 -- Python launcher for Windows // https://www.python.org/dev/peps/pep-0397/ - // Check through python launcher whether python3 is - // installed on computer. - string command = python23_call("py -3"); + // Check whether python3 in PATH is the right one. + string command = python23_call("python3"); if (!command.empty()) return command; + // 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 + vector const path = getEnvPath("PATH"); + lyxerr << "Looking for python 3.x ...\n"; + for (auto 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("python3*")); + for (auto bin2 : list) { + string const binary = addName(localdir, + bin2.toLocal8Bit().constData()); + command = python23_call(binary, true); + if (!command.empty()) + return command; + } + } + // python 3 was not found let us look for python 2 - command = python23_call("py -2"); + command = python23_call("python2"); if (!command.empty()) return command; - // python3 does not exists, let us try to find python3.x in PATH + // 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 - vector const path = getEnvPath("PATH"); - lyxerr << "Looking for python in PATH ...\n"; + lyxerr << "Looking for python 2.x ...\n"; for (auto 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("python*")); + QStringList list = qdir.entryList(QStringList("python2*")); for (auto bin2 : list) { - string const binary = "\"" + addName(localdir, - bin2.toLocal8Bit().constData()) + "\""; + string const binary = addName(localdir, + bin2.toLocal8Bit().constData()); command = python23_call(binary, true); if (!command.empty()) return command;