]> git.lyx.org Git - lyx.git/blobdiff - lib/configure.py
define sweave to xetex|luatex converters
[lyx.git] / lib / configure.py
index 4161318ffd180e8a006864971b0d3ccd3b1a6472..318bdcdc7d9563274afa63934795b8ec92a3b3aa 100644 (file)
@@ -96,6 +96,8 @@ def createDirectories():
 def checkTeXPaths():
     ''' Determine the path-style needed by the TeX engine on Win32 (Cygwin) '''
     windows_style_tex_paths = ''
+    if LATEX == '':
+        return windows_style_tex_paths
     if os.name == 'nt' or sys.platform == 'cygwin':
         from tempfile import mkstemp
         fd, tmpfname = mkstemp(suffix='.ltx')
@@ -158,7 +160,7 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''):
         msg = '+checking for "' + ac_word + '"... '
         path = os.environ["PATH"].split(os.pathsep) + path
         extlist = ['']
-        if os.environ.has_key("PATHEXT"):
+        if "PATHEXT" in os.environ:
             extlist = extlist + os.environ["PATHEXT"].split(os.pathsep)
         for ac_dir in path:
             for ext in extlist:
@@ -199,7 +201,7 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [],
         msg = '+checking for "' + ac_word + '"... '
         path = os.environ["PATH"].split(os.pathsep) + path
         extlist = ['']
-        if os.environ.has_key("PATHEXT"):
+        if "PATHEXT" in os.environ:
             extlist = extlist + os.environ["PATHEXT"].split(os.pathsep)
         found_alt = False
         for ac_dir in path:
@@ -426,6 +428,39 @@ def checkLatex(dtl_tools):
     return ''
 
 
+def checkLuatex():
+    ''' Check if luatex is there and usable '''
+    path, LUATEX = checkProg('LuaTeX', ['lualatex $$i'])
+    path, DVILUATEX = checkProg('LuaTeX (DVI)', ['dvilualatex $$i'])
+    if LUATEX != '':
+    # luatex binary is there
+        msg = "checking if LuaTeX is usable ..."
+        # Check if luatex is usable
+        writeToFile('luatest.tex', '''
+\\nonstopmode\\documentclass{minimal}
+\\usepackage{fontspec}
+\\begin{document}
+.
+\\end{document}
+''')
+        # run lualatex on luatest.tex and check result
+        luatest = cmdOutput(LUATEX + ' luatest.tex')
+        if luatest.find('XeTeX is required to compile this document') != -1:
+            # fontspec/luatex too old! We do not support this version.
+            logger.info(msg + ' no (probably not recent enough)')
+        elif luatest.find('! LaTeX Error: File `fontspec.sty\' not found') != -1:
+            # fontspec missing
+            logger.info(msg + ' no (missing fontspec)')
+        else:
+            # working luatex
+            logger.info(msg + ' yes')
+            addToRC(r'\converter luatex      pdf5       "%s"   "latex=lualatex"' % LUATEX)
+            if DVILUATEX != '':
+                addToRC(r'\converter luatex      dvi3        "%s"      "latex=lualatex"' % DVILUATEX)   
+        # remove temporary files
+        removeFiles(['luatest.tex', 'luatest.log'])
+
+
 def checkModule(module):
     ''' Check for a Python module, return the status '''
     msg = 'checking for "' + module + ' module"... '
@@ -498,19 +533,19 @@ def checkFormatEntries(dtl_tools):
 \Format asciiimage asc    "Plain text (image)"         "" ""   "%%"    ""
 \Format asciixfig  asc    "Plain text (Xfig output)"   "" ""   "%%"    ""
 \Format dateout    tmp    "date (output)"         "" ""        "%%"    ""
-\Format docbook    sgml    DocBook                B  ""        "%%"    "document"
-\Format docbook-xml xml   "Docbook (XML)"         "" ""        "%%"    "document"
+\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"
-\Format literate   nw      NoWeb                  N  ""        "%%"    "document"
-\Format sweave     Rnw    "Sweave"                S  "" "%%"    "document"
+\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 lilypond   ly     "LilyPond music"        "" ""        "%%"    "vector"
 \Format lilypond-book    lytex "LilyPond book (LaTeX)"   "" "" "%%"    "document"
