]> git.lyx.org Git - lyx.git/blobdiff - lib/configure.py
add some missing oxygen icons.
[lyx.git] / lib / configure.py
index b8cd6e1f02004a03a367a711afc5d40d1c92631b..24c3832b5fc12142bd517bb8c2fda94d82894c71 100644 (file)
@@ -426,6 +426,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"... '
@@ -600,11 +633,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,7 +656,7 @@ 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 $$p$$i $$e $$r'],
+    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      "%%"    ""
 \converter sweave   pdflatex      "%%" ""'''])
     #
@@ -1068,17 +1097,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: