]> git.lyx.org Git - lyx.git/blobdiff - src/support/Package.cpp
Fix build with GNU libstdc++ C++11 ABI
[lyx.git] / src / support / Package.cpp
index 2e2aebd2f7a326edb178c6afa4199ff50004bb0c..66b0e60f0ad80455490926792f0665fd606d813d 100644 (file)
 #include "support/lassert.h"
 #include "support/lstrings.h"
 #include "support/os.h"
+#include "support/PathChanger.h"
+#include "support/Systemcall.h"
 
 #if defined (USE_WINDOWS_PACKAGING)
 # include "support/os_win32.h"
 #endif
 
 
+#include <iostream>
 #include <list>
 
 #if !defined (USE_WINDOWS_PACKAGING) && \
@@ -138,11 +141,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(), quote_python) +
-                       with_version_suffix() + " --binary-dir=" +
-                       quoteName(FileName(binary_dir().absFileName()).toFilesystemEncoding());
 
        LYXERR(Debug::INIT, "<package>\n"
                << "\tbinary_dir " << binary_dir().absFileName() << '\n'
@@ -157,6 +155,31 @@ Package::Package(string const & command_line_arg0,
 }
 
 
+int Package::reconfigureUserLyXDir(string const & option) 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());
+       }
+
+       lyxerr << to_utf8(_("LyX: reconfiguring user directory")) << endl;
+       PathChanger p(user_support());
+       Systemcall one;
+       int const ret = one.startscript(Systemcall::Wait, configure_command_ + option);
+       lyxerr << "LyX: " << to_utf8(_("Done!")) << endl;
+       return ret;
+}
+
+
+string Package::getConfigureLockName() const
+{
+       return user_support().absFileName() + ".lyx_configure_lock";
+}
+
+
 void Package::set_temp_dir(FileName const & temp_dir) const
 {
        if (temp_dir.empty())
@@ -169,15 +192,11 @@ void Package::set_temp_dir(FileName const & temp_dir) const
 FileName Package::messages_file(string const & c) const
 {
        if (in_build_dir_) {
-                FileName res = FileName(lyx_dir().absFileName() + "/po/"
-                                                + c + ".gmo");
-                if (!res.isReadableFile())
-                        res = FileName(top_srcdir().absFileName() + "/po/"
-                                                + c + ".gmo");
-
+               FileName res = FileName(lyx_dir().absFileName() + "/../po/" + c + ".gmo");
+               if (!res.isReadableFile())
+                       res = FileName(top_srcdir().absFileName() + "/po/" + c + ".gmo");
                return res;
-        }
-       else
+       } else
                return FileName(locale_dir_.absFileName() + "/" + c
                        + "/LC_MESSAGES/" PACKAGE ".mo");
 }