-\Format latex      tex    "LaTeX (plain)"         L  ""        "%%"    "document"
-\Format luatex     tex    "LaTeX (LuaTeX)"        "" ""        "%%"    "document"
-\Format pdflatex   tex    "LaTeX (pdflatex)"      "" ""        "%%"    "document"
-\Format xetex      tex    "LaTeX (XeTeX)"         "" ""        "%%"    "document"
-\Format text       txt    "Plain text"            a  ""        "%%"    "document"
+\Format latex      tex    "LaTeX (plain)"         L  ""        "%%"    "document,menu=export"
+\Format luatex     tex    "LaTeX (LuaTeX)"        "" ""        "%%"    "document,menu=export"
+\Format pdflatex   tex    "LaTeX (pdflatex)"      "" ""        "%%"    "document,menu=export"
+\Format xetex      tex    "LaTeX (XeTeX)"         "" ""        "%%"    "document,menu=export"
+\Format text       txt    "Plain text"            a  ""        "%%"    "document,menu=export"
 \Format text2      txt    "Plain text (pstotext)" "" ""        "%%"    "document"
 \Format text3      txt    "Plain text (ps2ascii)" "" ""        "%%"    "document"
 \Format text4      txt    "Plain text (catdvi)"   "" ""        "%%"    "document"
@@ -522,9 +557,9 @@ def checkFormatEntries(dtl_tools):
 \Format oocalc     ods    "OpenOffice spreadsheet" "" "" "%%"    "document"''']) 
  #
     path, xhtmlview = checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
-        rc_entry = [r'\Format xhtml      xhtml   "LyXHTML"              y "%%" ""    "document"'])
+        rc_entry = [r'\Format xhtml      xhtml   "LyXHTML"              y "%%" ""    "document,menu=export"'])
     if xhtmlview == "":
-        addToRC(r'\Format xhtml      xhtml   "LyXHTML"              y "" ""  "document"')
+        addToRC(r'\Format xhtml      xhtml   "LyXHTML"              y "" ""  "document,menu=export"')
  #
     checkEditor('a BibTeX editor', ['sensible-editor', 'jabref', 'JabRef', \
         'pybliographic', 'bibdesk', 'gbib', 'kbib', \
@@ -541,32 +576,32 @@ def checkFormatEntries(dtl_tools):
     # 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', \
                    'gv', 'ghostview'],
-        rc_entry = [r'''\Format pdf        pdf    "PDF (ps2pdf)"          P  "%%"      ""      "document,vector"
-\Format pdf2       pdf    "PDF (pdflatex)"        F  "%%"      ""      "document,vector"
-\Format pdf3       pdf    "PDF (dvipdfm)"         m  "%%"      ""      "document,vector"
-\Format pdf4       pdf    "PDF (XeTeX)"           X  "%%"      ""      "document,vector"
-\Format pdf5       pdf    "PDF (LuaTeX)"          u  "%%"      ""      "document,vector"'''])
+        rc_entry = [r'''\Format pdf        pdf    "PDF (ps2pdf)"          P  "%%"      ""      "document,vector,menu=export"
+\Format pdf2       pdf    "PDF (pdflatex)"        F  "%%"      ""      "document,vector,menu=export"
+\Format pdf3       pdf    "PDF (dvipdfm)"         m  "%%"      ""      "document,vector,menu=export"
+\Format pdf4       pdf    "PDF (XeTeX)"           X  "%%"      ""      "document,vector,menu=export"
+\Format pdf5       pdf    "PDF (LuaTeX)"          u  "%%"      ""      "document,vector,menu=export"'''])
     #
     checkViewer('a DVI previewer', ['xdvi', 'kdvi', 'okular', 'yap', 'dviout -Set=!m'],
-        rc_entry = [r'''\Format dvi        dvi     DVI                    D  "%%"      ""      "document,vector"
-\Format dvi3       dvi     "DVI (LuaTeX)"          V  "%%"     ""      "document,vector"'''])
+        rc_entry = [r'''\Format dvi        dvi     DVI                    D  "%%"      ""      "document,vector,menu=export"
+\Format dvi3       dvi     "DVI (LuaTeX)"          V  "%%"     ""      "document,vector,menu=export"'''])
     if dtl_tools:
         # Windows only: DraftDVI
         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"'])
+        rc_entry = [r'\Format html       html    HTML                   H  "%%"        ""      "document,menu=export"'])
     #
     checkViewerEditor('Noteedit', ['noteedit'],
         rc_entry = [r'\Format noteedit   not     Noteedit               "" "%%"        "%%"    "vector"'])
     #
     checkViewerEditor('an OpenDocument/OpenOffice viewer', ['swriter', 'oowriter', 'abiword'],
-        rc_entry = [r'''\Format odt        odt     OpenDocument           "" "%%"      "%%"    "document,vector"
+        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'],
-        rc_entry = [r'''\Format rtf        rtf    "Rich Text Format"      "" "%%"      "%%"    "document,vector"
-\Format word       doc    "MS Word"               W  "%%"      "%%"    "document,vector"'''])
+        rc_entry = [r'''\Format rtf        rtf    "Rich Text Format"      "" "%%"      "%%"    "document,vector,menu=export"
+\Format word       doc    "MS Word"               W  "%%"      "%%"    "document,vector,menu=export"'''])
     #
     # entries that do not need checkProg
     addToRC(r'''\Format date       ""     "date command"          "" ""        ""      ""
@@ -576,7 +611,7 @@ def checkFormatEntries(dtl_tools):
 \Format lyx13x     13.lyx  "LyX 1.3.x"             "" ""       ""      "document"
 \Format lyx14x     14.lyx  "LyX 1.4.x"             "" ""       ""      "document"
 \Format lyx15x     15.lyx  "LyX 1.5.x"             "" ""       ""      "document"
-\Format lyx16x     16.lyx  "LyX 1.6.x"             "" ""       ""      "document"
+\Format lyx16x     16.lyx  "LyX 1.6.x"             "" ""       ""      "document,menu=export"
 \Format clyx       cjklyx "CJK LyX 1.4.x (big5)"  "" ""        ""      "document"
 \Format jlyx       cjklyx "CJK LyX 1.4.x (euc-jp)" "" ""       ""      "document"
 \Format klyx       cjklyx "CJK LyX 1.4.x (euc-kr)" "" ""       ""      "document"
@@ -600,11 +635,7 @@ def checkConverterEntries():
     checkProg('XeTeX', ['xelatex $$i'],
         rc_entry = [ r'\converter xetex      pdf4       "%%"   "latex=xelatex"' ])
 
-    checkProg('LuaTeX', ['lualatex $$i'],
-        rc_entry = [ r'\converter luatex      pdf5       "%%"  "latex=lualatex"' ])
-
-    checkProg('LuaTeX (DVI)', ['dvilualatex $$i'],
-        rc_entry = [ r'\converter luatex      dvi3        "%%" "latex=lualatex"' ])
+    checkLuatex()
     
     ''' If we're running LyX in-place then tex2lyx will be found in
             ../src/tex2lyx. Add this directory to the PATH temporarily and
@@ -627,9 +658,11 @@ def checkConverterEntries():
         rc_entry = [r'''\converter literate   latex      "%%"  ""
 \converter literate   pdflatex      "%%"       ""'''])
     #
