mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-13 17:20:55 +00:00
sync cleanup of lib/configure.py with 1.5 (no functional changes)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_4_X@13739 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
735707cc5e
commit
333c7161b1
663
lib/configure.py
663
lib/configure.py
@ -4,7 +4,7 @@
|
|||||||
# This file is part of LyX, the document processor.
|
# This file is part of LyX, the document processor.
|
||||||
# Licence details can be found in the file COPYING.
|
# Licence details can be found in the file COPYING.
|
||||||
|
|
||||||
# author Bo Peng
|
# \author Bo Peng
|
||||||
# Full author contact details are available in file CREDITS.
|
# Full author contact details are available in file CREDITS.
|
||||||
|
|
||||||
# This is an experimental version of the configure script, written
|
# This is an experimental version of the configure script, written
|
||||||
@ -15,12 +15,6 @@
|
|||||||
|
|
||||||
import sys, os, re, shutil, glob
|
import sys, os, re, shutil, glob
|
||||||
|
|
||||||
outfile = 'lyxrc.defaults'
|
|
||||||
rc_entries = ''
|
|
||||||
lyx_check_config = True
|
|
||||||
lyx_keep_temps = False
|
|
||||||
srcdir = ''
|
|
||||||
version_suffix = ''
|
|
||||||
|
|
||||||
def writeToFile(filename, lines, append = False):
|
def writeToFile(filename, lines, append = False):
|
||||||
" utility function: write or append lines to filename "
|
" utility function: write or append lines to filename "
|
||||||
@ -31,6 +25,7 @@ def writeToFile(filename, lines, append = False):
|
|||||||
file.write(lines)
|
file.write(lines)
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
|
||||||
def addToRC(lines):
|
def addToRC(lines):
|
||||||
''' utility function: shortcut for appending lines to outfile
|
''' utility function: shortcut for appending lines to outfile
|
||||||
add newline at the end of lines.
|
add newline at the end of lines.
|
||||||
@ -38,9 +33,10 @@ def addToRC(lines):
|
|||||||
if lines.strip() != '':
|
if lines.strip() != '':
|
||||||
writeToFile(outfile, lines + '\n', append = True)
|
writeToFile(outfile, lines + '\n', append = True)
|
||||||
|
|
||||||
|
|
||||||
def removeFiles(filenames):
|
def removeFiles(filenames):
|
||||||
'''utility function: 'rm -f'
|
'''utility function: 'rm -f'
|
||||||
ignore erroes when file does not exist, or is a directory.
|
ignore errors when file does not exist, or is a directory.
|
||||||
'''
|
'''
|
||||||
for file in filenames:
|
for file in filenames:
|
||||||
try:
|
try:
|
||||||
@ -48,6 +44,7 @@ def removeFiles(filenames):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def cmdOutput(cmd):
|
def cmdOutput(cmd):
|
||||||
'''utility function: run a command and get its output as a string
|
'''utility function: run a command and get its output as a string
|
||||||
cmd: command to run
|
cmd: command to run
|
||||||
@ -57,79 +54,23 @@ def cmdOutput(cmd):
|
|||||||
fout.close()
|
fout.close()
|
||||||
return output.strip()
|
return output.strip()
|
||||||
|
|
||||||
## Parse the command line
|
|
||||||
for op in sys.argv[1:]: # default shell/for list is $*, the options
|
def setEnviron():
|
||||||
if op in [ '-help', '--help', '-h' ]:
|
''' I do not really know why this is useful, but we might as well keep it.
|
||||||
print '''Usage: configure [options]
|
NLS nuisances.
|
||||||
Options:
|
Only set these to C if already set. These must not be set unconditionally
|
||||||
--help show this help lines
|
because not all systems understand e.g. LANG=C (notably SCO).
|
||||||
--keep-temps keep temporary files (for debug. purposes)
|
Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
|
||||||
--without-latex-config do not run LaTeX to determine configuration
|
Non-C LC_CTYPE values break the ctype check.
|
||||||
--with-version-suffix=suffix suffix of binary installed files
|
|
||||||
'''
|
'''
|
||||||
sys.exit(0)
|
|
||||||
elif op == '--without-latex-config':
|
|
||||||
lyx_check_config = False
|
|
||||||
elif op == '--keep-temps':
|
|
||||||
lyx_keep_temps = True
|
|
||||||
elif op[0:22] == '--with-version-suffix=': # never mind if op is not long enough
|
|
||||||
version_suffix = op[22:]
|
|
||||||
else:
|
|
||||||
print "Unknown option", op
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
## Checking for some echo oddities (ignored)
|
|
||||||
## The original script defines ac_n, ac_t and ac_c for
|
|
||||||
## tab, newline etc, I just use python's print output.
|
|
||||||
|
|
||||||
## I do not really know why this is useful, but we might as well keep it.
|
|
||||||
### NLS nuisances.
|
|
||||||
### Only set these to C if already set. These must not be set unconditionally
|
|
||||||
### because not all systems understand e.g. LANG=C (notably SCO).
|
|
||||||
### Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
|
|
||||||
### Non-C LC_CTYPE values break the ctype check.
|
|
||||||
##
|
|
||||||
os.environ['LANG'] = os.getenv('LANG', 'C')
|
os.environ['LANG'] = os.getenv('LANG', 'C')
|
||||||
os.environ['LC'] = os.getenv('LC_ALL', 'C')
|
os.environ['LC'] = os.getenv('LC_ALL', 'C')
|
||||||
os.environ['LC_MESSAGE'] = os.getenv('LC_MESSAGE', 'C')
|
os.environ['LC_MESSAGE'] = os.getenv('LC_MESSAGE', 'C')
|
||||||
os.environ['LC_CTYPE'] = os.getenv('LC_CTYPE', 'C')
|
os.environ['LC_CTYPE'] = os.getenv('LC_CTYPE', 'C')
|
||||||
|
|
||||||
## Guess the directory in which configure is located.
|
|
||||||
ac_prog = sys.argv[0]
|
|
||||||
srcdir = os.path.dirname(ac_prog)
|
|
||||||
if srcdir == '':
|
|
||||||
srcdir = '.'
|
|
||||||
if not os.path.isfile( os.path.join(srcdir, 'chkconfig.ltx') ):
|
|
||||||
print "configure: error: cannot find chkconfig.ltx script"
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
## Adjust PATH for Win32 (Cygwin)
|
def createDirectories():
|
||||||
#
|
''' Create the build directories if necessary '''
|
||||||
use_cygwin_path_fix = ''
|
|
||||||
if sys.platform == 'cygwin':
|
|
||||||
from tempfile import mkstemp
|
|
||||||
fd, tmpfname = mkstemp(suffix='.ltx')
|
|
||||||
os.write(fd, r'''
|
|
||||||
\documentstyle{article}
|
|
||||||
\begin{document}\end{document}
|
|
||||||
''')
|
|
||||||
os.close(fd)
|
|
||||||
inpname = cmdOutput('cygpath -w ' + tmpfname).replace('\\', '/')
|
|
||||||
# a wrapper file
|
|
||||||
wfd, wtmpfname = mkstemp(suffix='.ltx')
|
|
||||||
os.write(wfd, r'\input{' + inpname + '}' )
|
|
||||||
os.close(wfd)
|
|
||||||
if cmdOutput('latex ' + wtmpfname).find('Error') != -1:
|
|
||||||
print "configure: cygwin detected; path correction"
|
|
||||||
srcdir = cmdOutput('cygpath -w ' + srcdir).replace(r'\\', '')
|
|
||||||
print "srcdir = ", srcdir
|
|
||||||
use_cygwin_path_fix = 'true'
|
|
||||||
else:
|
|
||||||
print "configure: cygwin detected; path correction is not needed"
|
|
||||||
use_cygwin_path_fix = 'false'
|
|
||||||
removeFiles( [ tmpfname, wtmpfname ])
|
|
||||||
|
|
||||||
#### Create the build directories if necessary
|
|
||||||
for dir in ['bind', 'clipart', 'doc', 'examples', 'images', 'kbd', \
|
for dir in ['bind', 'clipart', 'doc', 'examples', 'images', 'kbd', \
|
||||||
'layouts', 'scripts', 'templates', 'ui' ]:
|
'layouts', 'scripts', 'templates', 'ui' ]:
|
||||||
if not os.path.isdir( dir ):
|
if not os.path.isdir( dir ):
|
||||||
@ -139,14 +80,35 @@ for dir in ['bind', 'clipart', 'doc', 'examples', 'images', 'kbd', \
|
|||||||
print "Failed to create directory ", dir
|
print "Failed to create directory ", dir
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
## Write the first part of outfile
|
|
||||||
writeToFile(outfile, '''# This file has been automatically generated by LyX' lib/configure
|
def checkCygwinPath(srcdir):
|
||||||
# script. It contains default settings that have been determined by
|
''' Adjust PATH for Win32 (Cygwin) '''
|
||||||
# examining your system. PLEASE DO NOT MODIFY ANYTHING HERE! If you
|
if sys.platform == 'cygwin':
|
||||||
# want to customize LyX, make a copy of the file LYXDIR/lyxrc as
|
from tempfile import mkstemp
|
||||||
# ~/.lyx/lyxrc and edit this file instead. Any setting in lyxrc will
|
fd, tmpfname = mkstemp(suffix='.ltx')
|
||||||
# override the values given here.
|
os.write(fd, r'''
|
||||||
|
\documentstyle{article}
|
||||||
|
\begin{document}\end{document}
|
||||||
''')
|
''')
|
||||||
|
os.close(fd)
|
||||||
|
inpname = cmdOutput('cygpath -m ' + tmpfname)
|
||||||
|
# a wrapper file
|
||||||
|
wfd, wtmpfname = mkstemp(suffix='.ltx')
|
||||||
|
wtmpfname = cmdOutput('cygpath -m ' + wtmpfname)
|
||||||
|
os.write(wfd, r'\input{' + inpname + '}' )
|
||||||
|
os.close(wfd)
|
||||||
|
if cmdOutput('latex ' + wtmpfname).find('Error') != -1:
|
||||||
|
print "configure: cygwin detected; path correction is not needed"
|
||||||
|
else:
|
||||||
|
print "configure: cygwin detected; path correction"
|
||||||
|
srcdir = cmdOutput('cygpath -m ' + srcdir)
|
||||||
|
print "srcdir = ", srcdir
|
||||||
|
addToRC(r'\cygwin_path_fix_needed true')
|
||||||
|
tmpbname,ext = os.path.splitext(os.path.basename(tmpfname))
|
||||||
|
wtmpbname,ext = os.path.splitext(os.path.basename(wtmpfname))
|
||||||
|
removeFiles( [ tmpfname, wtmpfname, tmpbname + '.log', \
|
||||||
|
tmpbname + '.aux', wtmpbname + '.log', wtmpbname + '.aux' ] )
|
||||||
|
|
||||||
|
|
||||||
## Searching some useful programs
|
## Searching some useful programs
|
||||||
def checkProg(description, progs, rc_entry = [], path = [] ):
|
def checkProg(description, progs, rc_entry = [], path = [] ):
|
||||||
@ -200,12 +162,13 @@ def checkProg(description, progs, rc_entry = [], path = [] ):
|
|||||||
addToRC(rc_entry[-1].replace('%%', 'none'))
|
addToRC(rc_entry[-1].replace('%%', 'none'))
|
||||||
return ['', 'none']
|
return ['', 'none']
|
||||||
|
|
||||||
|
|
||||||
|
def checkLatex():
|
||||||
|
''' Check latex, return lyx_check_config '''
|
||||||
# Find programs! Returned path is not used now
|
# Find programs! Returned path is not used now
|
||||||
path, LATEX = checkProg( 'a Latex2e program', ['pplatex $$i', 'latex $$i', 'latex2e $$i'],
|
path, LATEX = checkProg( 'a Latex2e program', ['pplatex $$i', 'latex $$i', 'latex2e $$i'],
|
||||||
rc_entry = [ r'\converter latex dvi "%%" "latex"' ] )
|
rc_entry = [ r'\converter latex dvi "%%" "latex"' ] )
|
||||||
|
|
||||||
# no latex
|
# no latex
|
||||||
lyx_check_config = False
|
|
||||||
if LATEX != 'none':
|
if LATEX != 'none':
|
||||||
# Check if latex is usable
|
# Check if latex is usable
|
||||||
writeToFile('chklatex.ltx', '''
|
writeToFile('chklatex.ltx', '''
|
||||||
@ -217,27 +180,29 @@ if LATEX != 'none':
|
|||||||
''')
|
''')
|
||||||
# run latex on chklatex.ltx and check result
|
# run latex on chklatex.ltx and check result
|
||||||
if cmdOutput(LATEX + ' chklatex.ltx').find('ThisIsLaTeX2e') != -1:
|
if cmdOutput(LATEX + ' chklatex.ltx').find('ThisIsLaTeX2e') != -1:
|
||||||
lyx_check_config = True
|
# valid latex2e
|
||||||
|
return LATEX
|
||||||
else:
|
else:
|
||||||
print "Latex not usable (not LaTeX2e) "
|
print "Latex not usable (not LaTeX2e) "
|
||||||
# remove temporary files
|
# remove temporary files
|
||||||
removeFiles(['chklatex.ltx', 'chklatex.log'])
|
removeFiles(['chklatex.ltx', 'chklatex.log'])
|
||||||
|
return ''
|
||||||
|
|
||||||
checkProg('the pdflatex program', ['pdflatex $$i'],
|
|
||||||
rc_entry = [ r'\converter latex pdf2 "%%" "latex"' ])
|
|
||||||
|
|
||||||
|
def checkFormatEntries():
|
||||||
|
''' Check all formats (\Format entries) '''
|
||||||
checkProg('a Tgif viewer and editor', ['tgif'],
|
checkProg('a Tgif viewer and editor', ['tgif'],
|
||||||
rc_entry = [ r'\Format tgif obj Tgif "" "%%" "%%"'])
|
rc_entry = [ r'\Format tgif obj Tgif "" "%%" "%%"'])
|
||||||
|
#
|
||||||
checkProg('a FIG viewer and editor', ['xfig'],
|
checkProg('a FIG viewer and editor', ['xfig'],
|
||||||
rc_entry = [ r'\Format fig fig FIG "" "%%" "%%"'] )
|
rc_entry = [ r'\Format fig fig FIG "" "%%" "%%"'] )
|
||||||
|
#
|
||||||
checkProg('a Grace viewer and editor', ['xmgrace'],
|
checkProg('a Grace viewer and editor', ['xmgrace'],
|
||||||
rc_entry = [ r'\Format agr agr Grace "" "%%" "%%"'] )
|
rc_entry = [ r'\Format agr agr Grace "" "%%" "%%"'] )
|
||||||
|
#
|
||||||
checkProg('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
|
checkProg('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
|
||||||
rc_entry = [ r'\Format fen fen FEN "" "%%" "%%"' ])
|
rc_entry = [ r'\Format fen fen FEN "" "%%" "%%"' ])
|
||||||
|
#
|
||||||
path, iv = checkProg('a raster image viewer', ['xv', 'kview', 'gimp'])
|
path, iv = checkProg('a raster image viewer', ['xv', 'kview', 'gimp'])
|
||||||
path, ie = checkProg('a raster image editor', ['gimp'])
|
path, ie = checkProg('a raster image editor', ['gimp'])
|
||||||
addToRC(r'''\Format bmp bmp BMP "" "%s" "%s"
|
addToRC(r'''\Format bmp bmp BMP "" "%s" "%s"
|
||||||
@ -251,11 +216,10 @@ addToRC(r'''\Format bmp bmp BMP "" "%s" "%s"
|
|||||||
\Format xbm xbm XBM "" "%s" "%s"
|
\Format xbm xbm XBM "" "%s" "%s"
|
||||||
\Format xpm xpm XPM "" "%s" "%s"''' % \
|
\Format xpm xpm XPM "" "%s" "%s"''' % \
|
||||||
(iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie) )
|
(iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie) )
|
||||||
|
#
|
||||||
checkProg('a text editor', ['xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \
|
checkProg('a text editor', ['xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \
|
||||||
'nedit', 'gedit', 'notepad'],
|
'nedit', 'gedit', 'notepad'],
|
||||||
rc_entry = [
|
rc_entry = [ r'''\Format asciichess asc "Plain text (chess output)" "" "" "%%"
|
||||||
r'''\Format asciichess asc "Plain text (chess output)" "" "" "%%"
|
|
||||||
\Format asciiimage asc "Plain text (image)" "" "" "%%"
|
\Format asciiimage asc "Plain text (image)" "" "" "%%"
|
||||||
\Format asciixfig asc "Plain text (Xfig output)" "" "" "%%"
|
\Format asciixfig asc "Plain text (Xfig output)" "" "" "%%"
|
||||||
\Format dateout tmp "date (output)" "" "" "%%"
|
\Format dateout tmp "date (output)" "" "" "%%"
|
||||||
@ -266,145 +230,26 @@ checkProg('a text editor', ['xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \
|
|||||||
\Format linuxdoc sgml LinuxDoc x "" "%%"
|
\Format linuxdoc sgml LinuxDoc x "" "%%"
|
||||||
\Format text txt "Plain text" a "" "%%"
|
\Format text txt "Plain text" a "" "%%"
|
||||||
\Format textparagraph txt "Plain text (paragraphs)" "" "" "%%"''' ])
|
\Format textparagraph txt "Plain text (paragraphs)" "" "" "%%"''' ])
|
||||||
|
#
|
||||||
checkProg('a LaTeX -> LyX converter', [os.path.join('..','src','tex2lyx','tex2lyx') + ' -f $$i $$o', \
|
|
||||||
'tex2lyx' + version_suffix + ' -f $$i $$o' ],
|
|
||||||
rc_entry = [ r'\converter latex lyx "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('a Noweb -> LyX converter', ['noweb2lyx' + version_suffix + ' $$i $$o'], path = ['./reLyX'],
|
|
||||||
rc_entry = [ r'\converter literate lyx "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'],
|
|
||||||
rc_entry = [ r'\converter literate latex "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('a HTML -> LaTeX converter', ['html2latex $$i'],
|
|
||||||
rc_entry = [ r'\converter html latex "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('a MSWord -> LaTeX converter', ['wvCleanLatex $$i $$o'],
|
|
||||||
rc_entry = [ r'\converter word latex "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('a LaTeX -> MS Word converter', ["htlatex $$i 'html,word' 'symbol/!' '-cvalidate'"],
|
|
||||||
rc_entry = [ r'\converter latex wordhtml "%%" ""' ])
|
|
||||||
|
|
||||||
# FIXME: image_command is not used anywhere.
|
|
||||||
checkProg('Image converter', ['convert $$i $$o'])
|
|
||||||
|
|
||||||
checkProg('an OpenOffice.org -> LaTeX converter', ['w2l -clean $$i'],
|
|
||||||
rc_entry = [ r'\converter sxw latex "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('an LaTeX -> OpenOffice.org LaTeX converter', ['oolatex $$i', 'oolatex.sh $$i'],
|
|
||||||
rc_entry = [ r'\converter latex sxw "%%" "latex"' ])
|
|
||||||
|
|
||||||
#checkProg('a Postscript interpreter', ['gs'],
|
#checkProg('a Postscript interpreter', ['gs'],
|
||||||
# rc_entry = [ r'\ps_command "%%"' ])
|
# rc_entry = [ r'\ps_command "%%"' ])
|
||||||
|
|
||||||
checkProg('a Postscript previewer', ['gsview32', 'gv', 'ghostview -swap', 'kghostview'],
|
checkProg('a Postscript previewer', ['gsview32', 'gv', 'ghostview -swap', 'kghostview'],
|
||||||
rc_entry = [
|
rc_entry = [ r'''\Format eps eps EPS "" "%%" ""
|
||||||
r'''\Format eps eps EPS "" "%%" ""
|
|
||||||
\Format ps ps Postscript t "%%" ""''' ])
|
\Format ps ps Postscript t "%%" ""''' ])
|
||||||
|
#
|
||||||
checkProg('a PDF previewer', ['acrobat', 'acrord32', 'gsview32', \
|
checkProg('a PDF previewer', ['acrobat', 'acrord32', 'gsview32', \
|
||||||
'acroread', 'gv', 'ghostview', 'xpdf', 'kpdf', 'kghostview'],
|
'acroread', 'gv', 'ghostview', 'xpdf', 'kpdf', 'kghostview'],
|
||||||
rc_entry = [ r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" ""
|
rc_entry = [ r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" ""
|
||||||
\Format pdf2 pdf "PDF (pdflatex)" F "%%" ""
|
\Format pdf2 pdf "PDF (pdflatex)" F "%%" ""
|
||||||
\Format pdf3 pdf "PDF (dvipdfm)" m "%%" ""''' ])
|
\Format pdf3 pdf "PDF (dvipdfm)" m "%%" ""''' ])
|
||||||
|
#
|
||||||
checkProg('a DVI previewer', ['xdvi', 'windvi', 'yap', 'kdvi'],
|
checkProg('a DVI previewer', ['xdvi', 'windvi', 'yap', 'kdvi'],
|
||||||
rc_entry = [ r'\Format dvi dvi DVI D "%%" ""' ])
|
rc_entry = [ r'\Format dvi dvi DVI D "%%" ""' ])
|
||||||
|
#
|
||||||
checkProg('a HTML previewer', ['mozilla file://$$p$$i', 'netscape'],
|
checkProg('a HTML previewer', ['mozilla file://$$p$$i', 'netscape'],
|
||||||
rc_entry = [ r'\Format html html HTML H "%%" ""' ])
|
rc_entry = [ r'\Format html html HTML H "%%" ""' ])
|
||||||
|
#
|
||||||
checkProg('a PS to PDF converter', ['ps2pdf13 $$i'],
|
# entried that do not need checkProg
|
||||||
rc_entry = [ r'\converter ps pdf "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('a DVI to PS converter', ['dvips -o $$o $$i'],
|
|
||||||
rc_entry = [ r'\converter dvi ps "%%" ""' ])
|
|
||||||
|
|
||||||
checkProg('a DVI to PDF converter', ['dvipdfm $$i'],
|
|
||||||
rc_entry = [ r'\converter dvi pdf3 "%%" ""' ])
|
|
||||||
|
|
||||||
### We have a script to convert previewlyx to ppm
|
|
||||||
addToRC(r'\converter lyxpreview ppm "python $$s/scripts/lyxpreview2bitmap.py" ""')
|
|
||||||
|
|
||||||
path, dvipng = checkProg('dvipng', ['dvipng'])
|
|
||||||
if dvipng == "dvipng":
|
|
||||||
addToRC(r'\converter lyxpreview png "python $$s/scripts/lyxpreview2bitmap.py" ""')
|
|
||||||
else:
|
|
||||||
addToRC(r'\converter lyxpreview png "" ""')
|
|
||||||
|
|
||||||
checkProg('a *roff formatter', ['groff', 'nroff'],
|
|
||||||
rc_entry = [
|
|
||||||
r'\ascii_roff_command "groff -t -Tlatin1 $$FName"',
|
|
||||||
r'\ascii_roff_command "tbl $$FName | nroff"',
|
|
||||||
r'\ascii_roff_command "none"' ])
|
|
||||||
|
|
||||||
checkProg('ChkTeX', ['chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38'],
|
|
||||||
rc_entry = [ r'\chktex_command "%%"' ])
|
|
||||||
|
|
||||||
checkProg('a spellchecker', ['ispell'],
|
|
||||||
rc_entry = [ r'\spell_command "%%"' ])
|
|
||||||
|
|
||||||
## FIXME: OCTAVE is not used anywhere
|
|
||||||
path, OCTAVE = checkProg('Octave', ['octave'])
|
|
||||||
|
|
||||||
## FIXME: MAPLE is not used anywhere
|
|
||||||
path, MAPLE = checkProg('Maple', ['maple'])
|
|
||||||
|
|
||||||
checkProg('a fax program', ['kdeprintfax $$i', 'ksendfax $$i'],
|
|
||||||
rc_entry = [ r'\converter ps fax "%%" ""'])
|
|
||||||
|
|
||||||
path, LINUXDOC = checkProg('SGML-tools 1.x (LinuxDoc)', ['sgml2lyx'],
|
|
||||||
rc_entry = [
|
|
||||||
r'''\converter linuxdoc lyx "sgml2lyx $$i" ""
|
|
||||||
\converter linuxdoc latex "sgml2latex $$i" ""
|
|
||||||
\converter linuxdoc dvi "sgml2latex -o dvi $$i" ""
|
|
||||||
\converter linuxdoc html "sgml2html $$i" ""''',
|
|
||||||
r'''\converter linuxdoc lyx "none" ""
|
|
||||||
\converter linuxdoc latex "none" ""
|
|
||||||
\converter linuxdoc dvi "none" ""
|
|
||||||
\converter linuxdoc html "none" ""''' ])
|
|
||||||
|
|
||||||
if LINUXDOC != 'none':
|
|
||||||
chk_linuxdoc = 'yes'
|
|
||||||
bool_linuxdoc = 'true'
|
|
||||||
linuxdoc_cmd = '\\def\\haslinuxdoc{yes}'
|
|
||||||
else:
|
|
||||||
chk_linuxdoc = 'no'
|
|
||||||
bool_linuxdoc = 'false'
|
|
||||||
linuxdoc_cmd = ''
|
|
||||||
|
|
||||||
path, DOCBOOK = checkProg('SGML-tools 2.x (DocBook) or db2x scripts', ['sgmltools', 'db2dvi'],
|
|
||||||
rc_entry = [
|
|
||||||
r'''\converter docbook dvi "sgmltools -b dvi $$i" ""
|
|
||||||
\converter docbook html "sgmltools -b html $$i" ""''',
|
|
||||||
r'''\converter docbook dvi "db2dvi $$i" ""
|
|
||||||
\converter docbook html "db2html $$i" ""''',
|
|
||||||
r'''\converter docbook dvi "none" ""
|
|
||||||
\converter docbook html "none" ""'''])
|
|
||||||
|
|
||||||
if DOCBOOK != 'none':
|
|
||||||
chk_docbook = 'yes'
|
|
||||||
bool_docbook = 'true'
|
|
||||||
docbook_cmd = '\\def\\hasdocbook{yes}'
|
|
||||||
else:
|
|
||||||
chk_docbook = 'no'
|
|
||||||
bool_docbook = 'false'
|
|
||||||
docbook_cmd = ''
|
|
||||||
|
|
||||||
checkProg('a spool command', ['lp', 'lpr'],
|
|
||||||
rc_entry = [
|
|
||||||
r'''\print_spool_printerprefix "-d "
|
|
||||||
\print_spool_command "lp"''',
|
|
||||||
r'''\print_spool_printerprefix "-P",
|
|
||||||
\print_spool_command "lpr"''',
|
|
||||||
''])
|
|
||||||
|
|
||||||
checkProg('a LaTeX -> HTML converter', ['htlatex $$i', 'tth -t -e2 -L$$b < $$i > $$o', \
|
|
||||||
'latex2html -no_subdir -split 0 -show_section_numbers $$i', 'hevea -s $$i'],
|
|
||||||
rc_entry = [ r'\converter latex html "%%" "originaldir,needaux"' ])
|
|
||||||
|
|
||||||
# Add the rest of the entries (no checkProg is required)
|
|
||||||
addToRC(r'''\Format date "" "date command" "" "" ""
|
addToRC(r'''\Format date "" "date command" "" "" ""
|
||||||
\Format fax "" Fax "" "" ""
|
\Format fax "" Fax "" "" ""
|
||||||
\Format lyx lyx LyX "" "" ""
|
\Format lyx lyx LyX "" "" ""
|
||||||
@ -416,23 +261,204 @@ addToRC(r'''\Format date "" "date command" "" "" ""
|
|||||||
\Format sxw sxw "OpenOffice.Org Writer" O "" ""
|
\Format sxw sxw "OpenOffice.Org Writer" O "" ""
|
||||||
\Format word doc "MS Word" W "" ""
|
\Format word doc "MS Word" W "" ""
|
||||||
\Format wordhtml html "MS Word (HTML)" "" "" ""
|
\Format wordhtml html "MS Word (HTML)" "" "" ""
|
||||||
|
''')
|
||||||
|
|
||||||
|
|
||||||
|
def checkConverterEntries():
|
||||||
|
''' Check all converters (\converter entries) '''
|
||||||
|
checkProg('the pdflatex program', ['pdflatex $$i'],
|
||||||
|
rc_entry = [ r'\converter latex pdf2 "%%" "latex"' ])
|
||||||
|
#
|
||||||
|
checkProg('a LaTeX -> LyX converter', [os.path.join('..','src','tex2lyx','tex2lyx') + ' -f $$i $$o', \
|
||||||
|
'tex2lyx' + version_suffix + ' -f $$i $$o' ],
|
||||||
|
rc_entry = [ r'\converter latex lyx "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('a Noweb -> LyX converter', ['noweb2lyx' + version_suffix + ' $$i $$o'], path = ['./reLyX'],
|
||||||
|
rc_entry = [ r'\converter literate lyx "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'],
|
||||||
|
rc_entry = [ r'\converter literate latex "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('a HTML -> LaTeX converter', ['html2latex $$i'],
|
||||||
|
rc_entry = [ r'\converter html latex "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('a MSWord -> LaTeX converter', ['wvCleanLatex $$i $$o'],
|
||||||
|
rc_entry = [ r'\converter word latex "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('a LaTeX -> MS Word converter', ["htlatex $$i 'html,word' 'symbol/!' '-cvalidate'"],
|
||||||
|
rc_entry = [ r'\converter latex wordhtml "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('an OpenOffice.org -> LaTeX converter', ['w2l -clean $$i'],
|
||||||
|
rc_entry = [ r'\converter sxw latex "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('an LaTeX -> OpenOffice.org LaTeX converter', ['oolatex $$i', 'oolatex.sh $$i'],
|
||||||
|
rc_entry = [ r'\converter latex sxw "%%" "latex"' ])
|
||||||
|
#
|
||||||
|
checkProg('a PS to PDF converter', ['ps2pdf13 $$i'],
|
||||||
|
rc_entry = [ r'\converter ps pdf "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('a DVI to PS converter', ['dvips -o $$o $$i'],
|
||||||
|
rc_entry = [ r'\converter dvi ps "%%" ""' ])
|
||||||
|
#
|
||||||
|
checkProg('a DVI to PDF converter', ['dvipdfm $$i'],
|
||||||
|
rc_entry = [ r'\converter dvi pdf3 "%%" ""' ])
|
||||||
|
#
|
||||||
|
path, dvipng = checkProg('dvipng', ['dvipng'])
|
||||||
|
if dvipng == "dvipng":
|
||||||
|
addToRC(r'\converter lyxpreview png "python $$s/scripts/lyxpreview2bitmap.py" ""')
|
||||||
|
else:
|
||||||
|
addToRC(r'\converter lyxpreview png "" ""')
|
||||||
|
#
|
||||||
|
checkProg('a fax program', ['kdeprintfax $$i', 'ksendfax $$i'],
|
||||||
|
rc_entry = [ r'\converter ps fax "%%" ""'])
|
||||||
|
#
|
||||||
|
checkProg('a FIG -> EPS/PPM converter', ['fig2dev'],
|
||||||
|
rc_entry = [
|
||||||
|
r'''\converter fig eps "fig2dev -L eps $$i $$o" ""
|
||||||
|
\converter fig ppm "fig2dev -L ppm $$i $$o" ""
|
||||||
|
\converter fig png "fig2dev -L png $$i $$o" ""''',
|
||||||
|
''])
|
||||||
|
#
|
||||||
|
checkProg('a TIFF -> PS converter', ['tiff2ps $$i > $$o'],
|
||||||
|
rc_entry = [ r'\converter tiff eps "%%" ""', ''])
|
||||||
|
#
|
||||||
|
checkProg('a TGIF -> EPS/PPM converter', ['tgif'],
|
||||||
|
rc_entry = [
|
||||||
|
r'''\converter tgif eps "tgif -stdout -print -color -eps $$i > $$o" ""
|
||||||
|
\converter tgif pdf "tgif -stdout -print -color -pdf $$i > $$o" ""''',
|
||||||
|
''])
|
||||||
|
#
|
||||||
|
checkProg('a EPS -> PDF converter', ['epstopdf'],
|
||||||
|
rc_entry = [ r'\converter eps pdf "epstopdf --outfile=$$o $$i" ""', ''])
|
||||||
|
#
|
||||||
|
checkProg('a Grace -> Image converter', ['gracebat'],
|
||||||
|
rc_entry = [
|
||||||
|
r'''\converter agr eps "gracebat -hardcopy -printfile $$o -hdevice EPS $$i 2>/dev/null" ""
|
||||||
|
\converter agr png "gracebat -hardcopy -printfile $$o -hdevice PNG $$i 2>/dev/null" ""
|
||||||
|
\converter agr jpg "gracebat -hardcopy -printfile $$o -hdevice JPEG $$i 2>/dev/null" ""
|
||||||
|
\converter agr ppm "gracebat -hardcopy -printfile $$o -hdevice PNM $$i 2>/dev/null" ""''',
|
||||||
|
''])
|
||||||
|
#
|
||||||
|
checkProg('a LaTeX -> HTML converter', ['htlatex $$i', 'tth -t -e2 -L$$b < $$i > $$o', \
|
||||||
|
'latex2html -no_subdir -split 0 -show_section_numbers $$i', 'hevea -s $$i'],
|
||||||
|
rc_entry = [ r'\converter latex html "%%" "originaldir,needaux"' ])
|
||||||
|
#
|
||||||
|
# FIXME: no rc_entry? comment it out
|
||||||
|
# checkProg('Image converter', ['convert $$i $$o'])
|
||||||
|
#
|
||||||
|
# Entried that do not need checkProg
|
||||||
|
addToRC(r'''\converter lyxpreview ppm "python $$s/scripts/lyxpreview2bitmap.py" ""
|
||||||
\converter date dateout "date +%d-%m-%Y > $$o" ""
|
\converter date dateout "date +%d-%m-%Y > $$o" ""
|
||||||
\converter docbook docbook-xml "cp $$i $$o" "xml"
|
\converter docbook docbook-xml "cp $$i $$o" "xml"
|
||||||
\converter fen asciichess "python $$s/scripts/fen2ascii.py $$i $$o" ""
|
\converter fen asciichess "python $$s/scripts/fen2ascii.py $$i $$o" ""
|
||||||
\converter fig pdftex "sh $$s/scripts/fig2pdftex.sh $$i $$o" ""
|
\converter fig pdftex "sh $$s/scripts/fig2pdftex.sh $$i $$o" ""
|
||||||
\converter fig pstex "sh $$s/scripts/fig2pstex.sh $$i $$o" ""
|
\converter fig pstex "sh $$s/scripts/fig2pstex.sh $$i $$o" ""
|
||||||
\converter lyx lyx13x "python $$s/lyx2lyx/lyx2lyx -t 221 $$i > $$o" ""
|
\converter lyx lyx13x "python $$s/lyx2lyx/lyx2lyx -t 221 $$i > $$o" ""
|
||||||
\copier fig "sh $$s/scripts/fig_copy.sh $$i $$o"
|
''')
|
||||||
|
|
||||||
|
|
||||||
|
def checkLinuxDoc():
|
||||||
|
''' Check linuxdoc '''
|
||||||
|
#
|
||||||
|
path, LINUXDOC = checkProg('SGML-tools 1.x (LinuxDoc)', ['sgml2lyx'],
|
||||||
|
rc_entry = [
|
||||||
|
r'''\converter linuxdoc lyx "sgml2lyx $$i" ""
|
||||||
|
\converter linuxdoc latex "sgml2latex $$i" ""
|
||||||
|
\converter linuxdoc dvi "sgml2latex -o dvi $$i" ""
|
||||||
|
\converter linuxdoc html "sgml2html $$i" ""''',
|
||||||
|
r'''\converter linuxdoc lyx "none" ""
|
||||||
|
\converter linuxdoc latex "none" ""
|
||||||
|
\converter linuxdoc dvi "none" ""
|
||||||
|
\converter linuxdoc html "none" ""''' ])
|
||||||
|
if LINUXDOC != 'none':
|
||||||
|
return ('yes', 'true', '\\def\\haslinuxdoc{yes}')
|
||||||
|
else:
|
||||||
|
return ('no', 'false', '')
|
||||||
|
|
||||||
|
|
||||||
|
def checkDocBook():
|
||||||
|
''' Check docbook '''
|
||||||
|
path, DOCBOOK = checkProg('SGML-tools 2.x (DocBook) or db2x scripts', ['sgmltools', 'db2dvi'],
|
||||||
|
rc_entry = [
|
||||||
|
r'''\converter docbook dvi "sgmltools -b dvi $$i" ""
|
||||||
|
\converter docbook html "sgmltools -b html $$i" ""''',
|
||||||
|
r'''\converter docbook dvi "db2dvi $$i" ""
|
||||||
|
\converter docbook html "db2html $$i" ""''',
|
||||||
|
r'''\converter docbook dvi "none" ""
|
||||||
|
\converter docbook html "none" ""'''])
|
||||||
|
#
|
||||||
|
if DOCBOOK != 'none':
|
||||||
|
return ('yes', 'true', '\\def\\hasdocbook{yes}')
|
||||||
|
else:
|
||||||
|
return ('no', 'false', '')
|
||||||
|
|
||||||
|
|
||||||
|
def checkOtherEntries():
|
||||||
|
''' entries other than Format and Converter '''
|
||||||
|
checkProg('a *roff formatter', ['groff', 'nroff'],
|
||||||
|
rc_entry = [
|
||||||
|
r'\ascii_roff_command "groff -t -Tlatin1 $$FName"',
|
||||||
|
r'\ascii_roff_command "tbl $$FName | nroff"',
|
||||||
|
r'\ascii_roff_command "none"' ])
|
||||||
|
checkProg('ChkTeX', ['chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38'],
|
||||||
|
rc_entry = [ r'\chktex_command "%%"' ])
|
||||||
|
checkProg('a spellchecker', ['ispell'],
|
||||||
|
rc_entry = [ r'\spell_command "%%"' ])
|
||||||
|
## FIXME: OCTAVE is not used anywhere
|
||||||
|
# path, OCTAVE = checkProg('Octave', ['octave'])
|
||||||
|
## FIXME: MAPLE is not used anywhere
|
||||||
|
# path, MAPLE = checkProg('Maple', ['maple'])
|
||||||
|
checkProg('a spool command', ['lp', 'lpr'],
|
||||||
|
rc_entry = [
|
||||||
|
r'''\print_spool_printerprefix "-d "
|
||||||
|
\print_spool_command "lp"''',
|
||||||
|
r'''\print_spool_printerprefix "-P",
|
||||||
|
\print_spool_command "lpr"''',
|
||||||
|
''])
|
||||||
|
# Add the rest of the entries (no checkProg is required)
|
||||||
|
addToRC(r'''\copier fig "sh $$s/scripts/fig_copy.sh $$i $$o"
|
||||||
\copier pstex "python $$s/scripts/tex_copy.py $$i $$o $$l"
|
\copier pstex "python $$s/scripts/tex_copy.py $$i $$o $$l"
|
||||||
\copier pdftex "python $$s/scripts/tex_copy.py $$i $$o $$l"
|
\copier pdftex "python $$s/scripts/tex_copy.py $$i $$o $$l"
|
||||||
''')
|
''')
|
||||||
|
|
||||||
## Explore the LaTeX configuration
|
|
||||||
print 'checking LaTeX configuration... ',
|
|
||||||
## First, remove the files that we want to re-create
|
|
||||||
removeFiles(['textclass.lst', 'packages.lst', 'chkconfig.sed'])
|
|
||||||
|
|
||||||
if not lyx_check_config:
|
def processLayoutFile(file, bool_docbook, bool_linuxdoc):
|
||||||
|
''' process layout file and get a line of result
|
||||||
|
|
||||||
|
Declear line are like this: (article.layout, scrbook.layout, svjog.layout)
|
||||||
|
|
||||||
|
\DeclareLaTeXClass{article}
|
||||||
|
\DeclareLaTeXClass[scrbook]{book (koma-script)}
|
||||||
|
\DeclareLaTeXClass[svjour,svjog.clo]{article (Springer - svjour/jog)}
|
||||||
|
|
||||||
|
we expect output:
|
||||||
|
|
||||||
|
"article" "article" "article" "false"
|
||||||
|
"scrbook" "scrbook" "book (koma-script)" "false"
|
||||||
|
"svjog" "svjour" "article (Springer - svjour/jog)" "false"
|
||||||
|
'''
|
||||||
|
classname = file.split(os.sep)[-1].split('.')[0]
|
||||||
|
# return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for \DeclearLaTeXClass[a,b,c]{article}
|
||||||
|
p = re.compile(r'\Declare(LaTeX|DocBook|LinuxDoc)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}')
|
||||||
|
for line in open(file).readlines():
|
||||||
|
res = p.search(line)
|
||||||
|
if res != None:
|
||||||
|
(classtype, optAll, opt, opt1, desc) = res.groups()
|
||||||
|
avai = {'LaTeX':'false', 'DocBook':bool_docbook, 'LinuxDoc':bool_linuxdoc}[classtype]
|
||||||
|
if opt == None:
|
||||||
|
opt = classname
|
||||||
|
return '"%s" "%s" "%s" "%s"\n' % (classname, opt, desc, avai)
|
||||||
|
print "Layout file without \DeclearXXClass line. "
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
|
def checkLatexConfig(check_config, bool_docbook, bool_linuxdoc):
|
||||||
|
''' Explore the LaTeX configuration '''
|
||||||
|
print 'checking LaTeX configuration... ',
|
||||||
|
# First, remove the files that we want to re-create
|
||||||
|
removeFiles(['textclass.lst', 'packages.lst', 'chkconfig.sed'])
|
||||||
|
#
|
||||||
|
if not check_config:
|
||||||
print ' default values'
|
print ' default values'
|
||||||
print '+checking list of textclasses... '
|
print '+checking list of textclasses... '
|
||||||
tx = open('textclass.lst', 'w')
|
tx = open('textclass.lst', 'w')
|
||||||
@ -446,20 +472,11 @@ if not lyx_check_config:
|
|||||||
# build the list of available layout files and convert it to commands
|
# build the list of available layout files and convert it to commands
|
||||||
# for chkconfig.ltx
|
# for chkconfig.ltx
|
||||||
foundClasses = []
|
foundClasses = []
|
||||||
# sed filters
|
|
||||||
# FIXME: this is a direct translation of the sed commands
|
|
||||||
# There may be more efficient methods
|
|
||||||
p1 = re.compile(r'\Declare(LaTeX|DocBook|LinuxDoc)Class')
|
|
||||||
p2 = re.compile(r'^.*\DeclareLaTeXClass *(.*)')
|
|
||||||
p3 = re.compile(r'^.*\DeclareDocBookClass *(.*)')
|
|
||||||
p4 = re.compile(r'^.*\DeclareLinuxDocClass *(.*)')
|
|
||||||
p5 = re.compile(r'\[([^,]*),[^]]*\]')
|
|
||||||
p6 = re.compile('^{')
|
|
||||||
p7 = re.compile(r'\[([^]]*)\] *{([^}]*)}')
|
|
||||||
for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
|
for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
|
||||||
glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
|
glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
|
||||||
# valid file?
|
# valid file?
|
||||||
if not os.path.isfile(file): continue
|
if not os.path.isfile(file):
|
||||||
|
continue
|
||||||
# get stuff between /xxxx.layout .
|
# get stuff between /xxxx.layout .
|
||||||
classname = file.split(os.sep)[-1].split('.')[0]
|
classname = file.split(os.sep)[-1].split('.')[0]
|
||||||
# tr ' -' '__'`
|
# tr ' -' '__'`
|
||||||
@ -468,34 +485,7 @@ if not lyx_check_config:
|
|||||||
# make sure the same class is not considered twice
|
# make sure the same class is not considered twice
|
||||||
if foundClasses.count(cleanclass) == 0: # not found before
|
if foundClasses.count(cleanclass) == 0: # not found before
|
||||||
foundClasses.append(cleanclass)
|
foundClasses.append(cleanclass)
|
||||||
# The sed commands below are a bit scary. Here is what they do:
|
tx.write(processLayoutFile(file, bool_docbook, bool_linuxdoc))
|
||||||
# 1-3: remove the \DeclareFOO macro and add the correct boolean
|
|
||||||
# at the end of the line telling whether the class is
|
|
||||||
# available
|
|
||||||
# 4: if the macro had an optional argument with several
|
|
||||||
# parameters, only keep the first one
|
|
||||||
# 5: if the macro did not have an optional argument, provide one
|
|
||||||
# (equal to the class name)
|
|
||||||
# 6: remove brackets and replace with correctly quoted entries
|
|
||||||
# grep '\\Declare\(LaTeX\|DocBook\|LinuxDoc\)Class' "$file" \
|
|
||||||
# | sed -e 's/^.*\DeclareLaTeXClass *\(.*\)/\1 "false"/' \
|
|
||||||
# -e 's/^.*\DeclareDocBookClass *\(.*\)/\1 "'$bool_docbook'"/' \
|
|
||||||
# -e 's/^.*\DeclareLinuxDocClass *\(.*\)/\1 "'$bool_linuxdoc'"/' \
|
|
||||||
# -e 's/\[\([^,]*\),[^]]*\]/[\1]/' \
|
|
||||||
# -e 's/^{/['$class']{/' \
|
|
||||||
# -e 's/\[\([^]]*\)\] *{\([^}]*\)}/"'$class'" "\1" "\2"/' \
|
|
||||||
# >>textclass.lst
|
|
||||||
for line in open(file).readlines():
|
|
||||||
if p1.search(line) == None:
|
|
||||||
continue
|
|
||||||
line = p2.sub(r'\1 "false"', line)
|
|
||||||
line = p3.sub(r'\1 "' + bool_docbook + '"', line)
|
|
||||||
line = p4.sub(r'\1 "' + bool_linuxdoc + '"', line)
|
|
||||||
line = p5.sub(r'[\1]', line)
|
|
||||||
line = p6.sub("[" + classname + "]{", line)
|
|
||||||
line = p7.sub( "'" + classname + "'" + r'"\1" "\2"', line)
|
|
||||||
tx.write(line)
|
|
||||||
break # one file, one line.
|
|
||||||
tx.close()
|
tx.close()
|
||||||
print '\tdone'
|
print '\tdone'
|
||||||
else:
|
else:
|
||||||
@ -508,14 +498,15 @@ else:
|
|||||||
rmcopy = True
|
rmcopy = True
|
||||||
writeToFile('wrap_chkconfig.ltx', '%s\n%s\n\\input{chkconfig.ltx}\n' \
|
writeToFile('wrap_chkconfig.ltx', '%s\n%s\n\\input{chkconfig.ltx}\n' \
|
||||||
% (linuxdoc_cmd, docbook_cmd) )
|
% (linuxdoc_cmd, docbook_cmd) )
|
||||||
## Construct the list of classes to test for.
|
# Construct the list of classes to test for.
|
||||||
# build the list of available layout files and convert it to commands
|
# build the list of available layout files and convert it to commands
|
||||||
# for chkconfig.ltx
|
# for chkconfig.ltx
|
||||||
p1 = re.compile(r'\Declare(LaTeX|DocBook|LinuxDoc)Class')
|
p1 = re.compile(r'\Declare(LaTeX|DocBook|LinuxDoc)Class')
|
||||||
testclasses = list()
|
testclasses = list()
|
||||||
for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
|
for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
|
||||||
glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
|
glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
|
||||||
if not os.path.isfile(file): continue
|
if not os.path.isfile(file):
|
||||||
|
continue
|
||||||
classname = file.split(os.sep)[-1].split('.')[0]
|
classname = file.split(os.sep)[-1].split('.')[0]
|
||||||
for line in open(file).readlines():
|
for line in open(file).readlines():
|
||||||
if p1.search(line) == None:
|
if p1.search(line) == None:
|
||||||
@ -536,23 +527,30 @@ else:
|
|||||||
if re.match('^\+', line):
|
if re.match('^\+', line):
|
||||||
print line
|
print line
|
||||||
#
|
#
|
||||||
# evalulate lines in chkconfig.vars?
|
# currently, values in chhkconfig are only used to set
|
||||||
# is it really necessary?
|
# \font_encoding
|
||||||
|
values = {}
|
||||||
for line in open('chkconfig.vars').readlines():
|
for line in open('chkconfig.vars').readlines():
|
||||||
exec( re.sub('-', '_', line) )
|
key, val = re.sub('-', '_', line).split('=')
|
||||||
|
values[key] = val.strip("'\n")
|
||||||
|
# chk_fontenc may not exist
|
||||||
|
try:
|
||||||
|
addToRC(r'\font_encoding "%s"' % values["chk_fontenc"])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
if rmcopy: # remove the copied file
|
if rmcopy: # remove the copied file
|
||||||
removeFiles( [ 'chkconfig.ltx' ] )
|
removeFiles( [ 'chkconfig.ltx' ] )
|
||||||
|
|
||||||
### Do we have all the files we need? Useful if latex did not run
|
|
||||||
|
|
||||||
### if chkconfig.sed does not exist (because LaTeX did not run),
|
def createLaTeXConfig():
|
||||||
### then provide a standard version.
|
''' create LaTeXConfig.lyx '''
|
||||||
|
# if chkconfig.sed does not exist (because LaTeX did not run),
|
||||||
|
# then provide a standard version.
|
||||||
if not os.path.isfile('chkconfig.sed'):
|
if not os.path.isfile('chkconfig.sed'):
|
||||||
writeToFile('chkconfig.sed', '##s/@.*@/???/g\n')
|
writeToFile('chkconfig.sed', 's!@.*@!???!g\n')
|
||||||
|
|
||||||
print "creating packages.lst"
|
print "creating packages.lst"
|
||||||
### if packages.lst does not exist (because LaTeX did not run),
|
# if packages.lst does not exist (because LaTeX did not run),
|
||||||
### then provide a standard version.
|
# then provide a standard version.
|
||||||
if not os.path.isfile('packages.lst'):
|
if not os.path.isfile('packages.lst'):
|
||||||
writeToFile('packages.lst', '''
|
writeToFile('packages.lst', '''
|
||||||
### This file should contain the list of LaTeX packages that have been
|
### This file should contain the list of LaTeX packages that have been
|
||||||
@ -560,7 +558,6 @@ if not os.path.isfile('packages.lst'):
|
|||||||
### your LaTeX2e program, the tests have not been run. Run ./configure
|
### your LaTeX2e program, the tests have not been run. Run ./configure
|
||||||
### if you need to update it after a configuration change.
|
### if you need to update it after a configuration change.
|
||||||
''')
|
''')
|
||||||
|
|
||||||
print 'creating doc/LaTeXConfig.lyx'
|
print 'creating doc/LaTeXConfig.lyx'
|
||||||
#
|
#
|
||||||
# This is originally done by sed, using a
|
# This is originally done by sed, using a
|
||||||
@ -579,18 +576,27 @@ lyxin = open( os.path.join(srcdir, 'doc', 'LaTeXConfig.lyx.in')).readlines()
|
|||||||
p = re.compile(r's!(.*)!(.*)!g')
|
p = re.compile(r's!(.*)!(.*)!g')
|
||||||
# process each sed replace.
|
# process each sed replace.
|
||||||
for sed in open('chkconfig.sed').readlines():
|
for sed in open('chkconfig.sed').readlines():
|
||||||
|
if sed.strip() == '':
|
||||||
|
continue
|
||||||
try:
|
try:
|
||||||
fr, to = p.match(sed).groups()
|
fr, to = p.match(sed).groups()
|
||||||
|
# if latex did not run, change all @name@ to '???'
|
||||||
|
if fr == '@.*@':
|
||||||
|
for line in range(len(lyxin)):
|
||||||
|
lyxin[line] = re.sub('@.*@', to, lyxin[line])
|
||||||
|
else:
|
||||||
for line in range(len(lyxin)):
|
for line in range(len(lyxin)):
|
||||||
lyxin[line] = lyxin[line].replace(fr, to)
|
lyxin[line] = lyxin[line].replace(fr, to)
|
||||||
except: # wrong sed entry?
|
except: # wrong sed entry?
|
||||||
print "Wrong sed entry in chkconfig.sed:", sed
|
print "Wrong sed entry in chkconfig.sed: '" + sed + "'"
|
||||||
sys.exit(4)
|
sys.exit(4)
|
||||||
|
#
|
||||||
writeToFile( os.path.join('doc', 'LaTeXConfig.lyx'),
|
writeToFile( os.path.join('doc', 'LaTeXConfig.lyx'),
|
||||||
''.join(lyxin))
|
''.join(lyxin))
|
||||||
|
|
||||||
### Let's check whether spaces are allowed in TeX file names
|
|
||||||
|
def checkTeXAllowSpaces():
|
||||||
|
''' Let's check whether spaces are allowed in TeX file names '''
|
||||||
tex_allows_spaces = 'false'
|
tex_allows_spaces = 'false'
|
||||||
if lyx_check_config:
|
if lyx_check_config:
|
||||||
print "Checking whether TeX allows spaces in file names... ",
|
print "Checking whether TeX allows spaces in file names... ",
|
||||||
@ -604,45 +610,11 @@ if lyx_check_config:
|
|||||||
else:
|
else:
|
||||||
print 'no'
|
print 'no'
|
||||||
tex_allows_spaces = 'false'
|
tex_allows_spaces = 'false'
|
||||||
|
addToRC(r'\tex_allows_spaces ' + tex_allows_spaces)
|
||||||
removeFiles( [ 'a b.tex', 'a b.log', 'texput.log' ])
|
removeFiles( [ 'a b.tex', 'a b.log', 'texput.log' ])
|
||||||
|
|
||||||
checkProg('a FIG -> EPS/PPM converter', ['fig2dev'],
|
|
||||||
rc_entry = [
|
|
||||||
r'''\converter fig eps "fig2dev -L eps $$i $$o" ""
|
|
||||||
\converter fig ppm "fig2dev -L ppm $$i $$o" ""
|
|
||||||
\converter fig png "fig2dev -L png $$i $$o" ""''',
|
|
||||||
''])
|
|
||||||
|
|
||||||
checkProg('a TIFF -> PS converter', ['tiff2ps $$i > $$o'],
|
|
||||||
rc_entry = [ r'\converter tiff eps "%%" ""', ''])
|
|
||||||
|
|
||||||
checkProg('a TGIF -> EPS/PPM converter', ['tgif'],
|
|
||||||
rc_entry = [
|
|
||||||
r'''\converter tgif eps "tgif -stdout -print -color -eps $$i > $$o" ""
|
|
||||||
\converter tgif pdf "tgif -stdout -print -color -pdf $$i > $$o" ""''',
|
|
||||||
''])
|
|
||||||
|
|
||||||
checkProg('a EPS -> PDF converter', ['epstopdf'],
|
|
||||||
rc_entry = [ r'\converter eps pdf "epstopdf --outfile=$$o $$i" ""', ''])
|
|
||||||
|
|
||||||
path, GRACE = checkProg('a Grace -> Image converter', ['gracebat'],
|
|
||||||
rc_entry = [
|
|
||||||
r'''\converter agr eps "gracebat -hardcopy -printfile $$o -hdevice EPS $$i 2>/dev/null" ""
|
|
||||||
\converter agr png "gracebat -hardcopy -printfile $$o -hdevice PNG $$i 2>/dev/null" ""
|
|
||||||
\converter agr jpg "gracebat -hardcopy -printfile $$o -hdevice JPEG $$i 2>/dev/null" ""
|
|
||||||
\converter agr ppm "gracebat -hardcopy -printfile $$o -hdevice PNM $$i 2>/dev/null" ""''',
|
|
||||||
''])
|
|
||||||
|
|
||||||
# chk_fontenc may not exist
|
|
||||||
try:
|
|
||||||
addToRC(r'\font_encoding "%s"' % chk_fontenc)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
addToRC(r'\tex_allows_spaces ' + tex_allows_spaces)
|
|
||||||
|
|
||||||
if use_cygwin_path_fix == 'true':
|
|
||||||
addToRC(r'\cygwin_path_fix_needed ' + use_cygwin_path_fix)
|
|
||||||
|
|
||||||
|
def removeExtraFiles():
|
||||||
# Remove superfluous files if we are not writing in the main lib
|
# Remove superfluous files if we are not writing in the main lib
|
||||||
# directory
|
# directory
|
||||||
for file in [outfile, 'textclass.lst', 'packages.lst', \
|
for file in [outfile, 'textclass.lst', 'packages.lst', \
|
||||||
@ -660,10 +632,67 @@ for file in [outfile, 'textclass.lst', 'packages.lst', \
|
|||||||
except: # use local version if anthing goes wrong.
|
except: # use local version if anthing goes wrong.
|
||||||
os.rename( file + '.new', file )
|
os.rename( file + '.new', file )
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Final clean-up
|
# Final clean-up
|
||||||
if not lyx_keep_temps:
|
if not lyx_keep_temps:
|
||||||
removeFiles(['chkconfig.sed', 'chkconfig.vars', \
|
removeFiles(['chkconfig.sed', 'chkconfig.vars', \
|
||||||
'wrap_chkconfig.ltx', 'wrap_chkconfig.log', \
|
'wrap_chkconfig.ltx', 'wrap_chkconfig.log', \
|
||||||
'chklayouts.tex', 'missfont.log'])
|
'chklayouts.tex', 'missfont.log'])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
lyx_check_config = True
|
||||||
|
outfile = 'lyxrc.defaults'
|
||||||
|
rc_entries = ''
|
||||||
|
lyx_keep_temps = False
|
||||||
|
version_suffix = ''
|
||||||
|
## 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]
|
||||||
|
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
|
||||||
|
'''
|
||||||
|
sys.exit(0)
|
||||||
|
elif op == '--without-latex-config':
|
||||||
|
lyx_check_config = False
|
||||||
|
elif op == '--keep-temps':
|
||||||
|
lyx_keep_temps = True
|
||||||
|
elif op[0:22] == '--with-version-suffix=': # never mind if op is not long enough
|
||||||
|
version_suffix = op[22:]
|
||||||
|
else:
|
||||||
|
print "Unknown option", op
|
||||||
|
sys.exit(1)
|
||||||
|
#
|
||||||
|
# check if we run from the right directory
|
||||||
|
srcdir = os.path.dirname(sys.argv[0])
|
||||||
|
if srcdir == '':
|
||||||
|
srcdir = '.'
|
||||||
|
if not os.path.isfile( os.path.join(srcdir, 'chkconfig.ltx') ):
|
||||||
|
print "configure: error: cannot find chkconfig.ltx script"
|
||||||
|
sys.exit(1)
|
||||||
|
setEnviron()
|
||||||
|
createDirectories()
|
||||||
|
checkCygwinPath(srcdir)
|
||||||
|
## Write the first part of outfile
|
||||||
|
writeToFile(outfile, '''# This file has been automatically generated by LyX' lib/configure.py
|
||||||
|
# script. It contains default settings that have been determined by
|
||||||
|
# examining your system. PLEASE DO NOT MODIFY ANYTHING HERE! If you
|
||||||
|
# want to customize LyX, make a copy of the file LYXDIR/lyxrc as
|
||||||
|
# ~/.lyx/lyxrc and edit this file instead. Any setting in lyxrc will
|
||||||
|
# override the values given here.
|
||||||
|
''')
|
||||||
|
# check latex
|
||||||
|
LATEX = checkLatex()
|
||||||
|
checkFormatEntries()
|
||||||
|
checkConverterEntries()
|
||||||
|
(chk_linuxdoc, bool_linuxdoc, linuxdoc_cmd) = checkLinuxDoc()
|
||||||
|
(chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()
|
||||||
|
checkTeXAllowSpaces()
|
||||||
|
checkOtherEntries()
|
||||||
|
# --without-latex-config can disable lyx_check_config
|
||||||
|
checkLatexConfig( lyx_check_config and LATEX != '', bool_docbook, bool_linuxdoc)
|
||||||
|
createLaTeXConfig()
|
||||||
|
removeExtraFiles()
|
||||||
|
Loading…
Reference in New Issue
Block a user