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
''' 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'
\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" ""
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()
\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'],
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 "%%" ""' ])
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 "%%" ""'])
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('.')
\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" ""
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]
# 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' ) ) ):
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
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()
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')
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
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)
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:
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
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*(.*)')
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)
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:
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
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")
lyx_check_config = True
lyx_kpsewhich = True
outfile = 'lyxrc.defaults'
- lyxrc_fileformat = 25
+ lyxrc_fileformat = 27
rc_entries = ''
lyx_keep_temps = False
version_suffix = ''