]> git.lyx.org Git - lyx.git/blobdiff - lib/configure.py
Arabic doc files: corrections by Hatim
[lyx.git] / lib / configure.py
index e8d38db14d10bd8f7a43707b9380892d28d4809c..df07e4612962ac9b4117911f2d8cacdb96bed501 100644 (file)
@@ -503,8 +503,7 @@ def checkInkscape():
     ''' The answer of the real inkscape is validated and a fake binary used if this fails '''
     if sys.platform == 'darwin':
         version_string = cmdOutput("inkscape --version")
     ''' The answer of the real inkscape is validated and a fake binary used if this fails '''
     if sys.platform == 'darwin':
         version_string = cmdOutput("inkscape --version")
-        match = re.match('^Inkscape', version_string)
-        if match:
+        if version_string.startswith('Inkscape'):
             return 'inkscape'
         else:
             return 'inkscape-binary'
             return 'inkscape'
         else:
             return 'inkscape-binary'
@@ -518,12 +517,12 @@ def checkInkscape():
     try:
         aKey = winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
         val = winreg.QueryValueEx(aKey, "")
     try:
         aKey = winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
         val = winreg.QueryValueEx(aKey, "")
-        return str(val[0]).split('"')[1].replace('.exe', '')
+        return str(val[0]).split('"')[1]
     except EnvironmentError:
         try:
             aKey = winreg.OpenKey(aReg, r"Applications\inkscape.exe\shell\open\command")
             val = winreg.QueryValueEx(aKey, "")
     except EnvironmentError:
         try:
             aKey = winreg.OpenKey(aReg, r"Applications\inkscape.exe\shell\open\command")
             val = winreg.QueryValueEx(aKey, "")
-            return str(val[0]).split('"')[1].replace('.exe', '')
+            return str(val[0]).split('"')[1]
         except EnvironmentError:
             return 'inkscape'
 
         except EnvironmentError:
             return 'inkscape'
 
@@ -621,7 +620,7 @@ def checkFormatEntries(dtl_tools):
     checkViewerEditor('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
         rc_entry = [r'\Format fen        fen     FEN                    "" "%%"        "%%"    ""      ""'])
     #
     checkViewerEditor('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
         rc_entry = [r'\Format fen        fen     FEN                    "" "%%"        "%%"    ""      ""'])
     #
-    checkViewerEditor('a SVG viewer and editor', [inkscape_name],
+    checkViewerEditor('a SVG viewer and editor', [inkscape_gui],
         rc_entry = [r'''\Format svg        "svg" SVG                "" "%%" "%%"       "vector"        "image/svg+xml"
 \Format svgz       "svgz" "SVG (compressed)" "" "%%" "%%"      "vector,zipped=native"  ""'''],
         path = [inkscape_path])
         rc_entry = [r'''\Format svg        "svg" SVG                "" "%%" "%%"       "vector"        "image/svg+xml"
 \Format svgz       "svgz" "SVG (compressed)" "" "%%" "%%"      "vector,zipped=native"  ""'''],
         path = [inkscape_path])
@@ -755,7 +754,8 @@ def checkFormatEntries(dtl_tools):
 \Format lyx16x     16.lyx "LyX 1.6.x"             "" ""        ""      "document"      ""
 \Format lyx20x     20.lyx "LyX 2.0.x"             "" ""        ""      "document"      ""
 \Format lyx21x     21.lyx "LyX 2.1.x"             "" ""        ""      "document"      ""
 \Format lyx16x     16.lyx "LyX 1.6.x"             "" ""        ""      "document"      ""
 \Format lyx20x     20.lyx "LyX 2.0.x"             "" ""        ""      "document"      ""
 \Format lyx21x     21.lyx "LyX 2.1.x"             "" ""        ""      "document"      ""
-\Format lyx22x     22.lyx "LyX 2.2.x"             "" ""        ""      "document,menu=export"  ""
+\Format lyx22x     22.lyx "LyX 2.2.x"             "" ""        ""      "document"      ""
+\Format lyx23x     23.lyx "LyX 2.3.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"      ""
 \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"      ""
