From a0cc99ff6a6f75b24654d0109c558eb9000d967c Mon Sep 17 00:00:00 2001 From: Benjamin Piwowarski Date: Fri, 14 Mar 2014 11:48:40 +0100 Subject: [PATCH] Fix problem with python and change of PATH - waits that lyxrc has been read before finding python - when the PATH changes, resets the value - updated status.21x --- src/LyXRC.cpp | 2 ++ src/support/Package.cpp | 17 ++++++++++++----- src/support/Package.h | 4 ++-- src/support/os.cpp | 5 ++++- src/support/os.h | 3 ++- status.21x | 9 ++++++++- 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index f3183164bc..80b85141d2 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -3006,6 +3006,8 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) case LyXRC::RC_PATH_PREFIX: if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) { prependEnvPath("PATH", lyxrc_new.path_prefix); + // Resets python path + support::os::python(true); } case LyXRC::RC_PREVIEW: case LyXRC::RC_PREVIEW_HASHED_LABELS: diff --git a/src/support/Package.cpp b/src/support/Package.cpp index 96b8dae415..b4b0e1493d 100644 --- a/src/support/Package.cpp +++ b/src/support/Package.cpp @@ -138,11 +138,6 @@ Package::Package(string const & command_line_arg0, explicit_user_support_dir_ = userSupportDir(default_user_support_dir, command_line_user_support_dir, user_support_dir_); - FileName const configure_script(addName(system_support().absFileName(), "configure.py")); - configure_command_ = os::python() + ' ' + - quoteName(configure_script.toFilesystemEncoding()) + - with_version_suffix() + " --binary-dir=" + - quoteName(FileName(binary_dir().absFileName()).toFilesystemEncoding()); LYXERR(Debug::INIT, "\n" << "\tbinary_dir " << binary_dir().absFileName() << '\n' @@ -156,6 +151,18 @@ Package::Package(string const & command_line_arg0, << "\n"); } +std::string const & Package::configure_command() const +{ + if (configure_command_.empty()) { + FileName const configure_script(addName(system_support().absFileName(), "configure.py")); + configure_command_ = os::python() + ' ' + + quoteName(configure_script.toFilesystemEncoding()) + + with_version_suffix() + " --binary-dir=" + + quoteName(FileName(binary_dir().absFileName()).toFilesystemEncoding()); + } + return configure_command_; +} + void Package::set_temp_dir(FileName const & temp_dir) const { diff --git a/src/support/Package.h b/src/support/Package.h index 064f662e4e..e5cc323260 100644 --- a/src/support/Package.h +++ b/src/support/Package.h @@ -138,7 +138,7 @@ public: * Caution: This is "ready-to-run", i.e. in the locale encoding, not * utf8. */ - std::string const & configure_command() const { return configure_command_; } + std::string const & configure_command() const; private: FileName binary_dir_; @@ -151,7 +151,7 @@ private: mutable FileName document_dir_; mutable FileName temp_dir_; FileName system_temp_dir_; - std::string configure_command_; + mutable std::string configure_command_; bool explicit_user_support_dir_; bool in_build_dir_; }; diff --git a/src/support/os.cpp b/src/support/os.cpp index aa2da7f174..8f60c68fb4 100644 --- a/src/support/os.cpp +++ b/src/support/os.cpp @@ -60,10 +60,13 @@ int timeout_min() } -string const python() +string const python(bool reset) { // Check whether the first python in PATH is the right one. static string command = python2("python -tt"); + if (reset) { + command = python2("python -tt"); + } if (command.empty()) { // It was not, so check whether we can find it elsewhere in diff --git a/src/support/os.h b/src/support/os.h index d66173b1a7..73eb86d7f3 100644 --- a/src/support/os.h +++ b/src/support/os.h @@ -59,7 +59,8 @@ shell_type shell(); int timeout_min(); /// Name of the python interpreter -std::string const python(); +/// @param reset True if the python path should be recomputed +std::string const python(bool reset = false); /// bool isFilesystemCaseSensitive(); diff --git a/status.21x b/status.21x index c201f89d6b..cb44e134c8 100644 --- a/status.21x +++ b/status.21x @@ -71,7 +71,14 @@ What's new - Fix "Select Section" function in the Outliner (bug 8936). - Fix select-by-doubleclick in mathed (bug 8829). - + + + +* INTERNALS + +- Fix a problem when PATH changes and python command is relative (bug 8950). + + * DOCUMENTATION AND LOCALIZATION -- 2.39.5