-    checkProg('a Sweave -> LaTeX converter', ['Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$i $$e $$r'],
-        rc_entry = [r'''\converter sweave   latex      "%%"    ""
-\converter sweave   pdflatex      "%%" ""'''])
+    checkProg('a Sweave -> LaTeX converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e $$r'],
+        rc_entry = [r'''\converter sweave   latex      "%%"    "latex"
+\converter sweave   pdflatex   "%%"    "latex=pdflatex"
+\converter sweave   xetex      "%%"    "latex=xelatex"
+\converter sweave   luatex     "%%"    "latex=lualatex"'''])
     #
     checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i', \
         'htmltolatex -input $$i -output $$o', 'java -jar htmltolatex.jar -input $$i -output $$o'],
@@ -638,21 +671,18 @@ def checkConverterEntries():
     checkProg('an MS Word -> LaTeX converter', ['wvCleanLatex $$i $$o'],
         rc_entry = [ r'\converter word       latex      "%%"   ""' ])
 
-    # eLyXer: search as a Python module and then as an executable (elyxer.py, elyxer)
-    elyxerfound = checkModule('elyxer')
-    if elyxerfound:
-      addToRC(r'''\converter lyx      html       "python -m elyxer --directory $$r $$i $$o"    ""''')
-    else:
-      path, elyxer = checkProg('a LyX -> HTML converter',
+    # eLyXer: search as an executable (elyxer.py, elyxer)
+    path, elyxer = checkProg('a LyX -> HTML converter',
         ['elyxer.py --directory $$r $$i $$o', 'elyxer --directory $$r $$i $$o'],
         rc_entry = [ r'\converter lyx      html       "%%"     ""' ])
-      if elyxer.find('elyxer') >= 0:
-        elyxerfound = True
-
-    if elyxerfound:
+    path, elyxer = checkProg('a LyX -> HTML (MS Word) converter',
+        ['elyxer.py --html --directory $$r $$i $$o', 'elyxer --html --directory $$r $$i $$o'],
+        rc_entry = [ r'\converter lyx      wordhtml       "%%" ""' ])
+    if elyxer.find('elyxer') >= 0:
       addToRC(r'''\copier    html       "python -tt $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
+      addToRC(r'''\copier    wordhtml       "python -tt $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
     else:
-      # search for other converters than eLyXer
+      # search for HTML converters other than eLyXer
       # On SuSE the scripts have a .sh suffix, and on debian they are in /usr/share/tex4ht/
       path, htmlconv = checkProg('a LaTeX -> HTML converter', ['htlatex $$i', 'htlatex.sh $$i', \
           '/usr/share/tex4ht/htlatex $$i', 'tth  -t -e2 -L$$b < $$i > $$o', \
@@ -662,28 +692,7 @@ def checkConverterEntries():
         addToRC(r'''\copier    html       "python -tt $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
       else:
         addToRC(r'''\copier    html       "python -tt $$s/scripts/ext_copy.py $$i $$o"''')
-
-    # Check if LyXBlogger is installed
-    lyxblogger_found = checkModule('lyxblogger')
-    if lyxblogger_found:
-      addToRC(r'\Format    blog       blog       "LyXBlogger"           "" "" ""  "document"')
-      addToRC(r'\converter xhtml      blog       "python -m lyxblogger $$i"       ""')
-
-    if elyxerfound:
-      addToRC(r'''\converter lyx      wordhtml       "python -m elyxer --html --directory $$r $$i $$o" ""''')
-    else:
-      path, elyxer = checkProg('a LyX -> MS Word converter',
-        ['elyxer.py --directory $$r $$i $$o', 'elyxer --html --directory $$r $$i $$o'],
-        rc_entry = [ r'\converter lyx      wordhtml       "%%" ""' ])
-      if elyxer.find('elyxer') >= 0:
-        elyxerfound = True
-
-    if elyxerfound:
-      addToRC(r'''\copier    wordhtml       "python -tt $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
-    else:
-      # search for other converters than eLyXer
-      # On SuSE the scripts have a .sh suffix, and on debian they are in /usr/share/tex4ht/
-      path, htmlconv = checkProg('a LaTeX -> MS Word converter', ["htlatex $$i 'html,word' 'symbol/!' '-cvalidate'", \
+      path, htmlconv = checkProg('a LaTeX -> HTML (MS Word) converter', ["htlatex $$i 'html,word' 'symbol/!' '-cvalidate'", \
           "htlatex.sh $$i 'html,word' 'symbol/!' '-cvalidate'", \
           "/usr/share/tex4ht/htlatex $$i 'html,word' 'symbol/!' '-cvalidate'"],
           rc_entry = [ r'\converter latex      wordhtml   "%%" "needaux"' ])
@@ -692,6 +701,13 @@ def checkConverterEntries():
       else:
         addToRC(r'''\copier    wordhtml       "python -tt $$s/scripts/ext_copy.py $$i $$o"''')
 
+
+    # Check if LyXBlogger is installed
+    lyxblogger_found = checkModule('lyxblogger')
+    if lyxblogger_found:
+      addToRC(r'\Format    blog       blog       "LyXBlogger"           "" "" ""  "document"')
+      addToRC(r'\converter xhtml      blog       "python -m lyxblogger $$i"       ""')
+
     #
     checkProg('an OpenOffice.org -> LaTeX converter', ['w2l -clean $$i'],
         rc_entry = [ r'\converter sxw        latex      "%%"   ""' ])
@@ -743,10 +759,17 @@ def checkConverterEntries():
         rc_entry = [ r'\converter dvi        pdf3       "%%"   ""' ])
     #
     path, dvipng = checkProg('dvipng', ['dvipng'])
-    if 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        "%%"   ""'])
@@ -850,10 +873,15 @@ 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):
-                addToRC(r'\converter lyxpreview-lytex ppm "python -tt $$s/scripts/lyxpreview-lytex2bitmap.py" ""')
-                if dvipng == "dvipng":
+                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,
@@ -873,12 +901,23 @@ def checkConverterEntries():
     checkProg('a Noteedit -> LilyPond converter', ['noteedit --export-lilypond $$i'],
         rc_entry = [ r'\converter noteedit   lilypond   "%%"   ""', ''])
     #
+    # Currently, lyxpak outputs a gzip compressed tar archive on *nix
+    # and a zip archive on Windows.
+    # So, we configure the appropriate version according to the platform.
+    cmd = r'\converter lyx %s "python -tt $$s/scripts/lyxpak.py $$r/$$i" ""'
+    if os.name == 'nt':
+        addToRC(r'\Format lyxzip     zip    "LyX Archive (zip)"     "" "" ""  "document,menu=export"')
+        addToRC(cmd % "lyxzip")
+    else:
+        addToRC(r'\Format lyxgz      gz     "LyX Archive (tar.gz)"  "" "" ""  "document,menu=export"')
+        addToRC(cmd % "lyxgz")
+        
+    #
     # FIXME: no rc_entry? comment it out
     # checkProg('Image converter', ['convert $$i $$o'])
     #
     # Entries that do not need checkProg
-    addToRC(r'''\converter lyxpreview ppm        "python -tt $$s/scripts/lyxpreview2bitmap.py" ""
-\converter lyxpreview-platex ppm        "python -tt $$s/scripts/lyxpreview-platex2bitmap.py"   ""
+    addToRC(r'''\converter lyxpreview-platex ppm        "python -tt $$s/scripts/lyxpreview-platex2bitmap.py"   ""
 \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"
@@ -924,7 +963,7 @@ def checkOtherEntries():
         alt_rc_entry = [ r'\bibtex_alternatives "%%"' ])
     checkProg('a specific Japanese BibTeX variant', ['pbibtex', 'jbibtex', 'bibtex'],
         rc_entry = [ r'\jbibtex_command "%%"' ])
-    checkProgAlternatives('available index processors', ['texindy', 'makeindex -c -q'],
+    checkProgAlternatives('available index processors', ['texindy', 'makeindex -c -q', 'xindy'],
         rc_entry = [ r'\index_command "%%"' ],
         alt_rc_entry = [ r'\index_alternatives "%%"' ])
     checkProg('an index processor appropriate to Japanese', ['mendex -c -q', 'jmakeindex -c -q', 'makeindex -c -q'],
@@ -1062,17 +1101,21 @@ def checkLatexConfig(check_config, bool_docbook):
     testclasses = list()
     for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
         glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
+        nodeclaration = False
         if not os.path.isfile(file):
             continue
         classname = file.split(os.sep)[-1].split('.')[0]
         for line in open(file).readlines():
             if not empty.match(line) and line[0] != '#':
-                logger.error("Failed to find \Declare line for layout file `" + file + "'")
-                sys.exit(3)
+                logger.warning("Failed to find valid \Declare line for layout file `" + file + "'.\n\t=> Skipping this file!")
+                nodeclaration = True
+                break
             if declare.search(line) == None:
                 continue
             testclasses.append("\\TestDocClass{%s}{%s}" % (classname, line[1:].strip()))
             break
+        if nodeclaration:
+            continue
     testclasses.sort()
     cl = open('chklayouts.tex', 'w')
     for line in testclasses:
@@ -1301,7 +1344,6 @@ Options:
         sys.exit(1)
     setEnviron()
     createDirectories()
-    windows_style_tex_paths = checkTeXPaths()
     dtl_tools = checkDTLtools()
     ## Write the first part of outfile
     writeToFile(outfile, '''# This file has been automatically generated by LyX' lib/configure.py
@@ -1317,6 +1359,7 @@ Options:
     checkConverterEntries()
     (chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()
     checkTeXAllowSpaces()
+    windows_style_tex_paths = checkTeXPaths()
     if windows_style_tex_paths != '':
         addToRC(r'\tex_expects_windows_paths %s' % windows_style_tex_paths)
     checkOtherEntries()