@@ -997,11 +997,11 @@ def checkConverterEntries():
 \converter fig        pdftex     "python -tt $$s/scripts/fig2pdftex.py $$i $$o"        ""
 \converter fig        pstex      "python -tt $$s/scripts/fig2pstex.py $$i $$o" ""''')
     #
 \converter fig        pdftex     "python -tt $$s/scripts/fig2pdftex.py $$i $$o"        ""
 \converter fig        pstex      "python -tt $$s/scripts/fig2pstex.py $$i $$o" ""''')
     #
-    checkProg('a SVG -> PDFTeX converter', [inkscape_name],
+    checkProg('a SVG -> PDFTeX converter', [inkscape_cl],
         rc_entry = [ r'\converter svg        pdftex     "python -tt $$s/scripts/svg2pdftex.py %% $$p$$i $$p$$o" ""'],
         path = [inkscape_path])
     #
         rc_entry = [ r'\converter svg        pdftex     "python -tt $$s/scripts/svg2pdftex.py %% $$p$$i $$p$$o" ""'],
         path = [inkscape_path])
     #
-    checkProg('a SVG -> PSTeX converter', [inkscape_name],
+    checkProg('a SVG -> PSTeX converter', [inkscape_cl],
         rc_entry = [ r'\converter svg        pstex     "python -tt $$s/scripts/svg2pstex.py %% $$p$$i $$p$$o" ""'],
         path = [inkscape_path])
     #
         rc_entry = [ r'\converter svg        pstex     "python -tt $$s/scripts/svg2pstex.py %% $$p$$i $$p$$o" ""'],
         path = [inkscape_path])
     #
@@ -1014,18 +1014,18 @@ def checkConverterEntries():
 \converter tgif       png        "tgif -print -color -png -o $$d $$i"  ""
 \converter tgif       pdf6       "tgif -print -color -pdf -stdout $$i > $$o"   ""'''])
     #
 \converter tgif       png        "tgif -print -color -png -o $$d $$i"  ""
 \converter tgif       pdf6       "tgif -print -color -pdf -stdout $$i > $$o"   ""'''])
     #
-    checkProg('a WMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i', inkscape_name + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
+    checkProg('a WMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'\converter wmf        eps        "%%"   ""'])
     #
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'\converter wmf        eps        "%%"   ""'])
     #
-    checkProg('an EMF -> EPS converter', ['metafile2eps $$i $$o', inkscape_name + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
+    checkProg('an EMF -> EPS converter', ['metafile2eps $$i $$o', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'\converter emf        eps        "%%"   ""'])
     #
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'\converter emf        eps        "%%"   ""'])
     #
-    checkProg('a WMF -> PDF converter', [inkscape_name + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)],
+    checkProg('a WMF -> PDF converter', [inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'\converter wmf        pdf6        "%%"  ""'])
     #
         rc_entry = [ r'\converter wmf        pdf6        "%%"  ""'])
     #
-    checkProg('an EMF -> PDF converter', [inkscape_name + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)],
+    checkProg('an EMF -> PDF converter', [inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'\converter emf        pdf6        "%%"  ""'])
     # Only define a converter to pdf6 for graphics
     checkProg('an EPS -> PDF converter', ['epstopdf'],
         rc_entry = [ r'\converter emf        pdf6        "%%"  ""'])
     # Only define a converter to pdf6 for graphics
     checkProg('an EPS -> PDF converter', ['epstopdf'],
@@ -1071,19 +1071,19 @@ def checkConverterEntries():
         rc_entry = [ r'\converter svg        svgz       "%%"   ""'])
     # Only define a converter to pdf6 for graphics
     # Prefer rsvg-convert over inkscape since it is faster (see http://www.lyx.org/trac/ticket/9891)
         rc_entry = [ r'\converter svg        svgz       "%%"   ""'])
     # Only define a converter to pdf6 for graphics
     # Prefer rsvg-convert over inkscape since it is faster (see http://www.lyx.org/trac/ticket/9891)
-    checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', inkscape_name + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o'
+    checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o'
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'''\converter svg        pdf6       "%%"    ""
 \converter svgz       pdf6       "%%"    ""'''],
         path = ['', inkscape_path])
     #
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'''\converter svg        pdf6       "%%"    ""
 \converter svgz       pdf6       "%%"    ""'''],
         path = ['', inkscape_path])
     #
