X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=0b3c2a761c885d5466ef1f3fe5c52a93e2209bbb;hb=70167007e445c3a9d2ffa4716f5586ddd207195d;hp=5c5e449cf7a16798569c922e62378a3ed113f0bb;hpb=65b44311f39545060e694c3bd4198323c63c6163;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index 5c5e449cf7..0b3c2a761c 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # -*- coding: utf-8 -*- # # file configure.py @@ -25,6 +25,13 @@ console.setFormatter(formatter) logger = logging.getLogger('LyX') logger.addHandler(console) +def quoteIfSpace(name): + " utility function: quote name if it contains spaces " + if ' ' in name: + return '"' + name + '"' + else: + return name + def writeToFile(filename, lines, append = False): " utility function: write or append lines to filename " if append: @@ -62,10 +69,10 @@ def removeFiles(filenames): pass -def cmdOutput(cmd, async = False): +def cmdOutput(cmd, asynchronous = False): '''utility function: run a command and get its output as a string cmd: command to run - async: if False, return whole output as a string, otherwise + asynchronous: if False, return whole output as a string, otherwise return the stdout handle from which the output can be read (the caller is then responsible for closing it) ''' @@ -80,7 +87,7 @@ def cmdOutput(cmd, async = False): pipe = subprocess.Popen(cmd, shell=b, close_fds=b, stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True) pipe.stdin.close() - if async: + if asynchronous: return pipe.stdout output = pipe.stdout.read() pipe.stdout.close() @@ -168,14 +175,14 @@ def checkUpgrade(): logger.info('Checking for upgrade from previous version.') parent = os.path.dirname(cwd) appname = basename[:(-len(version_suffix))] - for version in ['-2.1', '-2.0', '-1.6' ]: + for version in ['-2.3', '-2.2', '-2.1', '-2.0', '-1.6' ]: logger.debug('Checking for upgrade from previous version ' + version) previous = os.path.join(parent, appname + version) logger.debug('previous = ' + previous) if os.path.isdir( previous ): logger.info('Found directory "%s".', previous) copy_tree( previous, cwd, True ) - logger.info('Content copied to directory "%s".', cwd) + logger.info('Content copied from directory "%s".', previous) return @@ -267,10 +274,11 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''): if "PATHEXT" in os.environ: extlist = extlist + os.environ["PATHEXT"].split(os.pathsep) global java, perl + unquoted_space = re.compile(r'''((?:[^ "']|"[^"]*"|'[^']*')+)''') 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] + ac_prog = progs[idx].replace('"', '\\"') + ac_word = unquoted_space.split(progs[idx])[1::2][0].strip('"') if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '': continue if ac_word.endswith('.pl') and perl == '': @@ -503,8 +511,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") - match = re.match('^Inkscape', version_string) - if match: + if version_string.startswith('Inkscape'): return 'inkscape' else: return 'inkscape-binary' @@ -549,10 +556,10 @@ def checkLatex(dtl_tools): PPLATEX = LATEX if dtl_tools: # Windows only: DraftDVI - addToRC(r'''\converter latex dvi2 "%s" "latex" + addToRC(r'''\converter latex dvi2 "%s" "latex,hyperref-driver=dvips" \converter dvi2 dvi "python -tt $$s/scripts/clean_dvi.py $$i $$o" ""''' % PPLATEX) else: - addToRC(r'\converter latex dvi "%s" "latex"' % PPLATEX) + addToRC(r'\converter latex dvi "%s" "latex,hyperref-driver=dvips"' % PPLATEX) # no latex if LATEX != '': # Check if latex is usable @@ -755,7 +762,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 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" "" @@ -772,10 +780,10 @@ def checkFormatEntries(dtl_tools): def checkConverterEntries(): ''' Check all converters (\converter entries) ''' checkProg('the pdflatex program', ['pdflatex $$i'], - rc_entry = [ r'\converter pdflatex pdf2 "%%" "latex=pdflatex"' ]) + rc_entry = [ r'\converter pdflatex pdf2 "%%" "latex=pdflatex,hyperref-driver=pdftex"' ]) checkProg('XeTeX', ['xelatex $$i'], - rc_entry = [ r'\converter xetex pdf4 "%%" "latex=xelatex"' ]) + rc_entry = [ r'\converter xetex pdf4 "%%" "latex=xelatex,hyperref-driver=xetex"' ]) checkLuatex() @@ -793,12 +801,12 @@ def checkConverterEntries(): in_binary_dir = os.path.join(lyx_binary_dir, 'tex2lyx') in_binary_dir = os.path.abspath(in_binary_dir).replace('\\', '/') - path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [in_binary_subdir, in_binary_subdir + version_suffix, in_binary_dir, in_binary_dir + version_suffix, 'tex2lyx' + version_suffix, 'tex2lyx'], + path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [quoteIfSpace(in_binary_subdir), quoteIfSpace(in_binary_subdir + version_suffix), quoteIfSpace(in_binary_dir), quoteIfSpace(in_binary_dir + version_suffix), 'tex2lyx' + version_suffix, 'tex2lyx'], rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" "" \converter latexclipboard lyx "%% -fixedenc utf8 -f $$i $$o" "" \converter literate lyx "%% -n -m noweb -f $$i $$o" "" -\converter sweave lyx "%% -n -m sweave -f $$i $$o" "needauth" -\converter knitr lyx "%% -n -m knitr -f $$i $$o" "needauth"'''], not_found = 'tex2lyx') +\converter sweave lyx "%% -n -m sweave -f $$i $$o" "" +\converter knitr lyx "%% -n -m knitr -f $$i $$o" ""'''], not_found = 'tex2lyx') if path == '': logger.warning("Failed to find tex2lyx on your system.") @@ -827,12 +835,12 @@ def checkConverterEntries(): \converter knitr dviluatex "%%" "needauth"''']) # 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 "%%" "needauth"', - r'\converter sweave-ja r "%%" "needauth"' ]) + rc_entry = [ r'\converter sweave r "%%" ""', + r'\converter sweave-ja r "%%" ""' ]) # 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 "%%" "needauth"', - r'\converter knitr-ja r "%%" "needauth"' ]) + rc_entry = [ r'\converter knitr r "%%" ""', + r'\converter knitr-ja r "%%" ""' ]) # checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex', 'htmltolatex -input $$i -output $$o', 'htmltolatex.jar -input $$i -output $$o'], @@ -927,7 +935,7 @@ def checkConverterEntries(): rc_entry = [ r'\converter rtf html "%%" ""' ]) # Do not define a converter to pdf6, ps is a pure export format checkProg('a PS to PDF converter', ['ps2pdf $$i $$o'], - rc_entry = [ r'\converter ps pdf "%%" ""' ]) + rc_entry = [ r'\converter ps pdf "%%" "hyperref-driver=dvips"' ]) # checkProg('a PS to TXT converter', ['pstotext $$i > $$o'], rc_entry = [ r'\converter ps text2 "%%" ""' ]) @@ -977,13 +985,13 @@ def checkConverterEntries(): rc_entry = [ r'\converter dvi text4 "%%" ""' ]) # checkProg('a DVI to PS converter', ['dvips -o $$o $$i'], - rc_entry = [ r'\converter dvi ps "%%" ""' ]) + rc_entry = [ r'\converter dvi ps "%%" "hyperref-driver=dvips"' ]) # checkProg('a DVI to cropped EPS converter', ['dvips -E -o $$o $$i'], rc_entry = [ r'\converter dvi eps3 "%%" ""' ]) # - checkProg('a DVI to PDF converter', ['dvipdfmx -o $$o $$i', 'dvipdfm -o $$o $$i'], - rc_entry = [ r'\converter dvi pdf3 "%%" ""' ]) + checkProg('a DVI to PDF converter', ['dvipdfmx', 'dvipdfm'], + rc_entry = [ r'\converter dvi pdf3 "%% -o $$o $$i" "hyperref-driver=%%"' ]) # checkProg('a fax program', ['kdeprintfax $$i', 'ksendfax $$i', 'hylapex $$i'], rc_entry = [ r'\converter ps fax "%%" ""']) @@ -1014,18 +1022,16 @@ def checkConverterEntries(): \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_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o' - % (inkscape_fileprefix, inkscape_fileprefix)], + checkProg('a WMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i', inkscape_cl + ' --file=$$i --export-area-drawing --without-gui --export-eps=$$o'], rc_entry = [ r'\converter wmf eps "%%" ""']) # - 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)], + checkProg('an EMF -> EPS converter', ['metafile2eps $$i $$o', inkscape_cl + ' --file=$$i --export-area-drawing --without-gui --export-eps=$$o'], rc_entry = [ r'\converter emf eps "%%" ""']) # - checkProg('a WMF -> PDF converter', [inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)], + checkProg('a WMF -> PDF converter', [inkscape_cl + ' --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'], rc_entry = [ r'\converter wmf pdf6 "%%" ""']) # - checkProg('an EMF -> PDF converter', [inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)], + checkProg('an EMF -> PDF converter', [inkscape_cl + ' --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'], rc_entry = [ r'\converter emf pdf6 "%%" ""']) # Only define a converter to pdf6 for graphics checkProg('an EPS -> PDF converter', ['epstopdf'], @@ -1071,20 +1077,17 @@ 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) - 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)], + checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', inkscape_cl + ' --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'], 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_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o' - % (inkscape_fileprefix, inkscape_fileprefix)], + checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', inkscape_cl + ' --file=$$i --export-area-drawing --without-gui --export-eps=$$o'], 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_cl + ' --without-gui --file=%s$$i --export-png=%s$$o' - % (inkscape_fileprefix, inkscape_fileprefix)], + checkProg('a SVG -> PNG converter', ['rsvg-convert -f png -o $$o $$i', inkscape_cl + ' --without-gui --file=$$i --export-png=$$o'], rc_entry = [ r'''\converter svg png "%%" "", \converter svgz png "%%" ""'''], path = ['', inkscape_path]) @@ -1131,7 +1134,7 @@ def checkConverterEntries(): 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('.') @@ -1185,6 +1188,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 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" "" @@ -1289,13 +1293,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} - 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(): - 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] @@ -1363,7 +1367,7 @@ def checkLatexConfig(check_config, bool_docbook): 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: @@ -1386,9 +1390,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 - 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' ) ) ): @@ -1406,14 +1410,14 @@ def checkLatexConfig(check_config, bool_docbook): 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) - elif category.search(line) != None: + elif category.match(line) != None: 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 @@ -1432,7 +1436,7 @@ def checkLatexConfig(check_config, bool_docbook): 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() @@ -1441,18 +1445,13 @@ def checkLatexConfig(check_config, bool_docbook): if rmcopy: removeFiles( [ 'chkconfig.ltx' ] ) # - # currently, values in chkconfig are only used to set - # \font_encoding - values = {} - for line in open('chkconfig.vars').readlines(): - key, val = re.sub('-', '_', line).split('=') - val = val.strip() - values[key] = val.strip("'") - # chk_fontenc may not exist - try: - addToRC(r'\font_encoding "%s"' % values["chk_fontenc"]) - except: - pass + # values in chkconfig were only used to set + # \font_encoding, which is obsolete +# values = {} +# for line in open('chkconfig.vars').readlines(): +# key, val = re.sub('-', '_', line).split('=') +# val = val.strip() +# values[key] = val.strip("'") # if configure successed, move textclass.lst.tmp to textclass.lst # and packages.lst.tmp to packages.lst if (os.path.isfile('textclass.lst.tmp') @@ -1473,7 +1472,7 @@ def checkModulesConfig(): ## It has been automatically generated by configure ## Use "Options/Reconfigure" if you need to update it after a ## configuration change. -## "ModuleName" "filename" "Description" "Packages" "Requires" "Excludes" "Category" +## "ModuleName" "filename" "Description" "Packages" "Requires" "Excludes" "Category" "Local" ''') # build the list of available modules @@ -1515,12 +1514,12 @@ def processModuleFile(file, filename, bool_docbook): 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*\\\\DeclareCategory{(.*)}\\s*$') + 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 @@ -1528,7 +1527,7 @@ def processModuleFile(file, filename, bool_docbook): 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) @@ -1537,11 +1536,11 @@ def processModuleFile(file, filename, bool_docbook): continue descLines.append(line[1:].strip()) continue - res = redbeg.search(line) + res = redbeg.match(line) if res != None: readingDescription = True continue - res = remods.search(line) + res = remods.match(line) if res != None: (pkgs, modname) = res.groups() if pkgs == None: @@ -1550,19 +1549,19 @@ def processModuleFile(file, filename, bool_docbook): 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 - 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 - res = recaty.search(line) + res = recaty.match(line) if res != None: catgy = res.group(1) continue @@ -1588,8 +1587,11 @@ def processModuleFile(file, filename, bool_docbook): cm.write(line + '\n') cm.close() - return (b'"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' - % (modname, filename, desc, pkgs, req, excl, catgy)) + local = b"true" + if (file.startswith(srcdir)): + local = b"false" + return (b'"%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' + % (modname, filename, desc, pkgs, req, excl, catgy, local)) def checkCiteEnginesConfig(): @@ -1639,9 +1641,9 @@ def processCiteEngineFile(file, filename, bool_docbook): 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*(.*)') @@ -1652,7 +1654,7 @@ def processCiteEngineFile(file, filename, bool_docbook): 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) @@ -1661,11 +1663,11 @@ def processCiteEngineFile(file, filename, bool_docbook): continue descLines.append(line[1:].strip()) continue - res = redbeg.search(line) + res = redbeg.match(line) if res != None: readingDescription = True continue - res = remods.search(line) + res = remods.match(line) if res != None: (pkgs, modname) = res.groups() if pkgs == None: @@ -1674,15 +1676,15 @@ def processCiteEngineFile(file, filename, bool_docbook): 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 - res = redb.search(line) + res = redb.match(line) if res != None: db = res.group(1) continue - res = resfm.search(line) + res = resfm.match(line) if res != None: cfm = res.group(1) continue @@ -1770,14 +1772,14 @@ def checkTeXAllowSpaces(): 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" - tfp = cmdOutput(interpreter + " -tt " + '"' - + os.path.join(srcdir, 'scripts', 'TeXFiles.py') + '"') + tfp = cmdOutput('"%s" -tt "%s"' % (interpreter, tfscript)) logger.info(tfp) logger.info("\tdone") @@ -1794,7 +1796,7 @@ if __name__ == '__main__': lyx_check_config = True lyx_kpsewhich = True outfile = 'lyxrc.defaults' - lyxrc_fileformat = 25 + lyxrc_fileformat = 29 rc_entries = '' lyx_keep_temps = False version_suffix = '' @@ -1860,11 +1862,6 @@ Format %i 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 = "" - if sys.platform == 'darwin': - inkscape_fileprefix = "$$p" checkFormatEntries(dtl_tools) checkConverterEntries() (chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()