Bo Peng wrote:
> Dear all,
>
> Attached is a patch for 1.4.x that
>
> 1. remove configure.m4
> 2. copy the latest 1.5.x configure.py to 1.4.x, as far as I know,
> current configure.py and ocnfigure.m4 are in sync.
No, they are not. The changes of r13520 and r13532 (bug 2107) should not go
in 1.4 without the rest of that fix. I asked you whether the changes r13537
and r13539 should go in 1.4 (they should), so that I can sync the change
r13708.
> 3. change some other files accordingly.
>
> I am not sure I have done all the necessary changes. 1.4.x now seems
> to be running configure.py instead of configure.m4, and lyx works.
>
> Please test, and apply. (I do not have a writable 1.4.x tree here.)
That is the problem. I hoped that you had, and did the syncing yourself. I
will not apply your patch (it does too many things at once), but proceed
step by step. The first step will be to apply the attached patch, which
according to you is only code reorganization.
This patch goes in now. Log:
sync cleanup of lib/configure.py with 1.5 (no functional changes)
Georg
Index: lib/configure.py
===================================================================
--- lib/configure.py (Revision 13738)
+++ lib/configure.py (Arbeitskopie)
@@ -4,7 +4,7 @@
# This file is part of LyX, the document processor.
# Licence details can be found in the file COPYING.
-# author Bo Peng
+# \author Bo Peng
# Full author contact details are available in file CREDITS.
# This is an experimental version of the configure script, written
@@ -15,12 +15,6 @@
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):
" utility function: write or append lines to filename "
@@ -31,6 +25,7 @@ def writeToFile(filename, lines, append
file.write(lines)
file.close()
+
def addToRC(lines):
''' utility function: shortcut for appending lines to outfile
add newline at the end of lines.
@@ -38,9 +33,10 @@ def addToRC(lines):
if lines.strip() != '':
writeToFile(outfile, lines + '\n', append = True)
+
def removeFiles(filenames):
'''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:
try:
@@ -48,6 +44,7 @@ def removeFiles(filenames):
except:
pass
+
def cmdOutput(cmd):
'''utility function: run a command and get its output as a string
cmd: command to run
@@ -57,96 +54,61 @@ def cmdOutput(cmd):
fout.close()
return output.strip()
-## 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)
-## 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['LC'] = os.getenv('LC_ALL', 'C')
-os.environ['LC_MESSAGE'] = os.getenv('LC_MESSAGE', '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)
-#
-use_cygwin_path_fix = ''
-if sys.platform == 'cygwin':
- from tempfile import mkstemp
- fd, tmpfname = mkstemp(suffix='.ltx')
- os.write(fd, r'''
+def setEnviron():
+ ''' 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['LC'] = os.getenv('LC_ALL', 'C')
+ os.environ['LC_MESSAGE'] = os.getenv('LC_MESSAGE', 'C')
+ os.environ['LC_CTYPE'] = os.getenv('LC_CTYPE', 'C')
+
+
+def createDirectories():
+ ''' Create the build directories if necessary '''
+ for dir in ['bind', 'clipart', 'doc', 'examples', 'images', 'kbd', \
+ 'layouts', 'scripts', 'templates', 'ui' ]:
+ if not os.path.isdir( dir ):
+ try:
+ os.mkdir( dir)
+ except:
+ print "Failed to create directory ", dir
+ sys.exit(1)
+
+
+def checkCygwinPath(srcdir):
+ ''' Adjust PATH for Win32 (Cygwin) '''
+ 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', \
- 'layouts', 'scripts', 'templates', 'ui' ]:
- if not os.path.isdir( dir ):
- try:
- os.mkdir( dir)
- except:
- print "Failed to create directory ", dir
- sys.exit(1)
+ ''')
+ 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' ] )
-## Write the first part of outfile
-writeToFile(outfile, '''# This file has been automatically generated by LyX' lib/configure
-# 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.
-''')
## Searching some useful programs
def checkProg(description, progs, rc_entry = [], path = [] ):
@@ -200,47 +162,50 @@ def checkProg(description, progs, rc_ent
addToRC(rc_entry[-1].replace('%%', 'none'))
return ['', 'none']
-# Find programs! Returned path is not used now
-path, LATEX = checkProg( 'a Latex2e program', ['pplatex $$i', 'latex $$i', 'latex2e $$i'],
- rc_entry = [ r'\converter latex dvi "%%" "latex"' ] )
-
-# no latex
-lyx_check_config = False
-if LATEX != 'none':
- # Check if latex is usable
- writeToFile('chklatex.ltx', '''
+
+def checkLatex():
+ ''' Check latex, return lyx_check_config '''
+ # Find programs! Returned path is not used now
+ path, LATEX = checkProg( 'a Latex2e program', ['pplatex $$i', 'latex $$i', 'latex2e $$i'],
+ rc_entry = [ r'\converter latex dvi "%%" "latex"' ] )
+ # no latex
+ if LATEX != 'none':
+ # Check if latex is usable
+ writeToFile('chklatex.ltx', '''
\\nonstopmode\\makeatletter
\\ifx\\undefined\\documentclass\\else
\\message{ThisIsLaTeX2e}
\\fi
\\@@end
''')
- # run latex on chklatex.ltx and check result
- if cmdOutput(LATEX + ' chklatex.ltx').find('ThisIsLaTeX2e') != -1:
- lyx_check_config = True
- else:
- print "Latex not usable (not LaTeX2e) "
- # remove temporary files
- removeFiles(['chklatex.ltx', 'chklatex.log'])
-
-checkProg('the pdflatex program', ['pdflatex $$i'],
- rc_entry = [ r'\converter latex pdf2 "%%" "latex"' ])
-
-checkProg('a Tgif viewer and editor', ['tgif'],
- rc_entry = [ r'\Format tgif obj Tgif "" "%%" "%%"'])
-
-checkProg('a FIG viewer and editor', ['xfig'],
- rc_entry = [ r'\Format fig fig FIG "" "%%" "%%"'] )
-
-checkProg('a Grace viewer and editor', ['xmgrace'],
- rc_entry = [ r'\Format agr agr Grace "" "%%" "%%"'] )
+ # run latex on chklatex.ltx and check result
+ if cmdOutput(LATEX + ' chklatex.ltx').find('ThisIsLaTeX2e') != -1:
+ # valid latex2e
+ return LATEX
+ else:
+ print "Latex not usable (not LaTeX2e) "
+ # remove temporary files
+ removeFiles(['chklatex.ltx', 'chklatex.log'])
+ return ''
-checkProg('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
- rc_entry = [ r'\Format fen fen FEN "" "%%" "%%"' ])
-path, iv = checkProg('a raster image viewer', ['xv', 'kview', 'gimp'])
-path, ie = checkProg('a raster image editor', ['gimp'])
-addToRC(r'''\Format bmp bmp BMP "" "%s" "%s"
+def checkFormatEntries():
+ ''' Check all formats (\Format entries) '''
+ checkProg('a Tgif viewer and editor', ['tgif'],
+ rc_entry = [ r'\Format tgif obj Tgif "" "%%" "%%"'])
+ #
+ checkProg('a FIG viewer and editor', ['xfig'],
+ rc_entry = [ r'\Format fig fig FIG "" "%%" "%%"'] )
+ #
+ checkProg('a Grace viewer and editor', ['xmgrace'],
+ rc_entry = [ r'\Format agr agr Grace "" "%%" "%%"'] )
+ #
+ checkProg('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
+ rc_entry = [ r'\Format fen fen FEN "" "%%" "%%"' ])
+ #
+ path, iv = checkProg('a raster image viewer', ['xv', 'kview', 'gimp'])
+ path, ie = checkProg('a raster image editor', ['gimp'])
+ addToRC(r'''\Format bmp bmp BMP "" "%s" "%s"
\Format gif gif GIF "" "%s" "%s"
\Format jpg jpg JPEG "" "%s" "%s"
\Format pbm pbm PBM "" "%s" "%s"
@@ -250,12 +215,11 @@ addToRC(r'''\Format bmp bmp B
\Format tiff tif TIFF "" "%s" "%s"
\Format xbm xbm XBM "" "%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) )
-
-checkProg('a text editor', ['xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \
- 'nedit', 'gedit', 'notepad'],
- rc_entry = [
- r'''\Format asciichess asc "Plain text (chess output)" "" "" "%%"
+ (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', \
+ 'nedit', 'gedit', 'notepad'],
+ 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)" "" "" "%%"
@@ -266,96 +230,138 @@ checkProg('a text editor', ['xemacs', 'g
\Format linuxdoc sgml LinuxDoc x "" "%%"
\Format text txt "Plain text" a "" "%%"
\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'],
-# rc_entry = [ r'\ps_command "%%"' ])
-
-checkProg('a Postscript previewer', ['gsview32', 'gv', 'ghostview -swap', 'kghostview'],
- rc_entry = [
- r'''\Format eps eps EPS "" "%%" ""
+ #
+ #checkProg('a Postscript interpreter', ['gs'],
+ # rc_entry = [ r'\ps_command "%%"' ])
+ checkProg('a Postscript previewer', ['gsview32', 'gv', 'ghostview -swap', 'kghostview'],
+ rc_entry = [ r'''\Format eps eps EPS "" "%%" ""
\Format ps ps Postscript t "%%" ""''' ])
-
-checkProg('a PDF previewer', ['acrobat', 'acrord32', 'gsview32', \
- 'acroread', 'gv', 'ghostview', 'xpdf', 'kpdf', 'kghostview'],
- rc_entry = [ r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" ""
+ #
+ checkProg('a PDF previewer', ['acrobat', 'acrord32', 'gsview32', \
+ 'acroread', 'gv', 'ghostview', 'xpdf', 'kpdf', 'kghostview'],
+ rc_entry = [ r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" ""
\Format pdf2 pdf "PDF (pdflatex)" F "%%" ""
\Format pdf3 pdf "PDF (dvipdfm)" m "%%" ""''' ])
+ #
+ checkProg('a DVI previewer', ['xdvi', 'windvi', 'yap', 'kdvi'],
+ rc_entry = [ r'\Format dvi dvi DVI D "%%" ""' ])
+ #
+ checkProg('a HTML previewer', ['mozilla file://$$p$$i', 'netscape'],
+ rc_entry = [ r'\Format html html HTML H "%%" ""' ])
+ #
+ # entried that do not need checkProg
+ addToRC(r'''\Format date "" "date command" "" "" ""
+\Format fax "" Fax "" "" ""
+\Format lyx lyx LyX "" "" ""
+\Format lyx13x lyx13 "LyX 1.3.x" "" "" ""
+\Format lyxpreview lyxpreview "LyX Preview" "" "" ""
+\Format pdftex pdftex_t PDFTEX "" "" ""
+\Format program "" Program "" "" ""
+\Format pstex pstex_t PSTEX "" "" ""
+\Format sxw sxw "OpenOffice.Org Writer" O "" ""
+\Format word doc "MS Word" W "" ""
+\Format wordhtml html "MS Word (HTML)" "" "" ""
+''')
-checkProg('a DVI previewer', ['xdvi', 'windvi', 'yap', 'kdvi'],
- rc_entry = [ r'\Format dvi dvi DVI D "%%" ""' ])
-
-checkProg('a HTML previewer', ['mozilla file://$$p$$i', 'netscape'],
- rc_entry = [ r'\Format html html HTML H "%%" ""' ])
-
-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 "%%" ""' ])
-
-### 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'])
+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 docbook docbook-xml "cp $$i $$o" "xml"
+\converter fen asciichess "python $$s/scripts/fen2ascii.py $$i $$o" ""
+\converter fig pdftex "sh $$s/scripts/fig2pdftex.sh $$i $$o" ""
+\converter fig pstex "sh $$s/scripts/fig2pstex.sh $$i $$o" ""
+\converter lyx lyx13x "python $$s/lyx2lyx/lyx2lyx -t 221 $$i > $$o" ""
+''')
-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 = [
+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" ""
@@ -364,306 +370,329 @@ path, LINUXDOC = checkProg('SGML-tools 1
\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', '')
-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" ""
+
+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" ""
+ r'''\converter docbook dvi "db2dvi $$i" ""
\converter docbook html "db2html $$i" ""''',
- r'''\converter docbook dvi "none" ""
+ r'''\converter docbook dvi "none" ""
\converter docbook html "none" ""'''])
+ #
+ if DOCBOOK != 'none':
+ return ('yes', 'true', '\\def\\hasdocbook{yes}')
+ else:
+ return ('no', 'false', '')
+
-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 "
+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",
+ 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" "" "" ""
-\Format fax "" Fax "" "" ""
-\Format lyx lyx LyX "" "" ""
-\Format lyx13x lyx13 "LyX 1.3.x" "" "" ""
-\Format lyxpreview lyxpreview "LyX Preview" "" "" ""
-\Format pdftex pdftex_t PDFTEX "" "" ""
-\Format program "" Program "" "" ""
-\Format pstex pstex_t PSTEX "" "" ""
-\Format sxw sxw "OpenOffice.Org Writer" O "" ""
-\Format word doc "MS Word" W "" ""
-\Format wordhtml html "MS Word (HTML)" "" "" ""
-\converter date dateout "date +%d-%m-%Y > $$o" ""
-\converter docbook docbook-xml "cp $$i $$o" "xml"
-\converter fen asciichess "python $$s/scripts/fen2ascii.py $$i $$o" ""
-\converter fig pdftex "sh $$s/scripts/fig2pdftex.sh $$i $$o" ""
-\converter fig pstex "sh $$s/scripts/fig2pstex.sh $$i $$o" ""
-\converter lyx lyx13x "python $$s/lyx2lyx/lyx2lyx -t 221 $$i > $$o" ""
-\copier fig "sh $$s/scripts/fig_copy.sh $$i $$o"
+ ''])
+ # 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 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:
- print ' default values'
- print '+checking list of textclasses... '
- tx = open('textclass.lst', 'w')
- tx.write('''
+
+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 '+checking list of textclasses... '
+ tx = open('textclass.lst', 'w')
+ tx.write('''
# This file declares layouts and their associated definition files
# (include dir. relative to the place where this file is).
# It contains only default values, since chkconfig.ltx could not be run
# for some reason. Run ./configure if you need to update it after a
# configuration change.
''')
- # build the list of available layout files and convert it to commands
- # for chkconfig.ltx
- 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') ) + \
- glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
- # valid file?
- if not os.path.isfile(file): continue
- # get stuff between /xxxx.layout .
- classname = file.split(os.sep)[-1].split('.')[0]
- # tr ' -' '__'`
- cleanclass = classname.replace(' ', '_')
- cleanclass = cleanclass.replace('-', '_')
- # make sure the same class is not considered twice
- if foundClasses.count(cleanclass) == 0: # not found before
- foundClasses.append(cleanclass)
- # The sed commands below are a bit scary. Here is what they do:
- # 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
+ # build the list of available layout files and convert it to commands
+ # for chkconfig.ltx
+ foundClasses = []
+ for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
+ glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
+ # valid file?
+ if not os.path.isfile(file):
+ continue
+ # get stuff between /xxxx.layout .
+ classname = file.split(os.sep)[-1].split('.')[0]
+ # tr ' -' '__'`
+ cleanclass = classname.replace(' ', '_')
+ cleanclass = cleanclass.replace('-', '_')
+ # make sure the same class is not considered twice
+ if foundClasses.count(cleanclass) == 0: # not found before
+ foundClasses.append(cleanclass)
+ tx.write(processLayoutFile(file, bool_docbook, bool_linuxdoc))
+ tx.close()
+ print '\tdone'
+ else:
+ print '\tauto'
+ removeFiles(['wrap_chkconfig.ltx', 'chkconfig.vars', \
+ 'chkconfig.classes', 'chklayouts.tex'])
+ rmcopy = False
+ if not os.path.isfile( 'chkconfig.ltx' ):
+ shutil.copy( os.path.join(srcdir, 'chkconfig.ltx'), 'chkconfig.ltx' )
+ rmcopy = True
+ writeToFile('wrap_chkconfig.ltx', '%s\n%s\n\\input{chkconfig.ltx}\n' \
+ % (linuxdoc_cmd, docbook_cmd) )
+ # Construct the list of classes to test for.
+ # build the list of available layout files and convert it to commands
+ # for chkconfig.ltx
+ p1 = re.compile(r'\Declare(LaTeX|DocBook|LinuxDoc)Class')
+ testclasses = list()
+ for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
+ glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
+ if not os.path.isfile(file):
+ continue
+ classname = file.split(os.sep)[-1].split('.')[0]
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()
- print '\tdone'
-else:
- print '\tauto'
- removeFiles(['wrap_chkconfig.ltx', 'chkconfig.vars', \
- 'chkconfig.classes', 'chklayouts.tex'])
- rmcopy = False
- if not os.path.isfile( 'chkconfig.ltx' ):
- shutil.copy( os.path.join(srcdir, 'chkconfig.ltx'), 'chkconfig.ltx' )
- rmcopy = True
- writeToFile('wrap_chkconfig.ltx', '%s\n%s\n\\input{chkconfig.ltx}\n' \
- % (linuxdoc_cmd, docbook_cmd) )
- ## Construct the list of classes to test for.
- # build the list of available layout files and convert it to commands
- # for chkconfig.ltx
- p1 = re.compile(r'\Declare(LaTeX|DocBook|LinuxDoc)Class')
- testclasses = list()
- for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
- glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) :
- if not os.path.isfile(file): continue
- classname = file.split(os.sep)[-1].split('.')[0]
- for line in open(file).readlines():
- if p1.search(line) == None:
- continue
- if line[0] != '#':
- print "Wrong input layout file with line '" + line
- sys.exit(3)
- testclasses.append("\\TestDocClass{%s}{%s}" % (classname, line[1:].strip()))
- break
- testclasses.sort()
- cl = open('chklayouts.tex', 'w')
- for line in testclasses:
- cl.write(line + '\n')
- cl.close()
- #
- # we have chklayouts.tex, then process it
- for line in cmdOutput(LATEX + ' wrap_chkconfig.ltx').splitlines():
- if re.match('^\+', line):
- print line
- #
- # evalulate lines in chkconfig.vars?
- # is it really necessary?
- for line in open('chkconfig.vars').readlines():
- exec( re.sub('-', '_', line) )
- if rmcopy: # remove the copied file
- 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),
-### then provide a standard version.
-if not os.path.isfile('chkconfig.sed'):
- writeToFile('chkconfig.sed', '##s/@.*@/???/g\n')
-
-print "creating packages.lst"
-### if packages.lst does not exist (because LaTeX did not run),
-### then provide a standard version.
-if not os.path.isfile('packages.lst'):
- writeToFile('packages.lst', '''
+ if line[0] != '#':
+ print "Wrong input layout file with line '" + line
+ sys.exit(3)
+ testclasses.append("\\TestDocClass{%s}{%s}" % (classname, line[1:].strip()))
+ break
+ testclasses.sort()
+ cl = open('chklayouts.tex', 'w')
+ for line in testclasses:
+ cl.write(line + '\n')
+ cl.close()
+ #
+ # we have chklayouts.tex, then process it
+ for line in cmdOutput(LATEX + ' wrap_chkconfig.ltx').splitlines():
+ if re.match('^\+', line):
+ print line
+ #
+ # currently, values in chhkconfig are only used to set
+ # \font_encoding
+ values = {}
+ for line in open('chkconfig.vars').readlines():
+ 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
+ removeFiles( [ 'chkconfig.ltx' ] )
+
+
+def createLaTeXConfig():
+ ''' 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'):
+ writeToFile('chkconfig.sed', '[EMAIL PROTECTED]@!???!g\n')
+ print "creating packages.lst"
+ # if packages.lst does not exist (because LaTeX did not run),
+ # then provide a standard version.
+ if not os.path.isfile('packages.lst'):
+ writeToFile('packages.lst', '''
### This file should contain the list of LaTeX packages that have been
### recognized by LyX. Unfortunately, since configure could not find
### your LaTeX2e program, the tests have not been run. Run ./configure
### if you need to update it after a configuration change.
''')
-
-print 'creating doc/LaTeXConfig.lyx'
-#
-# This is originally done by sed, using a
-# tex-generated file chkconfig.sed
-##sed -f chkconfig.sed ${srcdir}/doc/LaTeXConfig.lyx.in
-## >doc/LaTeXConfig.lyx
-# Now, we have to do it by hand (python).
-#
-# add to chekconfig.sed
-writeToFile('chkconfig.sed', '''[EMAIL PROTECTED]@!%s!g
+ print 'creating doc/LaTeXConfig.lyx'
+ #
+ # This is originally done by sed, using a
+ # tex-generated file chkconfig.sed
+ ##sed -f chkconfig.sed ${srcdir}/doc/LaTeXConfig.lyx.in
+ ## >doc/LaTeXConfig.lyx
+ # Now, we have to do it by hand (python).
+ #
+ # add to chekconfig.sed
+ writeToFile('chkconfig.sed', '''[EMAIL PROTECTED]@!%s!g
[EMAIL PROTECTED]@!%s!g
-''' % (chk_linuxdoc, chk_docbook) , append=True)
-# process this sed file!!!!
-lyxin = open( os.path.join(srcdir, 'doc', 'LaTeXConfig.lyx.in')).readlines()
-# get the rules
-p = re.compile(r's!(.*)!(.*)!g')
-# process each sed replace.
-for sed in open('chkconfig.sed').readlines():
- try:
- fr, to = p.match(sed).groups()
- for line in range(len(lyxin)):
- lyxin[line] = lyxin[line].replace(fr, to)
- except: # wrong sed entry?
- print "Wrong sed entry in chkconfig.sed:", sed
- sys.exit(4)
-
-writeToFile( os.path.join('doc', 'LaTeXConfig.lyx'),
- ''.join(lyxin))
-
-### Let's check whether spaces are allowed in TeX file names
-tex_allows_spaces = 'false'
-if lyx_check_config:
- print "Checking whether TeX allows spaces in file names... ",
- writeToFile('a b.tex', r'\message{working^^J}' )
- # FIXME: the bsh version uses < /dev/null which is not portable.
- # Can anyone confirm if this option (-interaction) is available
- # at other flavor of latex as well? (MikTex/win, Web2C/linux are fine.)
- if ''.join(cmdOutput(LATEX + ' -interaction=nonstopmode "a b"')).find('working') != -1:
- print 'yes'
- tex_allows_spaces = 'true'
- else:
- print 'no'
- tex_allows_spaces = 'false'
- 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" ""', ''])
+ ''' % (chk_linuxdoc, chk_docbook) , append=True)
+ # process this sed file!!!!
+ lyxin = open( os.path.join(srcdir, 'doc', 'LaTeXConfig.lyx.in')).readlines()
+ # get the rules
+ p = re.compile(r's!(.*)!(.*)!g')
+ # process each sed replace.
+ for sed in open('chkconfig.sed').readlines():
+ if sed.strip() == '':
+ continue
+ try:
+ 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)):
+ lyxin[line] = lyxin[line].replace(fr, to)
+ except: # wrong sed entry?
+ print "Wrong sed entry in chkconfig.sed: '" + sed + "'"
+ sys.exit(4)
+ #
+ writeToFile( os.path.join('doc', 'LaTeXConfig.lyx'),
+ ''.join(lyxin))
+
+
+def checkTeXAllowSpaces():
+ ''' Let's check whether spaces are allowed in TeX file names '''
+ tex_allows_spaces = 'false'
+ if lyx_check_config:
+ print "Checking whether TeX allows spaces in file names... ",
+ writeToFile('a b.tex', r'\message{working^^J}' )
+ # FIXME: the bsh version uses < /dev/null which is not portable.
+ # Can anyone confirm if this option (-interaction) is available
+ # at other flavor of latex as well? (MikTex/win, Web2C/linux are fine.)
+ if ''.join(cmdOutput(LATEX + ' -interaction=nonstopmode "a b"')).find('working') != -1:
+ print 'yes'
+ tex_allows_spaces = 'true'
+ else:
+ print 'no'
+ tex_allows_spaces = 'false'
+ addToRC(r'\tex_allows_spaces ' + tex_allows_spaces)
+ removeFiles( [ 'a b.tex', 'a b.log', 'texput.log' ])
-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)
-
-# Remove superfluous files if we are not writing in the main lib
-# directory
-for file in [outfile, 'textclass.lst', 'packages.lst', \
- 'doc/LaTeXConfig.lyx']:
- try:
- # we rename the file first, so that we avoid comparing a file with itself
- os.rename(file, file + '.new')
- syscfg = open( os.path.join(srcdir, file) ).read()
- mycfg = open( file + '.new').read()
- if mycfg == syscfg:
- print "removing ", file, " which is identical to the system global version"
- removeFiles( [file + '.new'] )
- else:
+def removeExtraFiles():
+ # Remove superfluous files if we are not writing in the main lib
+ # directory
+ for file in [outfile, 'textclass.lst', 'packages.lst', \
+ 'doc/LaTeXConfig.lyx']:
+ try:
+ # we rename the file first, so that we avoid comparing a file with itself
+ os.rename(file, file + '.new')
+ syscfg = open( os.path.join(srcdir, file) ).read()
+ mycfg = open( file + '.new').read()
+ if mycfg == syscfg:
+ print "removing ", file, " which is identical to the system global version"
+ removeFiles( [file + '.new'] )
+ else:
+ os.rename( file + '.new', file )
+ except: # use local version if anthing goes wrong.
os.rename( file + '.new', file )
- except: # use local version if anthing goes wrong.
- os.rename( file + '.new', file )
- pass
-
-# Final clean-up
-if not lyx_keep_temps:
- removeFiles(['chkconfig.sed', 'chkconfig.vars', \
- 'wrap_chkconfig.ltx', 'wrap_chkconfig.log', \
- 'chklayouts.tex', 'missfont.log'])
-
+ pass
+ # Final clean-up
+ if not lyx_keep_temps:
+ removeFiles(['chkconfig.sed', 'chkconfig.vars', \
+ 'wrap_chkconfig.ltx', 'wrap_chkconfig.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()