#12523 check for existence of usable Python interpreter

Backport of change bbc2270

- present appropriate alert message in case of missing Python
- add the option to quit LyX immediately
- recheck for Python interpreter on reconfigure if it was missing
This commit is contained in:
Stephan Witt 2023-06-14 12:00:41 +02:00
parent f5457342c4
commit b2a026fbf7
4 changed files with 34 additions and 5 deletions

View File

@ -585,10 +585,11 @@ void LyX::execCommands()
{
// The advantage of doing this here is that the event loop
// is already started. So any need for interaction will be
// aknowledged.
// acknowledged.
// if reconfiguration is needed.
if (LayoutFileList::get().empty()) {
const bool noLayouts = LayoutFileList::get().empty();
if (noLayouts && os::hasPython()) {
switch (Alert::prompt(
_("No textclass is found"),
_("LyX will only have minimal functionality because no textclasses "
@ -597,7 +598,8 @@ void LyX::execCommands()
0, 2,
_("&Reconfigure"),
_("&Without LaTeX"),
_("&Continue")))
_("&Continue"),
_("&Exit LyX")))
{
case 0:
// regular reconfigure
@ -608,6 +610,24 @@ void LyX::execCommands()
lyx::dispatch(FuncRequest(LFUN_RECONFIGURE,
" --without-latex-config"));
break;
case 3:
lyx::dispatch(FuncRequest(LFUN_LYX_QUIT, ""));
return;
default:
break;
}
} else if (noLayouts) {
switch (Alert::prompt(
_("No python is found"),
_("LyX will only have minimal functionality because no python interpreter "
"has been found. Consider download and install of an python interpreter."),
0, 1,
_("&Continue"),
_("&Exit LyX")))
{
case 1:
lyx::dispatch(FuncRequest(LFUN_LYX_QUIT, ""));
return;
default:
break;
}

View File

@ -158,9 +158,9 @@ Package::Package(string const & command_line_arg0,
int Package::reconfigureUserLyXDir(string const & option) const
{
if (configure_command_.empty()) {
if (configure_command_.empty() || !os::hasPython()) {
FileName const configure_script(addName(system_support().absFileName(), "configure.py"));
configure_command_ = os::python() + ' ' +
configure_command_ = os::python(true) + ' ' +
quoteName(configure_script.toFilesystemEncoding()) +
with_version_suffix() + " --binary-dir=" +
quoteName(FileName(binary_dir().absFileName()).toFilesystemEncoding());

View File

@ -104,6 +104,12 @@ string const python(bool reset)
return command;
}
bool hasPython()
{
return !(python23(python()).empty());
}
} // namespace os
} // namespace support
} // namespace lyx

View File

@ -62,6 +62,9 @@ int timeout_min();
/// @param reset True if the python path should be recomputed
std::string const python(bool reset = false);
/// Check for availability of the python interpreter
bool hasPython();
///
bool isFilesystemCaseSensitive();