> I would guess there is a non-zero error code returned. Then we can do the following.
1. check the return value of configure.py Index: src/callback.cpp =================================================================== --- src/callback.cpp (revision 20528) +++ src/callback.cpp (working copy) @@ -444,7 +444,7 @@ string configure_command = package().configure_command(); configure_command += option; Systemcall one; - one.startscript(Systemcall::Wait, configure_command); + int ret = one.startscript(Systemcall::Wait, configure_command); p.pop(); // emit message signal. lv.message(_("Reloading configuration...")); @@ -452,7 +452,13 @@ // Re-read packages.lst LaTeXFeatures::getAvailable(); - Alert::information(_("System reconfigured"), + if (ret) + Alert::information(_("System reconfiguration failed"), + _("The system reconfiguration has failed.\n" + "Default textclass is used but lyx may not be able to work properly.\n" + "Please reconfigure again if needed.")); + else + Alert::information(_("System reconfigured"), _("The system has been reconfigured.\n" "You need to restart LyX to make use of any\n" "updated document class specifications.")); 2. Check the return status of the long LATEX configure run. http://docs.python.org/lib/os-newstreams.html#os-newstreams The exit status of the command (encoded in the format specified for wait()) is available as the return value of the close() method of the file object, except that when the exit status is zero (termination without errors), None is returned. Availability: Macintosh, Unix, Windows. Index: lib/configure.py =================================================================== --- lib/configure.py (revision 20528) +++ lib/configure.py (working copy) break; if re.match('^\+', line): print line, - fout.close() + # if the command succeeds, None will be returned + ret = fout.close() 3. Return the status of this LATEX configure. - checkLatexConfig( lyx_check_config and LATEX != '', bool_docbook, bool_linuxdoc) + ret = checkLatexConfig(lyx_check_config and LATEX != '', bool_docbook, bool_linuxdoc) createLaTeXConfig() removeTempFiles() + sys.exit(ret) Of course, configure.py may fail due to other reasons, but this one is right now the 100% source of trouble. I have no time to polish this patch today. I can do it this weekend or you can take it over if 1.5.2 is pressing. Cheers, Bo
Index: src/callback.cpp =================================================================== --- src/callback.cpp (revision 20528) +++ src/callback.cpp (working copy) @@ -444,7 +444,7 @@ string configure_command = package().configure_command(); configure_command += option; Systemcall one; - one.startscript(Systemcall::Wait, configure_command); + int ret = one.startscript(Systemcall::Wait, configure_command); p.pop(); // emit message signal. lv.message(_("Reloading configuration...")); @@ -452,7 +452,13 @@ // Re-read packages.lst LaTeXFeatures::getAvailable(); - Alert::information(_("System reconfigured"), + if (ret) + Alert::information(_("System reconfiguration failed"), + _("The system reconfiguration has failed.\n" + "Default textclass is used but lyx may not be able to work properly.\n" + "Please reconfigure again if needed.")); + else + Alert::information(_("System reconfigured"), _("The system has been reconfigured.\n" "You need to restart LyX to make use of any\n" "updated document class specifications.")); Index: lib/configure.py =================================================================== --- lib/configure.py (revision 20528) +++ lib/configure.py (working copy) @@ -589,7 +589,9 @@ def checkLatexConfig(check_config, bool_docbook, bool_linuxdoc): - ''' Explore the LaTeX configuration ''' + ''' Explore the LaTeX configuration + Return None (will be passed to sys.exit()) for success. + ''' print 'checking LaTeX configuration... ', # if --without-latex-config is forced, or if there is no previous # version of textclass.lst, re-generate a default file. @@ -628,8 +630,10 @@ tx.write(processLayoutFile(file, bool_docbook, bool_linuxdoc)) tx.close() print '\tdone' + if not check_config: + return None # the following will generate textclass.lst.tmp, and packages.lst.tmp - if check_config: + else: print '\tauto' removeFiles(['wrap_chkconfig.ltx', 'chkconfig.vars', \ 'chkconfig.classes', 'chklayouts.tex']) @@ -671,7 +675,8 @@ break; if re.match('^\+', line): print line, - fout.close() + # if the command succeeds, None will be returned + ret = fout.close() # # currently, values in chhkconfig are only used to set # \font_encoding @@ -693,6 +698,7 @@ and os.path.isfile('packages.lst.tmp') and len(open('packages.lst.tmp').read()) > 0: shutil.move('textclass.lst.tmp', 'textclass.lst') shutil.move('packages.lst.tmp', 'packages.lst') + return ret def createLaTeXConfig(): @@ -839,6 +845,7 @@ addToRC(r'\tex_expects_windows_paths %s' % windows_style_tex_paths) checkOtherEntries() # --without-latex-config can disable lyx_check_config - checkLatexConfig( lyx_check_config and LATEX != '', bool_docbook, bool_linuxdoc) + ret = checkLatexConfig(lyx_check_config and LATEX != '', bool_docbook, bool_linuxdoc) createLaTeXConfig() removeTempFiles() + sys.exit(ret)