diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4 index 0def2730d3..2fc127d22f 100644 --- a/config/lyxinclude.m4 +++ b/config/lyxinclude.m4 @@ -29,6 +29,7 @@ dnl dnl AC_DEFUN([LYX_VERSION_SUFFIX],[ AC_MSG_CHECKING([for version suffix]) +dnl We need the literal double quotes in the rpm spec file RPM_VERSION_SUFFIX='""' AC_ARG_WITH(version-suffix, [ --with-version-suffix[=] install lyx files as lyx], @@ -606,6 +607,7 @@ case $lyx_use_packaging in *) LYX_ERROR([Unknown packaging type $lyx_use_packaging]) ;; esac AC_SUBST(pkgdatadir) +AC_SUBST(program_suffix) ]) diff --git a/src/lyx_cb.C b/src/lyx_cb.C index 70e751bac3..fbaab73305 100644 --- a/src/lyx_cb.C +++ b/src/lyx_cb.C @@ -446,9 +446,7 @@ void reconfigure(BufferView * bv) // Run configure in user lyx directory Path p(package().user_support()); - string const configure_script = - addName(package().system_support(), "configure.py"); - string const configure_command = "python " + quoteName(configure_script); + string const configure_command = package().configure_command(); Systemcall one; one.startscript(Systemcall::Wait, configure_command); p.pop(); diff --git a/src/lyx_main.C b/src/lyx_main.C index c61b15cd27..665185d037 100644 --- a/src/lyx_main.C +++ b/src/lyx_main.C @@ -115,10 +115,7 @@ void showFileError(string const & error) void reconfigureUserLyXDir() { - string const configure_script = - addName(package().system_support(), "configure.py"); - string const configure_command = - "python " + quoteName(configure_script); + string const configure_command = package().configure_command(); lyxerr << _("LyX: reconfiguring user directory") << endl; Path p(package().user_support()); diff --git a/src/support/Makefile.am b/src/support/Makefile.am index 03896e41de..8c1364875e 100644 --- a/src/support/Makefile.am +++ b/src/support/Makefile.am @@ -84,7 +84,8 @@ build_package: package.C.in @rm -f tmp_package ;\ sed "s,%LYX_DIR%,$(LYX_ABS_INSTALLED_DATADIR),;\ s,%LOCALEDIR%,$(LYX_ABS_INSTALLED_LOCALEDIR),;\ -s,%TOP_SRCDIR%,$(LYX_ABS_TOP_SRCDIR)," \ +s,%TOP_SRCDIR%,$(LYX_ABS_TOP_SRCDIR),;\ +s,%PROGRAM_SUFFIX%,$(program_suffix)," \ $(srcdir)/package.C.in > tmp_package ;\ if cmp -s tmp_package package.C ; then \ rm -f tmp_package ;\ diff --git a/src/support/package.C.in b/src/support/package.C.in index e036dcb871..b8cb355042 100644 --- a/src/support/package.C.in +++ b/src/support/package.C.in @@ -111,6 +111,9 @@ std::pair const get_user_support_dir(string const & default_user_support_dir, string const & command_line_user_support_dir); + +string const & with_version_suffix(); + } // namespace anon @@ -144,6 +147,10 @@ Package::Package(string const & command_line_arg0, get_user_support_dir(default_user_support_dir, command_line_user_support_dir); + string const configure_script = addName(system_support(), "configure.py"); + configure_command_ = "python " + quoteName(configure_script) + + with_version_suffix(); + lyxerr[Debug::INIT] << "\n" << "\tbinary_dir " << binary_dir() << '\n' @@ -180,6 +187,15 @@ string const hardcoded_system_support_dir() return string("%LYX_DIR%"); } + +string const & with_version_suffix() +{ + static string const program_suffix("%PROGRAM_SUFFIX%"); + static string const + with_version_suffix(" --with-version-suffix=%PROGRAM_SUFFIX%"); + return program_suffix.empty() ? program_suffix : with_version_suffix; +} + } // namespace anon diff --git a/src/support/package.h b/src/support/package.h index 2b44462f06..f764adc6a9 100644 --- a/src/support/package.h +++ b/src/support/package.h @@ -116,9 +116,13 @@ public: * Used by the XForms file dialog. * Used in emergencyWrite (bufferlist.C) as one possible location * for the dump. + * This may be empty (e. g. when run under a CGI environment) */ std::string const & home_dir() const; + /// Command to run the configure script + std::string const & configure_command() const; + private: std::string binary_dir_; std::string system_support_dir_; @@ -128,6 +132,7 @@ private: mutable std::string document_dir_; mutable std::string temp_dir_; std::string home_dir_; + std::string configure_command_; bool explicit_user_support_dir_; }; @@ -189,6 +194,12 @@ std::string const & Package::home_dir() const return home_dir_; } +inline +std::string const & Package::configure_command() const +{ + return configure_command_; +} + } // namespace support } // namespace lyx