* configure.py : Detect java and perl scripts in a general way.

- Fix the detection of htmltolatex (#6339).
  - Fix the detection of splitindex (#7579).
  - Fix the detection of jfig3-itext and jfig3.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_2_0_X@39716 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Julien Rioux 2011-09-20 18:29:18 +00:00
parent bd41d9ac78
commit 2249b433e7
2 changed files with 39 additions and 9 deletions

View File

@ -170,10 +170,15 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''):
sys.exit(2) sys.exit(2)
logger.info('checking for ' + description + '...') logger.info('checking for ' + description + '...')
## print '(' + ','.join(progs) + ')', ## print '(' + ','.join(progs) + ')',
global java, perl
for idx in range(len(progs)): for idx in range(len(progs)):
# ac_prog may have options, ac_word is the command name # ac_prog may have options, ac_word is the command name
ac_prog = progs[idx] ac_prog = progs[idx]
ac_word = ac_prog.split(' ')[0] 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 + '"... ' msg = '+checking for "' + ac_word + '"... '
path = os.environ["PATH"].split(os.pathsep) + path path = os.environ["PATH"].split(os.pathsep) + path
extlist = [''] extlist = ['']
@ -183,6 +188,13 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''):
for ext in extlist: for ext in extlist:
if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ): if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ):
logger.info(msg + ' yes') 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 # write rc entries for this command
if len(rc_entry) == 1: if len(rc_entry) == 1:
addToRC(rc_entry[0].replace('%%', ac_prog)) addToRC(rc_entry[0].replace('%%', ac_prog))
@ -211,10 +223,15 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [],
found_prime = False found_prime = False
real_ac_dir = '' real_ac_dir = ''
real_ac_word = not_found real_ac_word = not_found
global java, perl
for idx in range(len(progs)): for idx in range(len(progs)):
# ac_prog may have options, ac_word is the command name # ac_prog may have options, ac_word is the command name
ac_prog = progs[idx] ac_prog = progs[idx]
ac_word = ac_prog.split(' ')[0] 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 + '"... ' msg = '+checking for "' + ac_word + '"... '
path = os.environ["PATH"].split(os.pathsep) + path path = os.environ["PATH"].split(os.pathsep) + path
extlist = [''] extlist = ['']
@ -227,6 +244,13 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [],
logger.info(msg + ' yes') logger.info(msg + ' yes')
pr = re.compile(r'(\\\S+)(.*)$') pr = re.compile(r'(\\\S+)(.*)$')
m = None 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 # write rc entries for this command
if found_prime == False: if found_prime == False:
if len(rc_entry) == 1: if len(rc_entry) == 1:
@ -275,13 +299,13 @@ def addViewerAlternatives(rcs):
if len(rcs) == 1: if len(rcs) == 1:
m = r.match(rcs[0]) m = r.match(rcs[0])
if m: if m:
alt = r'\viewer_alternatives ' + m.group(1) + " %%" alt = r'\viewer_alternatives ' + m.group(1) + ' "%%"'
elif len(rcs) > 1: elif len(rcs) > 1:
m = r.match(rcs[idxx]) m = r.match(rcs[idxx])
if m: if m:
if idxx > 0: if idxx > 0:
alt += '\n' alt += '\n'
alt += r'\viewer_alternatives ' + m.group(1) + " %%" alt += r'\viewer_alternatives ' + m.group(1) + ' "%%"'
return alt return alt
@ -687,8 +711,8 @@ def checkConverterEntries():
checkProg('a Sweave -> R/S code converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxstangle.R $$i $$e $$r'], 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 "%%" ""' ]) rc_entry = [ r'\converter sweave r "%%" ""' ])
# #
checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i', \ checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i',
'htmltolatex -input $$i -output $$o', 'java -jar htmltolatex.jar -input $$i -output $$o'], 'htmltolatex -input $$i -output $$o', 'htmltolatex.jar -input $$i -output $$o'],
rc_entry = [ r'\converter html latex "%%" ""' ]) rc_entry = [ r'\converter html latex "%%" ""' ])
# #
checkProg('an MS Word -> LaTeX converter', ['wvCleanLatex $$i $$o'], checkProg('an MS Word -> LaTeX converter', ['wvCleanLatex $$i $$o'],
@ -993,11 +1017,8 @@ def checkOtherEntries():
alt_rc_entry = [ r'\index_alternatives "%%"' ]) alt_rc_entry = [ r'\index_alternatives "%%"' ])
checkProg('an index processor appropriate to Japanese', ['mendex -c -q', 'jmakeindex -c -q', 'makeindex -c -q'], checkProg('an index processor appropriate to Japanese', ['mendex -c -q', 'jmakeindex -c -q', 'makeindex -c -q'],
rc_entry = [ r'\jindex_command "%%"' ]) rc_entry = [ r'\jindex_command "%%"' ])
path, splitindex = checkProg('the splitindex processor', ['splitindex.pl', 'splitindex'], checkProg('the splitindex processor', ['splitindex.pl', 'splitindex',
rc_entry = [ r'\splitindex_command "%%"' ]) 'splitindex.class'], rc_entry = [ r'\splitindex_command "%%"' ])
if splitindex == '':
checkProg('the splitindex processor (java version)', ['splitindex.class'],
rc_entry = [ r'\splitindex_command "java splitindex"' ])
checkProg('a nomenclature processor', ['makeindex'], checkProg('a nomenclature processor', ['makeindex'],
rc_entry = [ r'\nomencl_command "makeindex -s nomencl.ist"' ]) rc_entry = [ r'\nomencl_command "makeindex -s nomencl.ist"' ])
## FIXME: OCTAVE is not used anywhere ## FIXME: OCTAVE is not used anywhere
@ -1391,6 +1412,9 @@ Format %i
''' % lyxrc_fileformat) ''' % lyxrc_fileformat)
# check latex # check latex
LATEX = checkLatex(dtl_tools) LATEX = checkLatex(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]
checkFormatEntries(dtl_tools) checkFormatEntries(dtl_tools)
checkConverterEntries() checkConverterEntries()
(chk_docbook, bool_docbook, docbook_cmd) = checkDocBook() (chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()

View File

@ -116,3 +116,9 @@ What's new
- Fix compile error with gcc 4.5.3 when using the included mythes library. - Fix compile error with gcc 4.5.3 when using the included mythes library.
- Fix the detection of the tex2lyx converter (bug 3308). - Fix the detection of the tex2lyx converter (bug 3308).
- Fix the detection of htmltolatex (bug 6339).
- Fix the detection of splitindex (bug 7579).
- Fix the detection of jfig3-itext, jfig3.