-    checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', inkscape_name + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
+    checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'''\converter svg        eps        "%%"    ""
 \converter svgz       eps        "%%"    ""'''],
         path = ['', inkscape_path])
     #
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'''\converter svg        eps        "%%"    ""
 \converter svgz       eps        "%%"    ""'''],
         path = ['', inkscape_path])
     #
-    checkProg('a SVG -> PNG converter', ['rsvg-convert -f png -o $$o $$i', inkscape_name + ' --without-gui --file=%s$$i --export-png=%s$$o'
+    checkProg('a SVG -> PNG converter', ['rsvg-convert -f png -o $$o $$i', inkscape_cl + ' --without-gui --file=%s$$i --export-png=%s$$o'
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'''\converter svg        png        "%%"    "",
 \converter svgz       png        "%%"    ""'''],
                % (inkscape_fileprefix, inkscape_fileprefix)],
         rc_entry = [ r'''\converter svg        png        "%%"    "",
 \converter svgz       png        "%%"    ""'''],
@@ -1131,7 +1131,7 @@ def checkConverterEntries():
     path, lilypond_book = checkProg('a LilyPond book (LaTeX) -> LaTeX converter', ['lilypond-book'])
     if (lilypond_book != ''):
         version_string = cmdOutput("lilypond-book --version")
     path, lilypond_book = checkProg('a LilyPond book (LaTeX) -> LaTeX converter', ['lilypond-book'])
     if (lilypond_book != ''):
         version_string = cmdOutput("lilypond-book --version")
-        match = re.match('^(\S+)$', version_string)
+        match = re.match('(\S+)$', version_string)
         if match:
             version_number = match.groups()[0]
             version = version_number.split('.')
         if match:
             version_number = match.groups()[0]
             version = version_number.split('.')
@@ -1185,6 +1185,7 @@ def checkConverterEntries():
 \converter lyx        lyx20x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.0 -o $$o $$i"    ""
 \converter lyx        lyx21x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.1 -o $$o $$i"    ""
 \converter lyx        lyx22x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.2 -o $$o $$i"    ""
 \converter lyx        lyx20x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.0 -o $$o $$i"    ""
 \converter lyx        lyx21x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.1 -o $$o $$i"    ""
 \converter lyx        lyx22x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.2 -o $$o $$i"    ""
+\converter lyx        lyx23x     "python -tt $$s/lyx2lyx/lyx2lyx -V 2.3 -o $$o $$i"    ""
 \converter lyx        clyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c big5   $$i"  ""
 \converter lyx        jlyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_jp $$i"  ""
 \converter lyx        klyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_kr $$i"  ""
 \converter lyx        clyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c big5   $$i"  ""
 \converter lyx        jlyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_jp $$i"  ""
 \converter lyx        klyx       "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_kr $$i"  ""
@@ -1289,13 +1290,13 @@ def processLayoutFile(file, bool_docbook):
             return x.strip()
     classname = file.split(os.sep)[-1].split('.')[0]
     # return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for \DeclareLaTeXClass[a,b,c]{article}
             return x.strip()
     classname = file.split(os.sep)[-1].split('.')[0]
     # return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for \DeclareLaTeXClass[a,b,c]{article}
-    p = re.compile(b'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
-    q = re.compile(b'^\s*#\s*\\DeclareCategory{(.*)}\s*$')
+    p = re.compile(b'\s*#\s*\\\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
+    q = re.compile(b'\s*#\s*\\\\DeclareCategory{(.*)}\s*$')
     classdeclaration = b""
     categorydeclaration = b'""'
     for line in open(file, 'rb').readlines():
     classdeclaration = b""
     categorydeclaration = b'""'
     for line in open(file, 'rb').readlines():
-        res = p.search(line)
-        qres = q.search(line)
+        res = p.match(line)
+        qres = q.match(line)
         if res != None:
             (classtype, optAll, opt, opt1, desc) = res.groups()
             avai = {b'LaTeX':b'false', b'DocBook':bool_docbook.encode('ascii')}[classtype]
         if res != None:
             (classtype, optAll, opt, opt1, desc) = res.groups()
             avai = {b'LaTeX':b'false', b'DocBook':bool_docbook.encode('ascii')}[classtype]
@@ -1363,7 +1364,7 @@ def checkLatexConfig(check_config, bool_docbook):
                 foundClasses.append(cleanclass)
                 retval = processLayoutFile(file, bool_docbook)
                 if retval != b"":
                 foundClasses.append(cleanclass)
                 retval = processLayoutFile(file, bool_docbook)
                 if retval != b"":
-                    tx.write(retval)
+                    tx.write(retval + os.linesep)
         tx.close()
         logger.info('\tdone')
     if not os.path.isfile('packages.lst') or not check_config:
         tx.close()
         logger.info('\tdone')
     if not os.path.isfile('packages.lst') or not check_config:
@@ -1386,9 +1387,9 @@ def checkLatexConfig(check_config, bool_docbook):
     # Construct the list of classes to test for.
     # build the list of available layout files and convert it to commands
     # for chkconfig.ltx
     # Construct the list of classes to test for.
     # build the list of available layout files and convert it to commands
     # for chkconfig.ltx
-    declare = re.compile(b'^\\s*#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*(\[([^,]*)(,.*)*\])*\\s*{(.*)}\\s*$')
-    category = re.compile(b'^\\s*#\\s*\\\\DeclareCategory{(.*)}\\s*$')
-    empty = re.compile(b'^\\s*$')
+    declare = re.compile(b'\\s*#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*(\[([^,]*)(,.*)*\])*\\s*{(.*)}\\s*$')
+    category = re.compile(b'\\s*#\\s*\\\\DeclareCategory{(.*)}\\s*$')
+    empty = re.compile(b'\\s*$')
     testclasses = list()
     for file in (glob.glob( os.path.join('layouts', '*.layout') )
                  + glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) ):
     testclasses = list()
     for file in (glob.glob( os.path.join('layouts', '*.layout') )
                  + glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) ):
@@ -1406,14 +1407,14 @@ def checkLatexConfig(check_config, bool_docbook):
                     nodeclaration = True
                 # A class, but no category declaration. Just break.
                 break
                     nodeclaration = True
                 # A class, but no category declaration. Just break.
                 break
-            if declare.search(line) != None:
+            if declare.match(line) != None:
                 decline = b"\\TestDocClass{%s}{%s}" \
                            % (classname.encode('ascii'), line[1:].strip())
                 testclasses.append(decline)
                 decline = b"\\TestDocClass{%s}{%s}" \
                            % (classname.encode('ascii'), line[1:].strip())
                 testclasses.append(decline)
-            elif category.search(line) != None:
+            elif category.match(line) != None:
                 catline = (b"\\DeclareCategory{%s}{%s}"
                            % (classname.encode('ascii'),
                 catline = (b"\\DeclareCategory{%s}{%s}"
                            % (classname.encode('ascii'),
-                              category.search(line).groups()[0]))
+                              category.match(line).groups()[0]))
                 testclasses.append(catline)
             if catline == b"" or decline == b"":
                 continue
                 testclasses.append(catline)
             if catline == b"" or decline == b"":
                 continue
@@ -1432,7 +1433,7 @@ def checkLatexConfig(check_config, bool_docbook):
         line = latex_out.readline()
         if not line:
             break;
         line = latex_out.readline()
         if not line:
             break;
-        if re.match('^\+', line):
+        if line.startswith('+'):
             logger.info(line.strip())
     # if the command succeeds, None will be returned
     ret = latex_out.close()
             logger.info(line.strip())
     # if the command succeeds, None will be returned
     ret = latex_out.close()
@@ -1515,12 +1516,12 @@ def processModuleFile(file, filename, bool_docbook):
         We expect output:
           "ModuleName" "filename" "Description" "Packages" "Requires" "Excludes" "Category"
     '''
         We expect output:
           "ModuleName" "filename" "Description" "Packages" "Requires" "Excludes" "Category"
     '''
-    remods = re.compile(b'\DeclareLyXModule\s*(?:\[([^]]*?)\])?{(.*)}')
-    rereqs = re.compile(b'#+\s*Requires: (.*)')
-    reexcs = re.compile(b'#+\s*Excludes: (.*)')
-    recaty = re.compile(b'#+\s*Category: (.*)')
-    redbeg = re.compile(b'#+\s*DescriptionBegin\s*$')
-    redend = re.compile(b'#+\s*DescriptionEnd\s*$')
+    remods = re.compile(b'\s*#\s*\\\\DeclareLyXModule\s*(?:\[([^]]*?)\])?{(.*)}')
+    rereqs = re.compile(b'\s*#+\s*Requires: (.*)')
+    reexcs = re.compile(b'\s*#+\s*Excludes: (.*)')
+    recaty = re.compile(b'\s*#+\s*Category: (.*)')
+    redbeg = re.compile(b'\s*#+\s*DescriptionBegin\s*$')
+    redend = re.compile(b'\s*#+\s*DescriptionEnd\s*$')
 
     modname = desc = pkgs = req = excl = catgy = b""
     readingDescription = False
 
     modname = desc = pkgs = req = excl = catgy = b""
     readingDescription = False
@@ -1528,7 +1529,7 @@ def processModuleFile(file, filename, bool_docbook):
 
     for line in open(file, 'rb').readlines():
       if readingDescription:
 
     for line in open(file, 'rb').readlines():
       if readingDescription:
-        res = redend.search(line)
+        res = redend.match(line)
         if res != None:
           readingDescription = False
           desc = b" ".join(descLines)
         if res != None:
           readingDescription = False
           desc = b" ".join(descLines)
@@ -1537,11 +1538,11 @@ def processModuleFile(file, filename, bool_docbook):
           continue
         descLines.append(line[1:].strip())
         continue
           continue
         descLines.append(line[1:].strip())
         continue
-      res = redbeg.search(line)
+      res = redbeg.match(line)
       if res != None:
         readingDescription = True
         continue
       if res != None:
         readingDescription = True
         continue
-      res = remods.search(line)
+      res = remods.match(line)
       if res != None:
           (pkgs, modname) = res.groups()
           if pkgs == None:
       if res != None:
           (pkgs, modname) = res.groups()
           if pkgs == None:
@@ -1550,19 +1551,19 @@ def processModuleFile(file, filename, bool_docbook):
             tmp = [s.strip() for s in pkgs.split(b",")]
             pkgs = b",".join(tmp)
           continue
             tmp = [s.strip() for s in pkgs.split(b",")]
             pkgs = b",".join(tmp)
           continue
-      res = rereqs.search(line)
+      res = rereqs.match(line)
       if res != None:
         req = res.group(1)
         tmp = [s.strip() for s in req.split(b"|")]
         req = b"|".join(tmp)
         continue
       if res != None:
         req = res.group(1)
         tmp = [s.strip() for s in req.split(b"|")]
         req = b"|".join(tmp)
         continue
-      res = reexcs.search(line)
+      res = reexcs.match(line)
       if res != None:
         excl = res.group(1)
         tmp = [s.strip() for s in excl.split(b"|")]
         excl = b"|".join(tmp)
         continue
       if res != None:
         excl = res.group(1)
         tmp = [s.strip() for s in excl.split(b"|")]
         excl = b"|".join(tmp)
         continue
-      res = recaty.search(line)
+      res = recaty.match(line)
       if res != None:
         catgy = res.group(1)
         continue
       if res != None:
         catgy = res.group(1)
         continue
@@ -1639,9 +1640,9 @@ def processCiteEngineFile(file, filename, bool_docbook):
         We expect output:
           "CiteEngineName" "filename" "CiteEngineType" "CiteFramework" "DefaultBiblio" "Description" "Packages"
     '''
         We expect output:
           "CiteEngineName" "filename" "CiteEngineType" "CiteFramework" "DefaultBiblio" "Description" "Packages"
     '''
-    remods = re.compile(b'\DeclareLyXCiteEngine\s*(?:\[([^]]*?)\])?{(.*)}')
-    redbeg = re.compile(b'#+\s*DescriptionBegin\s*$')
-    redend = re.compile(b'#+\s*DescriptionEnd\s*$')
+    remods = re.compile(b'\s*#\s*\\\\DeclareLyXCiteEngine\s*(?:\[([^]]*?)\])?{(.*)}')
+    redbeg = re.compile(b'\s*#+\s*DescriptionBegin\s*$')
+    redend = re.compile(b'\s*#+\s*DescriptionEnd\s*$')
     recet = re.compile(b'\s*CiteEngineType\s*(.*)')
     redb = re.compile(b'\s*DefaultBiblio\s*(.*)')
     resfm = re.compile(b'\s*CiteFramework\s*(.*)')
     recet = re.compile(b'\s*CiteEngineType\s*(.*)')
     redb = re.compile(b'\s*DefaultBiblio\s*(.*)')
     resfm = re.compile(b'\s*CiteFramework\s*(.*)')
@@ -1652,7 +1653,7 @@ def processCiteEngineFile(file, filename, bool_docbook):
 
     for line in open(file, 'rb').readlines():
       if readingDescription:
 
     for line in open(file, 'rb').readlines():
       if readingDescription:
-        res = redend.search(line)
+        res = redend.match(line)
         if res != None:
           readingDescription = False
           desc = b" ".join(descLines)
         if res != None:
           readingDescription = False
           desc = b" ".join(descLines)
@@ -1661,11 +1662,11 @@ def processCiteEngineFile(file, filename, bool_docbook):
           continue
         descLines.append(line[1:].strip())
         continue
           continue
         descLines.append(line[1:].strip())
         continue
-      res = redbeg.search(line)
+      res = redbeg.match(line)
       if res != None:
         readingDescription = True
         continue
       if res != None:
         readingDescription = True
         continue
-      res = remods.search(line)
+      res = remods.match(line)
       if res != None:
           (pkgs, modname) = res.groups()
           if pkgs == None:
       if res != None:
           (pkgs, modname) = res.groups()
           if pkgs == None:
@@ -1674,15 +1675,15 @@ def processCiteEngineFile(file, filename, bool_docbook):
             tmp = [s.strip() for s in pkgs.split(b",")]
             pkgs = b",".join(tmp)
           continue
             tmp = [s.strip() for s in pkgs.split(b",")]
             pkgs = b",".join(tmp)
           continue
-      res = recet.search(line)
+      res = recet.match(line)
       if res != None:
         cet = res.group(1)
         continue
       if res != None:
         cet = res.group(1)
         continue
-      res = redb.search(line)
+      res = redb.match(line)
       if res != None:
         db = res.group(1)
         continue
       if res != None:
         db = res.group(1)
         continue
-      res = resfm.search(line)
+      res = resfm.match(line)
       if res != None:
         cfm = res.group(1)
         continue
       if res != None:
         cfm = res.group(1)
         continue
@@ -1770,14 +1771,14 @@ def checkTeXAllowSpaces():
 def rescanTeXFiles():
     ''' Run kpsewhich to update information about TeX files '''
     logger.info("+Indexing TeX files... ")
 def rescanTeXFiles():
     ''' Run kpsewhich to update information about TeX files '''
     logger.info("+Indexing TeX files... ")
-    if not os.path.isfile( os.path.join(srcdir, 'scripts', 'TeXFiles.py') ):
+    tfscript = os.path.join(srcdir, 'scripts', 'TeXFiles.py')
+    if not os.path.isfile(tfscript):
         logger.error("configure: error: cannot find TeXFiles.py script")
         sys.exit(1)
     interpreter = sys.executable
     if interpreter == '':
         interpreter = "python"
         logger.error("configure: error: cannot find TeXFiles.py script")
         sys.exit(1)
     interpreter = sys.executable
     if interpreter == '':
         interpreter = "python"
-    tfp = cmdOutput(interpreter + " -tt " + '"'
-                    + os.path.join(srcdir, 'scripts', 'TeXFiles.py') + '"')
+    tfp = cmdOutput('"%s" -tt "%s"' % (interpreter, tfscript))
     logger.info(tfp)
     logger.info("\tdone")
 
     logger.info(tfp)
     logger.info("\tdone")
 
@@ -1854,7 +1855,12 @@ Format %i
     # 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]
     # 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]
-    (inkscape_path, inkscape_name) = os.path.split(checkInkscape())
+    (inkscape_path, inkscape_gui) = os.path.split(checkInkscape())
+    # On Windows, we need to call the "inkscape.com" wrapper
+    # for command line purposes. Other OSes do not differentiate.
+    inkscape_cl = inkscape_gui
+    if os.name == 'nt':
+        inkscape_cl = inkscape_gui.replace('.exe', '.com')
     # On MacOSX, Inkscape requires full path file arguments. This
     # is not needed on Linux and Win and even breaks the latter.
     inkscape_fileprefix = ""
     # On MacOSX, Inkscape requires full path file arguments. This
     # is not needed on Linux and Win and even breaks the latter.
     inkscape_fileprefix = ""