# \author Bo Peng
# Full author contact details are available in file CREDITS.
+from __future__ import print_function
import glob, logging, os, re, shutil, subprocess, sys, stat
# set up logging
'''
if os.name == 'nt':
b = False
- cmd = 'cmd /d /c pushd ' + shortPath(os.getcwdu()) + '&' + cmd
+ if sys.version_info[0] < 3:
+ cmd = 'cmd /d /c pushd ' + shortPath(os.getcwdu()) + '&' + cmd
+ else:
+ cmd = 'cmd /d /c pushd ' + shortPath(os.getcwd()) + '&' + cmd
else:
b = True
pipe = subprocess.Popen(cmd, shell=b, close_fds=b, stdin=subprocess.PIPE, \
'''
if not os.path.isdir(src):
- raise FileError, \
- "cannot copy tree '%s': not a directory" % src
+ raise FileError("cannot copy tree '%s': not a directory" % src)
try:
names = os.listdir(src)
- except os.error, (errno, errstr):
- raise FileError, \
- "error listing files in '%s': %s" % (src, errstr)
+ except os.error as oserror:
+ (errno, errstr) = oserror.args
+ raise FileError("error listing files in '%s': %s" % (src, errstr))
if not os.path.isdir(dst):
os.makedirs(dst)
language, encoding = getdefaultlocale()
if encoding == None:
encoding = 'latin1'
- inpname = shortPath(unicode(tmpfname, encoding)).replace('\\', '/')
+ if sys.version_info[0] < 3:
+ inpname = shortPath(unicode(tmpfname, encoding)).replace('\\', '/')
+ else:
+ inpname = shortPath(str(tmpfname, encoding)).replace('\\', '/')
else:
inpname = cmdOutput('cygpath -m ' + tmpfname)
logname = os.path.basename(re.sub("(?i).ltx", ".log", inpname))
if isinstance(alt_type, str):
alt_tokens = [alt_token % alt_type]
else:
- alt_tokens = map(lambda s: alt_token % s, alt_type)
+ alt_tokens = [alt_token % s for s in alt_type]
for idxx in range(len(rcs)):
if len(rcs) == 1:
m = r.match(rcs[0])
''' Check whether Inkscape is available and return the full path (Windows only) '''
if os.name != 'nt':
return 'inkscape'
- import _winreg
- aReg = _winreg.ConnectRegistry(None, _winreg.HKEY_CLASSES_ROOT)
+ if sys.version_info[0] < 3:
+ import _winreg as winreg
+ else:
+ import winreg
+ aReg = winreg.ConnectRegistry(None, winreg.HKEY_CLASSES_ROOT)
try:
- aKey = _winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
- val = _winreg.QueryValueEx(aKey, "")
+ aKey = winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
+ val = winreg.QueryValueEx(aKey, "")
return str(val[0]).split('"')[1].replace('.exe', '')
except EnvironmentError:
try:
- aKey = _winreg.OpenKey(aReg, r"Applications\inkscape.exe\shell\open\command")
- val = _winreg.QueryValueEx(aKey, "")
+ aKey = winreg.OpenKey(aReg, r"Applications\inkscape.exe\shell\open\command")
+ val = winreg.QueryValueEx(aKey, "")
return str(val[0]).split('"')[1].replace('.exe', '')
except EnvironmentError:
return 'inkscape'
if LUATEX != '':
addToRC(r'\converter luatex pdf5 "%s" "latex=lualatex"' % LUATEX)
if DVILUATEX != '':
- addToRC(r'\converter luatex dvi3 "%s" "latex=dvilualatex"' % DVILUATEX)
+ addToRC(r'\converter dviluatex dvi3 "%s" "latex=dvilualatex"' % DVILUATEX)
def checkModule(module):
checkViewerEditor('a text editor', ['xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \
'nedit', 'gedit', 'notepad', 'geany', 'leafpad', 'mousepad'],
rc_entry = [r'''\Format asciichess asc "Plain text (chess output)" "" "" "%%" "" ""
-\Format asciiimage asc "Plain text (image)" "" "" "%%" "" ""
-\Format asciixfig asc "Plain text (Xfig output)" "" "" "%%" "" ""
-\Format dateout tmp "date (output)" "" "" "%%" "" ""
\Format docbook sgml DocBook B "" "%%" "document,menu=export" ""
\Format docbook-xml xml "DocBook (XML)" "" "" "%%" "document,menu=export" "application/docbook+xml"
\Format dot dot "Graphviz Dot" "" "" "%%" "vector" "text/vnd.graphviz"
checkViewer('gnumeric spreadsheet software', ['gnumeric'],
rc_entry = [r'''\Format gnumeric gnumeric "Gnumeric spreadsheet" "" "" "%%" "document" "application/x-gnumeric"
\Format excel xls "Excel spreadsheet" "" "" "%%" "document" "application/vnd.ms-excel"
+\Format excel2 xlsx "MS Excel Office Open XML" "" "" "%%" "document" "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+\Format html_table html "HTML Table (for spreadsheets)" "" "" "%%" "document" "text/html"
\Format oocalc ods "OpenDocument spreadsheet" "" "" "%%" "document" "application/vnd.oasis.opendocument.spreadsheet"'''])
#
checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
\Format word2 docx "MS Word Office Open XML" O "%%" "%%" "document,vector,menu=export" "application/vnd.openxmlformats-officedocument.wordprocessingml.document"'''])
#
# entries that do not need checkProg
- addToRC(r'''\Format date "" "date command" "" "" "" "" ""
-\Format csv csv "Table (CSV)" "" "" "" "document" "text/csv"
+ addToRC(r'''\Format csv csv "Table (CSV)" "" "" "" "document" "text/csv"
\Format fax "" Fax "" "" "" "document" ""
\Format lyx lyx LyX "" "" "" "" "application/x-lyx"
\Format lyx13x 13.lyx "LyX 1.3.x" "" "" "" "document" ""
\Format jlyx cjklyx "CJK LyX 1.4.x (euc-jp)" "" "" "" "document" ""
\Format klyx cjklyx "CJK LyX 1.4.x (euc-kr)" "" "" "" "document" ""
\Format lyxpreview lyxpreview "LyX Preview" "" "" "" "" ""
-\Format pdftex pdftex_t PDFTEX "" "" "" "" ""
+\Format pdftex "pdftex_t, pdf_tex" PDFTEX "" "" "" "" ""
\Format program "" Program "" "" "" "" ""
-\Format pstex pstex_t PSTEX "" "" "" "" ""
+\Format pstex "pstex_t, ps_tex" PSTEX "" "" "" "" ""
\Format wmf wmf "Windows Metafile" "" "" "" "vector" "image/x-wmf"
\Format emf emf "Enhanced Metafile" "" "" "" "vector" "image/x-emf"
\Format wordhtml "html, htm" "HTML (MS Word)" "" "" "" "document" ""
rc_entry = [r'''\converter literate latex "%%" ""
\converter literate pdflatex "%%" ""
\converter literate xetex "%%" ""
-\converter literate luatex "%%" ""'''])
+\converter literate luatex "%%" ""
+\converter literate dviluatex "%%" ""'''])
#
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 "%%" ""
\converter sweave xetex "%%" ""
-\converter sweave luatex "%%" ""'''])
+\converter sweave luatex "%%" ""
+\converter sweave dviluatex "%%" ""'''])
#
checkProg('a knitr -> LaTeX converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxknitr.R $$p$$i $$p$$o $$e $$r'],
rc_entry = [r'''\converter knitr latex "%%" ""
\converter knitr pdflatex "%%" ""
\converter knitr xetex "%%" ""
-\converter knitr luatex "%%" ""'''])
+\converter knitr luatex "%%" ""
+\converter knitr dviluatex "%%" ""'''])
#
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 "%%" ""' ])
if fig2dev == "fig2dev":
addToRC(r'''\converter fig eps "fig2dev -L eps $$i $$o" ""
\converter fig ppm "fig2dev -L ppm $$i $$o" ""
+\converter fig svg "fig2dev -L svg $$i $$o" ""
\converter fig png "fig2dev -L png $$i $$o" ""
+\converter svg pdftex "python -tt $$s/scripts/svg2pdftex.py $$i $$o" ""
+\converter svg pstex "python -tt $$s/scripts/svg2pstex.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" ""''')
#
r'''\converter dot eps "dot -Teps $$i -o $$o" ""
\converter dot png "dot -Tpng $$i -o $$o" ""'''])
#
- checkProg('a Dia -> PNG converter', ['dia -e $$o -t png $$i'],
- rc_entry = [ r'\converter dia png "%%" ""'])
+ path, dia = checkProg('a Dia -> Image converter', ['dia'])
+ if dia == 'dia':
+ addToRC(r'''\converter dia png "dia -e $$o -t png $$i" ""
+\converter dia eps "dia -e $$o -t eps $$i" ""
+\converter dia svg "dia -e $$o -t svg $$i" ""''')
+
#
- checkProg('a Dia -> EPS converter', ['dia -e $$o -t eps $$i'],
- rc_entry = [ r'\converter dia eps "%%" ""'])
# Actually, this produces EPS, but with a wrong bounding box (usually A4 or letter).
# The eps2->eps converter then fixes the bounding box by cropping.
# Although unoconv can convert to png and pdf as well, do not define
checkProg('a spreadsheet -> latex converter', ['ssconvert'],
rc_entry = [ r'''\converter gnumeric latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
\converter oocalc latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
-\converter excel latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""'''])
+\converter excel latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
+\converter excel2 latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
+\converter gnumeric html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
+\converter oocalc html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
+\converter excel html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
+\converter excel2 html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
+'''])
path, lilypond = checkProg('a LilyPond -> EPS/PDF/PNG converter', ['lilypond'])
if (lilypond != ''):
addToRC(r'\converter lilypond-book pdflatex "lilypond-book --safe --pdf --latex-program=pdflatex --lily-output-dir=ly-pdf $$i" ""')
addToRC(r'\converter lilypond-book xetex "lilypond-book --safe --pdf --latex-program=xelatex --lily-output-dir=ly-pdf $$i" ""')
addToRC(r'\converter lilypond-book luatex "lilypond-book --safe --pdf --latex-program=lualatex --lily-output-dir=ly-pdf $$i" ""')
+ addToRC(r'\converter lilypond-book dviluatex "lilypond-book --safe --latex-program=dvilualatex --lily-output-dir=ly-eps $$i" ""')
logger.info('+ found LilyPond-book version %s.' % version_number)
else:
logger.info('+ found LilyPond-book, but version %s is too old.' % version_number)
# Entries that do not need checkProg
addToRC(r'''
\converter csv lyx "python -tt $$s/scripts/csv2lyx.py $$i $$o" ""
-\converter date dateout "python -tt $$s/scripts/date.py %d-%m-%Y > $$o" ""
\converter docbook docbook-xml "cp $$i $$o" "xml"
\converter fen asciichess "python -tt $$s/scripts/fen2ascii.py $$i $$o" ""
-\converter lyx lyx13x "python -tt $$s/lyx2lyx/lyx2lyx -t 221 $$i > $$o" ""
-\converter lyx lyx14x "python -tt $$s/lyx2lyx/lyx2lyx -t 245 $$i > $$o" ""
-\converter lyx lyx15x "python -tt $$s/lyx2lyx/lyx2lyx -t 276 $$i > $$o" ""
-\converter lyx lyx16x "python -tt $$s/lyx2lyx/lyx2lyx -t 345 $$i > $$o" ""
-\converter lyx lyx20x "python -tt $$s/lyx2lyx/lyx2lyx -t 413 $$i > $$o" ""
-\converter lyx lyx21x "python -tt $$s/lyx2lyx/lyx2lyx -t 474 $$i > $$o" ""
-\converter lyx lyx22x "python -tt $$s/lyx2lyx/lyx2lyx -t 508 $$i > $$o" ""
-\converter lyx clyx "python -tt $$s/lyx2lyx/lyx2lyx -c big5 -t 245 $$i > $$o" ""
-\converter lyx jlyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp -t 245 $$i > $$o" ""
-\converter lyx klyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr -t 245 $$i > $$o" ""
-\converter clyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c big5 $$i > $$o" ""
-\converter jlyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp $$i > $$o" ""
-\converter klyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr $$i > $$o" ""
+\converter lyx lyx13x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.3 -o $$o $$i" ""
+\converter lyx lyx14x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o $$i" ""
+\converter lyx lyx15x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.5 -o $$o $$i" ""
+\converter lyx lyx16x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.6 -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 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 clyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c big5 -o $$o $$i" ""
+\converter jlyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp -o $$o $$i" ""
+\converter klyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr -o $$o $$i" ""
\converter lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py --png" ""
\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py --ppm" ""
''')
prereq_latex = checkForClassExtension(classname)
else:
prereq_list = optAll[1:-1].split(',')
- prereq_list = map(checkForClassExtension, prereq_list)
+ prereq_list = list(map(checkForClassExtension, prereq_list))
prereq_latex = ','.join(prereq_list)
prereq_docbook = {'true':'', 'false':'docbook'}[bool_docbook]
prereq = {'LaTeX':prereq_latex, 'DocBook':prereq_docbook}[classtype]
## Parse the command line
for op in sys.argv[1:]: # default shell/for list is $*, the options
if op in [ '-help', '--help', '-h' ]:
- print '''Usage: configure [options]
+ print('''Usage: configure [options]
Options:
--help show this help lines
--keep-temps keep temporary files (for debug. purposes)
--without-latex-config do not run LaTeX to determine configuration
--with-version-suffix=suffix suffix of binary installed files
--binary-dir=directory directory of binary installed files
-'''
+''')
sys.exit(0)
elif op == '--without-kpsewhich':
lyx_kpsewhich = False
elif op[0:13] == '--binary-dir=':
lyx_binary_dir = op[13:]
else:
- print "Unknown option", op
+ print("Unknown option %s" % op)
sys.exit(1)
#
# check if we run from the right directory