Paul A. Rubin wrote:

> I think this is a known bug:
> http://bugzilla.lyx.org/show_bug.cgi?id=2285.  If I'm reading the report
> correctly, fixing it was deferred to 1.4.2.

Here is the fix. Going into trunk tomorrow if nobody objects.


Georg

Log:
Fix bug 2285 (tex2lyx is not found by lib/configure when compiling with
--with-version-suffix):

        * src/lyx_cb.C
        (reconfigure): get the configure command from package()

        * src/lyx_main.C
        (showFileError): ditto

        * src/support/package.[Ch]
        (configure_command): new, return the configure command

        * src/support/package.C.in
        (with_version_suffix): new, return the version suffix argument
        of the configure command

        * src/support/Makefile.am
        (package.C.in): substitute %PROGRAM_SUFFIX% in package.C.in

        * config/lyxinclude.m4: substitute program_suffix
Index: src/lyx_cb.C
===================================================================
--- src/lyx_cb.C	(Revision 13707)
+++ src/lyx_cb.C	(Arbeitskopie)
@@ -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();
Index: src/support/package.h
===================================================================
--- src/support/package.h	(Revision 13707)
+++ src/support/package.h	(Arbeitskopie)
@@ -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() 
 	return home_dir_;
 }
 
+inline
+std::string const & Package::configure_command() const
+{
+	return configure_command_;
+}
+
 } // namespace support
 } // namespace lyx
 
Index: src/support/package.C.in
===================================================================
--- src/support/package.C.in	(Revision 13707)
+++ src/support/package.C.in	(Arbeitskopie)
@@ -111,6 +111,9 @@ std::pair<string, bool> 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_
 		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]
 		<< "<package>\n"
 		<< "\tbinary_dir " << binary_dir() << '\n'
@@ -180,6 +187,15 @@ string const hardcoded_system_support_di
 	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
 
 
Index: src/support/Makefile.am
===================================================================
--- src/support/Makefile.am	(Revision 13707)
+++ src/support/Makefile.am	(Arbeitskopie)
@@ -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 ;\
Index: src/lyx_main.C
===================================================================
--- src/lyx_main.C	(Revision 13707)
+++ src/lyx_main.C	(Arbeitskopie)
@@ -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());
Index: config/lyxinclude.m4
===================================================================
--- config/lyxinclude.m4	(Revision 13707)
+++ config/lyxinclude.m4	(Arbeitskopie)
@@ -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[=<version>]  install lyx files as lyx<version>],
@@ -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)
 ])
 
 

Reply via email to