X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=83c7c84f8f251c61c37545965f0d30127affd0b7;hb=7335b3193b98300a81cabdaeae9385d3aaabd662;hp=e2cfab7f98b46bec439f6d01eed814548f6e0a9b;hpb=9657ffd77fa3cd0b9c57dd8d2e3d370566b3d08a;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index e2cfab7f98..83c7c84f8f 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -60,9 +60,16 @@ def cmdOutput(cmd): '''utility function: run a command and get its output as a string cmd: command to run ''' - fout = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout - output = fout.read() - fout.close() + if os.name == 'nt': + b = False + cmd = 'cmd /d /c ' + cmd + else: + b = True + pipe = subprocess.Popen(cmd, shell=b, close_fds=b, stdin=subprocess.PIPE, \ + stdout=subprocess.PIPE, universal_newlines=True) + pipe.stdin.close() + output = pipe.stdout.read() + pipe.stdout.close() return output.strip() @@ -163,10 +170,15 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''): sys.exit(2) logger.info('checking for ' + description + '...') ## print '(' + ','.join(progs) + ')', + global java, perl for idx in range(len(progs)): # ac_prog may have options, ac_word is the command name ac_prog = progs[idx] ac_word = ac_prog.split(' ')[0] + if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '': + continue + if ac_word.endswith('.pl') and perl == '': + continue msg = '+checking for "' + ac_word + '"... ' path = os.environ["PATH"].split(os.pathsep) + path extlist = [''] @@ -176,6 +188,13 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''): for ext in extlist: if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ): logger.info(msg + ' yes') + # deal with java and perl + if ac_word.endswith('.class'): + ac_prog = ac_prog.replace(ac_word, r'%s \"%s\"' % (java, os.path.join(ac_dir, ac_word[:-6]))) + elif ac_word.endswith('.jar'): + ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word))) + elif ac_word.endswith('.pl'): + ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word))) # write rc entries for this command if len(rc_entry) == 1: addToRC(rc_entry[0].replace('%%', ac_prog)) @@ -204,10 +223,15 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [], found_prime = False real_ac_dir = '' real_ac_word = not_found + global java, perl for idx in range(len(progs)): # ac_prog may have options, ac_word is the command name ac_prog = progs[idx] ac_word = ac_prog.split(' ')[0] + if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '': + continue + if ac_word.endswith('.pl') and perl == '': + continue msg = '+checking for "' + ac_word + '"... ' path = os.environ["PATH"].split(os.pathsep) + path extlist = [''] @@ -220,6 +244,13 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [], logger.info(msg + ' yes') pr = re.compile(r'(\\\S+)(.*)$') m = None + # deal with java and perl + if ac_word.endswith('.class'): + ac_prog = ac_prog.replace(ac_word, r'%s \"%s\"' % (java, os.path.join(ac_dir, ac_word[:-6]))) + elif ac_word.endswith('.jar'): + ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word))) + elif ac_word.endswith('.pl'): + ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word))) # write rc entries for this command if found_prime == False: if len(rc_entry) == 1: @@ -277,13 +308,13 @@ def addAlternatives(rcs, alt_type): if len(rcs) == 1: m = r.match(rcs[0]) if m: - alt = '\n'.join([s + m.group(1) + " %%" for s in alt_tokens]) + alt = '\n'.join([s + m.group(1) + ' "%%"' for s in alt_tokens]) elif len(rcs) > 1: m = r.match(rcs[idxx]) if m: if idxx > 0: alt += '\n' - alt += '\n'.join([s + m.group(1) + " %%" for s in alt_tokens]) + alt += '\n'.join([s + m.group(1) + ' "%%"' for s in alt_tokens]) return alt @@ -364,7 +395,7 @@ def checkLatex(dtl_tools): # run platex on chklatex.ltx and check result if cmdOutput(PLATEX + ' chklatex.ltx').find('pLaTeX2e') != -1: # We have the Japanese pLaTeX2e - addToRC(r'\converter platex dvi "%s" "latex=platex"' % PLATEX) + addToRC(r'\converter platex dvi "%s -kanji=$$E $$i" "latex=platex"' % PLATEX) else: PLATEX = '' removeFiles(['chklatex.ltx', 'chklatex.log']) @@ -455,7 +486,10 @@ def checkFormatEntries(dtl_tools): rc_entry = [r'\Format fig fig FIG "" "%%" "%%" "vector"']) # checkViewerEditor('a Dia viewer and editor', ['dia'], - rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector"']) + rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector,zipped=native"']) + # + checkViewerEditor('an OpenOffice drawing viewer and editor', ['libreoffice', 'lodraw', 'ooffice', 'oodraw', 'soffice'], + rc_entry = [r'\Format odg "odg, sxd" "OpenOffice drawing" "" "%%" "%%" "vector,zipped=native"']) # checkViewerEditor('a Grace viewer and editor', ['xmgrace'], rc_entry = [r'\Format agr agr Grace "" "%%" "%%" "vector"']) @@ -469,7 +503,7 @@ def checkFormatEntries(dtl_tools): path, iv = checkViewerNoRC('a raster image viewer', ['xv', 'kview', 'gimp-remote', 'gimp'], rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" "" \Format gif gif GIF "" "%s" "%s" "" -\Format jpg jpg JPEG "" "%s" "%s" "" +\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" \Format pbm pbm PBM "" "%s" "%s" "" \Format pgm pgm PGM "" "%s" "%s" "" \Format png png PNG "" "%s" "%s" "" @@ -480,7 +514,7 @@ def checkFormatEntries(dtl_tools): path, ie = checkEditorNoRC('a raster image editor', ['gimp-remote', 'gimp'], rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" "" \Format gif gif GIF "" "%s" "%s" "" -\Format jpg jpg JPEG "" "%s" "%s" "" +\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" \Format pbm pbm PBM "" "%s" "%s" "" \Format pgm pgm PGM "" "%s" "%s" "" \Format png png PNG "" "%s" "%s" "" @@ -490,7 +524,7 @@ def checkFormatEntries(dtl_tools): \Format xpm xpm XPM "" "%s" "%s" ""''']) addToRC(r'''\Format bmp bmp BMP "" "%s" "%s" "" \Format gif gif GIF "" "%s" "%s" "" -\Format jpg jpg JPEG "" "%s" "%s" "" +\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" \Format pbm pbm PBM "" "%s" "%s" "" \Format pgm pgm PGM "" "%s" "%s" "" \Format png png PNG "" "%s" "%s" "" @@ -509,10 +543,12 @@ def checkFormatEntries(dtl_tools): \Format docbook sgml DocBook B "" "%%" "document,menu=export" \Format docbook-xml xml "DocBook (XML)" "" "" "%%" "document,menu=export" \Format dot dot "Graphviz Dot" "" "" "%%" "vector" -\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export" +\Format dviluatex tex "LaTeX (dviluatex)" "" "" "%%" "document,menu=export" +\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export" \Format literate nw NoWeb N "" "%%" "document,menu=export" -\Format sweave Rnw "Sweave" S "" "%%" "document,menu=export" -\Format r R "R/S code" "" "" "%%" "document,menu=export" +\Format sweave Rnw "Sweave" S "" "%%" "document,menu=export" +\Format r R "R/S code" "" "" "%%" "document,menu=export" +\Format knitr Rnw "Rnw (knitr)" "" "" "%%" "document,menu=export" \Format lilypond ly "LilyPond music" "" "" "%%" "vector" \Format lilypond-book lytex "LilyPond book (LaTeX)" "" "" "%%" "document,menu=export" \Format latex tex "LaTeX (plain)" L "" "%%" "document,menu=export" @@ -530,10 +566,8 @@ def checkFormatEntries(dtl_tools): \Format excel xls "Excel spreadsheet" "" "" "%%" "document" \Format oocalc ods "OpenOffice spreadsheet" "" "" "%%" "document"''']) # - path, xhtmlview = checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'], + checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'], rc_entry = [r'\Format xhtml xhtml "LyXHTML" y "%%" "" "document,menu=export"']) - if xhtmlview == "": - addToRC(r'\Format xhtml xhtml "LyXHTML" y "" "" "document,menu=export"') # checkEditor('a BibTeX editor', ['jabref', 'JabRef', \ 'pybliographic', 'bibdesk', 'gbib', 'kbib', \ @@ -546,6 +580,7 @@ def checkFormatEntries(dtl_tools): # rc_entry = [ r'\ps_command "%%"' ]) checkViewer('a Postscript previewer', ['kghostview', 'okular', 'evince', 'gv', 'ghostview -swap'], rc_entry = [r'''\Format eps eps EPS "" "%%" "" "vector" +\Format eps2 eps "EPS (uncropped)" "" "%%" "" "vector" \Format ps ps Postscript t "%%" "" "document,vector,menu=export"''']) # for xdg-open issues look here: http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg151818.html checkViewer('a PDF previewer', ['kpdf', 'okular', 'evince', 'kghostview', 'xpdf', 'acrobat', 'acroread', \ @@ -564,16 +599,16 @@ def checkFormatEntries(dtl_tools): addToRC(r'\Format dvi2 dvi DraftDVI "" "" "" "vector"') # checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'], - rc_entry = [r'\Format html html HTML H "%%" "" "document,menu=export"']) + rc_entry = [r'\Format html "html, htm" HTML H "%%" "" "document,menu=export"']) # checkViewerEditor('Noteedit', ['noteedit'], rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector"']) # - checkViewerEditor('an OpenDocument/OpenOffice viewer', ['swriter', 'oowriter', 'abiword'], + checkViewerEditor('an OpenDocument/OpenOffice viewer', ['lwriter', 'swriter', 'oowriter', 'abiword'], rc_entry = [r'''\Format odt odt OpenDocument "" "%%" "%%" "document,vector,menu=export" \Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,vector"''']) # - checkViewerEditor('a Rich Text and Word viewer', ['swriter', 'oowriter', 'abiword'], + checkViewerEditor('a Rich Text and Word viewer', ['lwriter', 'swriter', 'oowriter', 'abiword'], rc_entry = [r'''\Format rtf rtf "Rich Text Format" "" "%%" "%%" "document,vector,menu=export" \Format word doc "MS Word" W "%%" "%%" "document,vector,menu=export"''']) # @@ -591,14 +626,12 @@ def checkFormatEntries(dtl_tools): \Format jlyx cjklyx "CJK LyX 1.4.x (euc-jp)" "" "" "" "document" \Format klyx cjklyx "CJK LyX 1.4.x (euc-kr)" "" "" "" "document" \Format lyxpreview lyxpreview "LyX Preview" "" "" "" "" -\Format lyxpreview-lytex lyxpreview-lytex "LyX Preview (LilyPond book)" "" "" "" "" -\Format lyxpreview-platex lyxpreview-platex "LyX Preview (pLaTeX)" "" "" "" "" \Format pdftex pdftex_t PDFTEX "" "" "" "" \Format program "" Program "" "" "" "" \Format pstex pstex_t PSTEX "" "" "" "" \Format wmf wmf "Windows Metafile" "" "" "" "vector" \Format emf emf "Enhanced Metafile" "" "" "" "vector" -\Format wordhtml html "HTML (MS Word)" "" "" "" "document" +\Format wordhtml "html, htm" "HTML (MS Word)" "" "" "" "document" ''') @@ -612,21 +645,20 @@ def checkConverterEntries(): checkLuatex() - ''' If we're running LyX in-place then tex2lyx will be found in - ../src/tex2lyx. Add this directory to the PATH temporarily and - search for tex2lyx. - Use PATH to avoid any problems with paths-with-spaces. - ''' - path_orig = os.environ["PATH"] - os.environ["PATH"] = os.path.join('..', 'src', 'tex2lyx') + \ - os.pathsep + path_orig + # Look for tex2lyx in this order (see bugs #3308 and #6986): + # 1) If we're running LyX in-place then tex2lyx will be found + # in ../src/tex2lyx with respect to the srcdir. + # 2) If LyX was configured with a version suffix then tex2lyx + # will also have this version suffix. + # 3) Otherwise always use tex2lyx. + in_place = os.path.join(srcdir, '..', 'src', 'tex2lyx', 'tex2lyx') + in_place = os.path.abspath(in_place) -# First search for tex2lyx with version suffix (bug 6986) - checkProg('a LaTeX/Noweb -> LyX converter', ['tex2lyx' + version_suffix, 'tex2lyx'], + path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [in_place, 'tex2lyx' + version_suffix, 'tex2lyx'], rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" "" -\converter literate lyx "%% -n -f $$i $$o" ""''']) - - os.environ["PATH"] = path_orig +\converter literate lyx "%% -n -f $$i $$o" ""'''], not_found = 'tex2lyx') + if path == '': + logger.warning("Failed to find tex2lyx on your system.") # checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'], @@ -638,12 +670,21 @@ def checkConverterEntries(): \converter sweave pdflatex "%%" "" \converter sweave xetex "%%" "" \converter sweave luatex "%%" ""''']) + # + checkProg('a knitr -> LaTeX converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxknitr.R $$p$$i $$p$$o $$e $$r'], + rc_entry = [r'''\converter knitr latex "%%" "" +\converter knitr pdflatex "%%" "" +\converter knitr xetex "%%" "" +\converter knitr luatex "%%" ""''']) # checkProg('a Sweave -> R/S code converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxstangle.R $$i $$e $$r'], rc_entry = [ r'\converter sweave r "%%" ""' ]) # - checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i', \ - 'htmltolatex -input $$i -output $$o', 'java -jar htmltolatex.jar -input $$i -output $$o'], + checkProg('a knitr -> R/S code converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxknitr.R $$p$$i $$p$$o $$e $$r tangle'], + rc_entry = [ r'\converter knitr r "%%" ""' ]) + # + checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i', + 'htmltolatex -input $$i -output $$o', 'htmltolatex.jar -input $$i -output $$o'], rc_entry = [ r'\converter html latex "%%" ""' ]) # checkProg('an MS Word -> LaTeX converter', ['wvCleanLatex $$i $$o'], @@ -692,6 +733,9 @@ def checkConverterEntries(): # checkProg('an OpenDocument -> LaTeX converter', ['w2l -clean $$i'], rc_entry = [ r'\converter odt latex "%%" ""' ]) + # + checkProg('an OpenDocument -> PDF converter', ['unoconv -f pdf --stdout $$i > $$o'], + rc_entry = [ r'\converter odt pdf "%%" ""' ]) # According to http://www.tug.org/applications/tex4ht/mn-commands.html # the command mk4ht oolatex $$i has to be used as default, # but as this would require to have Perl installed, in MiKTeX oolatex is @@ -717,9 +761,15 @@ def checkConverterEntries(): # checkProg('a PS to TXT converter', ['ps2ascii $$i $$o'], rc_entry = [ r'\converter ps text3 "%%" ""' ]) - # - checkProg('a PS to EPS converter', ['ps2eps $$i'], - rc_entry = [ r'\converter ps eps "%%" ""' ]) + # Need to call ps2eps in a pipe, otherwise it would name the output file + # depending on the extension of the input file. We do not know the input + # file extension in general, so the resultfile= flag would not help. + # Since ps2eps crops the image, we do not use it to convert from ps->eps. + # This would create additional paths in the converter graph with unwanted + # side effects (e.g. ps->pdf via ps2pdf would create a different result + # than ps->eps->pdf via ps2eps and epstopdf). + checkProg('a PS to EPS converter', ['ps2eps -- < $$i > $$o'], + rc_entry = [ r'\converter eps2 eps "%%" ""' ]) # checkProg('a PDF to PS converter', ['pdf2ps $$i $$o', 'pdftops $$i $$o'], rc_entry = [ r'\converter pdf ps "%%" ""' ]) @@ -736,19 +786,6 @@ def checkConverterEntries(): checkProg('a DVI to PDF converter', ['dvipdfmx -o $$o $$i', 'dvipdfm -o $$o $$i'], rc_entry = [ r'\converter dvi pdf3 "%%" ""' ]) # - path, dvipng = checkProg('dvipng', ['dvipng']) - path, dv2dt = checkProg('DVI to DTL converter', ['dv2dt']) - if dvipng == "dvipng" and dv2dt == 'dv2dt': - addToRC(r'\converter lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py" ""') - else: - # set empty converter to override the default imagemagick - addToRC(r'\converter lyxpreview png "" ""') - if dv2dt == 'dv2dt': - addToRC(r'\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py" ""') - else: - # set empty converter to override the default imagemagick - addToRC(r'\converter lyxpreview ppm "" ""') - # checkProg('a fax program', ['kdeprintfax $$i', 'ksendfax $$i', 'hylapex $$i'], rc_entry = [ r'\converter ps fax "%%" ""']) # @@ -779,6 +816,9 @@ def checkConverterEntries(): checkProg('an EPS -> PDF converter', ['epstopdf'], rc_entry = [ r'\converter eps pdf "epstopdf --outfile=$$o $$i" ""', '']) # + checkProg('an EPS -> PNG converter', ['convert $$i $$o'], + rc_entry = [ r'\converter eps png "%%" ""', '']) + # # no agr -> pdf converter, since the pdf library used by gracebat is not # free software and therefore not compiled in in many installations. # Fortunately, this is not a big problem, because we will use epstopdf to @@ -802,6 +842,12 @@ def checkConverterEntries(): # checkProg('a Dia -> EPS converter', ['dia -e $$o -t eps $$i'], rc_entry = [ r'\converter dia eps "%%" ""']) + # Actually, this produces EPS, but with a wrong bounding box (usually A4 or letter). + # The eps2->eps converter then fixes the bounding box by cropping. + # Although unoconv can convert to png and pdf as well, do not define + # odg->png and odg->pdf converters, since the bb would be too large as well. + checkProg('an OpenOffice -> EPS converter', ['libreoffice -headless -nologo -convert-to eps $$i', 'unoconv -f eps --stdout $$i > $$o'], + rc_entry = [ r'\converter odg eps2 "%%" ""']) # checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', 'inkscape --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'], rc_entry = [ r'\converter svg pdf "%%" ""']) @@ -816,8 +862,8 @@ def checkConverterEntries(): # gnumeric/xls/ods to tex checkProg('a spreadsheet -> latex converter', ['ssconvert'], rc_entry = [ r'''\converter gnumeric latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" "" -\converter ods latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" "" -\converter xls latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""''', +\converter oocalc latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" "" +\converter excel latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""''', '']) path, lilypond = checkProg('a LilyPond -> EPS/PDF/PNG converter', ['lilypond']) @@ -851,16 +897,6 @@ def checkConverterEntries(): version_number = match.groups()[0] version = version_number.split('.') if int(version[0]) > 2 or (len(version) > 1 and int(version[0]) == 2 and int(version[1]) >= 13): - if dv2dt == 'dv2dt': - addToRC(r'\converter lyxpreview-lytex ppm "python -tt $$s/scripts/lyxpreview-lytex2bitmap.py" ""') - else: - # set empty converter to override the default imagemagick - addToRC(r'\converter lyxpreview-lytex ppm "" ""') - if dvipng == "dvipng" and dv2dt == 'dv2dt': - addToRC(r'\converter lyxpreview-lytex png "python -tt $$s/scripts/lyxpreview-lytex2bitmap.py" ""') - else: - # set empty converter to override the default imagemagick - addToRC(r'\converter lyxpreview-lytex png "" ""') # Note: The --lily-output-dir flag is required because lilypond-book # does not process input again unless the input has changed, # even if the output format being requested is different. So @@ -897,7 +933,7 @@ def checkConverterEntries(): # checkProg('Image converter', ['convert $$i $$o']) # # Entries that do not need checkProg - addToRC(r'''\converter lyxpreview-platex ppm "python -tt $$s/scripts/lyxpreview-platex2bitmap.py" "" + addToRC(r''' \converter csv lyx "python -tt $$s/scripts/csv2lyx.py $$i $$o" "" \converter date dateout "python -tt $$s/scripts/date.py %d-%m-%Y > $$o" "" \converter docbook docbook-xml "cp $$i $$o" "xml" @@ -913,6 +949,8 @@ def checkConverterEntries(): \converter clyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c big5 $$i > $$o" "" \converter jlyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp $$i > $$o" "" \converter klyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr $$i > $$o" "" +\converter lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py --png" "" +\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py --ppm" "" ''') @@ -949,11 +987,8 @@ def checkOtherEntries(): alt_rc_entry = [ r'\index_alternatives "%%"' ]) checkProg('an index processor appropriate to Japanese', ['mendex -c -q', 'jmakeindex -c -q', 'makeindex -c -q'], rc_entry = [ r'\jindex_command "%%"' ]) - path, splitindex = checkProg('the splitindex processor', ['splitindex.pl', 'splitindex'], - rc_entry = [ r'\splitindex_command "%%"' ]) - if splitindex == '': - checkProg('the splitindex processor (java version)', ['splitindex.class'], - rc_entry = [ r'\splitindex_command "java splitindex"' ]) + checkProg('the splitindex processor', ['splitindex.pl', 'splitindex', + 'splitindex.class'], rc_entry = [ r'\splitindex_command "%%"' ]) checkProg('a nomenclature processor', ['makeindex'], rc_entry = [ r'\nomencl_command "makeindex -s nomencl.ist"' ]) ## FIXME: OCTAVE is not used anywhere @@ -1104,15 +1139,18 @@ def checkLatexConfig(check_config, bool_docbook): cl.close() # # we have chklayouts.tex, then process it - fout = subprocess.Popen([LATEX, "wrap_chkconfig.ltx"], stdout=subprocess.PIPE).stdout - while True: - line = fout.readline() - if not line: - break; + ret = 1 + latex_out = cmdOutput(LATEX + ' wrap_chkconfig.ltx') + for line in latex_out.splitlines(): if re.match('^\+', line): logger.info(line.strip()) - # if the command succeeds, None will be returned - ret = fout.close() + # return None if the command succeeds + if line == "+Inspection done.": + ret = None + # + # remove the copied file + if rmcopy: + removeFiles( [ 'chkconfig.ltx' ] ) # # currently, values in chhkconfig are only used to set # \font_encoding @@ -1126,8 +1164,6 @@ def checkLatexConfig(check_config, bool_docbook): addToRC(r'\font_encoding "%s"' % values["chk_fontenc"]) except: pass - if rmcopy: # remove the copied file - removeFiles( [ 'chkconfig.ltx' ] ) # if configure successed, move textclass.lst.tmp to textclass.lst # and packages.lst.tmp to packages.lst if os.path.isfile('textclass.lst.tmp') and len(open('textclass.lst.tmp').read()) > 0 \ @@ -1298,7 +1334,7 @@ def removeTempFiles(): if __name__ == '__main__': lyx_check_config = True outfile = 'lyxrc.defaults' - lyxrc_fileformat = 1 + lyxrc_fileformat = 3 rc_entries = '' lyx_keep_temps = False version_suffix = '' @@ -1346,6 +1382,9 @@ Format %i ''' % lyxrc_fileformat) # check latex LATEX = checkLatex(dtl_tools) + # check java and perl before any checkProg that may require them + java = checkProg('a java interpreter', ['java'])[1] + perl = checkProg('a perl interpreter', ['perl'])[1] checkFormatEntries(dtl_tools) checkConverterEntries() (chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()