sys.exit(2)
logger.info('checking for ' + description + '...')
## print '(' + ','.join(progs) + ')',
+ global java, perl
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]
+ if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '':
+ continue
+ if ac_word.endswith('.pl') and perl == '':
+ continue
msg = '+checking for "' + ac_word + '"... '
path = os.environ["PATH"].split(os.pathsep) + path
extlist = ['']
for ext in extlist:
if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ):
logger.info(msg + ' yes')
+ # deal with java and perl
+ if ac_word.endswith('.class'):
+ ac_prog = ac_prog.replace(ac_word, r'%s \"%s\"' % (java, os.path.join(ac_dir, ac_word[:-6])))
+ elif ac_word.endswith('.jar'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word)))
+ elif ac_word.endswith('.pl'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word)))
# write rc entries for this command
if len(rc_entry) == 1:
addToRC(rc_entry[0].replace('%%', ac_prog))
found_prime = False
real_ac_dir = ''
real_ac_word = not_found
+ global java, perl
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]
+ if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '':
+ continue
+ if ac_word.endswith('.pl') and perl == '':
+ continue
msg = '+checking for "' + ac_word + '"... '
path = os.environ["PATH"].split(os.pathsep) + path
extlist = ['']
logger.info(msg + ' yes')
pr = re.compile(r'(\\\S+)(.*)$')
m = None
+ # deal with java and perl
+ if ac_word.endswith('.class'):
+ ac_prog = ac_prog.replace(ac_word, r'%s \"%s\"' % (java, os.path.join(ac_dir, ac_word[:-6])))
+ elif ac_word.endswith('.jar'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word)))
+ elif ac_word.endswith('.pl'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word)))
# write rc entries for this command
if found_prime == False:
if len(rc_entry) == 1:
if len(rcs) == 1:
m = r.match(rcs[0])
if m:
- alt = '\n'.join([s + m.group(1) + " %%" for s in alt_tokens])
+ alt = '\n'.join([s + m.group(1) + ' "%%"' for s in alt_tokens])
elif len(rcs) > 1:
m = r.match(rcs[idxx])
if m:
if idxx > 0:
alt += '\n'
- alt += '\n'.join([s + m.group(1) + " %%" for s in alt_tokens])
+ alt += '\n'.join([s + m.group(1) + ' "%%"' for s in alt_tokens])
return alt
rc_entry = [r'\Format fig fig FIG "" "%%" "%%" "vector"'])
#
checkViewerEditor('a Dia viewer and editor', ['dia'],
- rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector"'])
+ rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector,zipped=native"'])
+ #
+ checkViewerEditor('an OpenOffice drawing viewer and editor', ['libreoffice', 'ooffice', 'oodraw', 'soffice'],
+ rc_entry = [r'\Format odg "odg, sxd" "OpenOffice drawing" "" "%%" "%%" "vector,zipped=native"'])
#
checkViewerEditor('a Grace viewer and editor', ['xmgrace'],
rc_entry = [r'\Format agr agr Grace "" "%%" "%%" "vector"'])
path, iv = checkViewerNoRC('a raster image viewer', ['xv', 'kview', 'gimp-remote', 'gimp'],
rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" ""
\Format gif gif GIF "" "%s" "%s" ""
-\Format jpg jpg JPEG "" "%s" "%s" ""
+\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" ""
\Format pbm pbm PBM "" "%s" "%s" ""
\Format pgm pgm PGM "" "%s" "%s" ""
\Format png png PNG "" "%s" "%s" ""
path, ie = checkEditorNoRC('a raster image editor', ['gimp-remote', 'gimp'],
rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" ""
\Format gif gif GIF "" "%s" "%s" ""
-\Format jpg jpg JPEG "" "%s" "%s" ""
+\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" ""
\Format pbm pbm PBM "" "%s" "%s" ""
\Format pgm pgm PGM "" "%s" "%s" ""
\Format png png PNG "" "%s" "%s" ""
\Format xpm xpm XPM "" "%s" "%s" ""'''])
addToRC(r'''\Format bmp bmp BMP "" "%s" "%s" ""
\Format gif gif GIF "" "%s" "%s" ""
-\Format jpg jpg JPEG "" "%s" "%s" ""
+\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" ""
\Format pbm pbm PBM "" "%s" "%s" ""
\Format pgm pgm PGM "" "%s" "%s" ""
\Format png png PNG "" "%s" "%s" ""
\Format excel xls "Excel spreadsheet" "" "" "%%" "document"
\Format oocalc ods "OpenOffice spreadsheet" "" "" "%%" "document"'''])
#
- path, xhtmlview = checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
+ checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
rc_entry = [r'\Format xhtml xhtml "LyXHTML" y "%%" "" "document,menu=export"'])
- if xhtmlview == "":
- addToRC(r'\Format xhtml xhtml "LyXHTML" y "" "" "document,menu=export"')
#
checkEditor('a BibTeX editor', ['jabref', 'JabRef', \
'pybliographic', 'bibdesk', 'gbib', 'kbib', \
addToRC(r'\Format dvi2 dvi DraftDVI "" "" "" "vector"')
#
checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
- rc_entry = [r'\Format html html HTML H "%%" "" "document,menu=export"'])
+ rc_entry = [r'\Format html "html, htm" HTML H "%%" "" "document,menu=export"'])
#
checkViewerEditor('Noteedit', ['noteedit'],
rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector"'])
\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 lyxpreview-lytex lyxpreview-lytex "LyX Preview (LilyPond book)" "" "" "" ""
-\Format lyxpreview-platex lyxpreview-platex "LyX Preview (pLaTeX)" "" "" "" ""
\Format pdftex pdftex_t PDFTEX "" "" "" ""
\Format program "" Program "" "" "" ""
\Format pstex pstex_t PSTEX "" "" "" ""
\Format wmf wmf "Windows Metafile" "" "" "" "vector"
\Format emf emf "Enhanced Metafile" "" "" "" "vector"
-\Format wordhtml html "HTML (MS Word)" "" "" "" "document"
+\Format wordhtml "html, htm" "HTML (MS Word)" "" "" "" "document"
''')
-def checkConverterEntries(java='', perl=''):
+def checkConverterEntries():
''' Check all converters (\converter entries) '''
checkProg('the pdflatex program', ['pdflatex $$i'],
rc_entry = [ r'\converter pdflatex pdf2 "%%" "latex=pdflatex"' ])
checkLuatex()
- ''' If we're running LyX in-place then tex2lyx will be found in
- ../src/tex2lyx. Add this directory to the PATH temporarily and
- search for tex2lyx.
- Use PATH to avoid any problems with paths-with-spaces.
- '''
- path_orig = os.environ["PATH"]
- os.environ["PATH"] = os.path.join('..', 'src', 'tex2lyx') + \
- os.pathsep + path_orig
+ # Look for tex2lyx in this order (see bugs #3308 and #6986):
+ # 1) If we're running LyX in-place then tex2lyx will be found
+ # in ../src/tex2lyx with respect to the srcdir.
+ # 2) If LyX was configured with a version suffix then tex2lyx
+ # will also have this version suffix.
+ # 3) Otherwise always use tex2lyx.
+ in_place = os.path.join(srcdir, '..', 'src', 'tex2lyx', 'tex2lyx')
+ in_place = os.path.abspath(in_place)
-# First search for tex2lyx with version suffix (bug 6986)
- checkProg('a LaTeX/Noweb -> LyX converter', ['tex2lyx' + version_suffix, 'tex2lyx'],
+ path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [in_place, 'tex2lyx' + version_suffix, 'tex2lyx'],
rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" ""
-\converter literate lyx "%% -n -f $$i $$o" ""'''])
-
- os.environ["PATH"] = path_orig
+\converter literate lyx "%% -n -f $$i $$o" ""'''], not_found = 'tex2lyx')
+ if path == '':
+ logger.warning("Failed to find tex2lyx on your system.")
#
checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'],
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 "%%" ""' ])
#
- path, htmltolatex = checkProg('an HTML -> LaTeX converter', ['html2latex $$i',
- 'gnuhtml2latex $$i', 'htmltolatex -input $$i -output $$o', 'htmltolatex.jar'],
- rc_entry = [ r'\converter html latex "%%" ""',
- r'\converter html latex "%%" ""',
- r'\converter html latex "%%" ""', '', ''] )
- if htmltolatex == 'htmltolatex.jar' and java != '':
- addToRC(r'\converter html latex "%s -jar \"%s\" -input $$i -output $$o" ""'
- % (java, os.path.join(path, htmltolatex)))
+ checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i',
+ 'htmltolatex -input $$i -output $$o', 'htmltolatex.jar -input $$i -output $$o'],
+ rc_entry = [ r'\converter html latex "%%" ""' ])
#
checkProg('an MS Word -> LaTeX converter', ['wvCleanLatex $$i $$o'],
rc_entry = [ r'\converter word latex "%%" ""' ])
checkProg('a DVI to PDF converter', ['dvipdfmx -o $$o $$i', 'dvipdfm -o $$o $$i'],
rc_entry = [ r'\converter dvi pdf3 "%%" ""' ])
#
- path, dvipng = checkProg('dvipng', ['dvipng'])
- path, dv2dt = checkProg('DVI to DTL converter', ['dv2dt'])
- if dvipng == "dvipng" and dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview png "" ""')
- if dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview ppm "" ""')
- #
checkProg('a fax program', ['kdeprintfax $$i', 'ksendfax $$i', 'hylapex $$i'],
rc_entry = [ r'\converter ps fax "%%" ""'])
#
checkProg('a Dia -> EPS converter', ['dia -e $$o -t eps $$i'],
rc_entry = [ r'\converter dia eps "%%" ""'])
#
+ checkProg('an OpenOffice -> EPS converter', ['libreoffice'],
+ rc_entry = [ r'\converter odg eps "python -tt $$s/scripts/libreoffice2eps.py $$i $$o" ""'])
+ #
checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', 'inkscape --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'],
rc_entry = [ r'\converter svg pdf "%%" ""'])
#
# gnumeric/xls/ods to tex
checkProg('a spreadsheet -> latex converter', ['ssconvert'],
rc_entry = [ r'''\converter gnumeric latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
-\converter ods latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
-\converter xls 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" ""''',
''])
path, lilypond = checkProg('a LilyPond -> EPS/PDF/PNG converter', ['lilypond'])
version_number = match.groups()[0]
version = version_number.split('.')
if int(version[0]) > 2 or (len(version) > 1 and int(version[0]) == 2 and int(version[1]) >= 13):
- if dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview-lytex ppm "python -tt $$s/scripts/lyxpreview-lytex2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview-lytex ppm "" ""')
- if dvipng == "dvipng" and dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview-lytex png "python -tt $$s/scripts/lyxpreview-lytex2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview-lytex png "" ""')
# Note: The --lily-output-dir flag is required because lilypond-book
# does not process input again unless the input has changed,
# even if the output format being requested is different. So
# checkProg('Image converter', ['convert $$i $$o'])
#
# Entries that do not need checkProg
- addToRC(r'''\converter lyxpreview-platex ppm "python -tt $$s/scripts/lyxpreview-platex2bitmap.py" ""
+ 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 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 lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py --png" ""
+\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py --ppm" ""
''')
return ('no', 'false', '')
-def checkOtherEntries(java='', perl=''):
+def checkOtherEntries():
''' entries other than Format and Converter '''
checkProg('ChkTeX', ['chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38'],
rc_entry = [ r'\chktex_command "%%"' ])
alt_rc_entry = [ r'\index_alternatives "%%"' ])
checkProg('an index processor appropriate to Japanese', ['mendex -c -q', 'jmakeindex -c -q', 'makeindex -c -q'],
rc_entry = [ r'\jindex_command "%%"' ])
- path, splitindex = checkProg('the splitindex processor', ['splitindex.pl', 'splitindex',
- 'splitindex.class'], rc_entry = ['', r'\splitindex_command "%%"', '', ''])
- if splitindex == 'splitindex.pl' and perl != '':
- addToRC(r'\splitindex_command "%s -w \"%s\""' % (perl, os.path.join(path, splitindex)))
- elif splitindex == 'splitindex.class' and java != '':
- addToRC(r'\splitindex_command "%s \"%s\""' % (java, os.path.join(path, 'splitindex')))
+ checkProg('the splitindex processor', ['splitindex.pl', 'splitindex',
+ 'splitindex.class'], rc_entry = [ r'\splitindex_command "%%"' ])
checkProg('a nomenclature processor', ['makeindex'],
rc_entry = [ r'\nomencl_command "makeindex -s nomencl.ist"' ])
## FIXME: OCTAVE is not used anywhere
if __name__ == '__main__':
lyx_check_config = True
outfile = 'lyxrc.defaults'
- lyxrc_fileformat = 1
+ lyxrc_fileformat = 3
rc_entries = ''
lyx_keep_temps = False
version_suffix = ''
''' % lyxrc_fileformat)
# check latex
LATEX = checkLatex(dtl_tools)
- checkFormatEntries(dtl_tools)
+ # 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]
- checkConverterEntries(java, perl)
+ checkFormatEntries(dtl_tools)
+ checkConverterEntries()
(chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()
checkTeXAllowSpaces()
windows_style_tex_paths = checkTeXPaths()
if windows_style_tex_paths != '':
addToRC(r'\tex_expects_windows_paths %s' % windows_style_tex_paths)
- checkOtherEntries(java, perl)
+ checkOtherEntries()
checkModulesConfig()
# --without-latex-config can disable lyx_check_config
ret = checkLatexConfig(lyx_check_config and LATEX != '', bool_docbook)