X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=ba4c004d8248a26acbea0cdf718619d0c8551579;hb=4549f46a431021d6667451ab83965eca12d58f58;hp=1ec8a0e012fd433469c4967c46369e2bf0adfadc;hpb=0e3d20929570729d2db5cd3b4b930e5234b426ac;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index 1ec8a0e012..ba4c004d82 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -168,14 +168,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 @@ -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") - match = re.match('^Inkscape', version_string) - if match: + if version_string.startswith('Inkscape'): return 'inkscape' else: return 'inkscape-binary' @@ -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 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 +772,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() @@ -827,12 +827,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 +927,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 +977,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 "%%" ""']) @@ -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") - 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 +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 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 +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} - 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] @@ -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 - 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 +1407,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 +1433,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 +1442,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') @@ -1515,12 +1511,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*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 @@ -1528,7 +1524,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 +1533,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 +1546,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 @@ -1639,9 +1635,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 +1648,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 +1657,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 +1670,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 +1766,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 +1790,7 @@ if __name__ == '__main__': lyx_check_config = True lyx_kpsewhich = True outfile = 'lyxrc.defaults' - lyxrc_fileformat = 25 + lyxrc_fileformat = 27 rc_entries = '' lyx_keep_temps = False version_suffix = ''