X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=0096a9151e0d70f3c578dc9c07044583ed0a1b08;hb=74059f6b5600c92166e66e9b6b78eda2b7b93331;hp=80069079299be928928212d588fc5917171b04b2;hpb=d20956594bf7a56c57d85750a4b8c8c79a656dc9;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index 8006907929..0096a9151e 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -8,7 +8,7 @@ # \author Bo Peng # Full author contact details are available in file CREDITS. -import glob, logging, os, re, shutil, subprocess, sys +import glob, logging, os, re, shutil, subprocess, sys, stat # set up logging logging.basicConfig(level = logging.DEBUG, @@ -104,6 +104,73 @@ def setEnviron(): os.environ['LC_CTYPE'] = os.getenv('LC_CTYPE', 'C') +def copy_tree(src, dst, preserve_symlinks=False, level=0): + ''' Copy an entire directory tree 'src' to a new location 'dst'. + + Code inspired from distutils.copy_tree. + Copying ignores non-regular files and the cache directory. + Pipes may be present as leftovers from LyX for lyx-server. + + If 'preserve_symlinks' is true, symlinks will be + copied as symlinks (on platforms that support them!); otherwise + (the default), the destination of the symlink will be copied. + ''' + + if not os.path.isdir(src): + raise FileError, \ + "cannot copy tree '%s': not a directory" % src + try: + names = os.listdir(src) + except os.error, (errno, errstr): + raise FileError, \ + "error listing files in '%s': %s" % (src, errstr) + + if not os.path.isdir(dst): + os.makedirs(dst) + + outputs = [] + + for name in names: + src_name = os.path.join(src, name) + dst_name = os.path.join(dst, name) + if preserve_symlinks and os.path.islink(src_name): + link_dest = os.readlink(src_name) + os.symlink(link_dest, dst_name) + outputs.append(dst_name) + elif level == 0 and name == 'cache': + logger.info("Skip cache %s", src_name) + elif os.path.isdir(src_name): + outputs.extend( + copy_tree(src_name, dst_name, preserve_symlinks, level=(level + 1))) + elif stat.S_ISREG(os.stat(src_name).st_mode) or os.path.islink(src_name): + shutil.copy2(src_name, dst_name) + outputs.append(dst_name) + else: + logger.info("Ignore non-regular file %s", src_name) + + return outputs + + +def checkUpgrade(): + ''' Check for upgrade from previous version ''' + cwd = os.getcwd() + basename = os.path.basename( cwd ) + lyxrc = os.path.join(cwd, outfile) + if not os.path.isfile( lyxrc ) and basename.endswith( version_suffix ) : + logger.info('Checking for upgrade from previous version.') + parent = os.path.dirname(cwd) + appname = basename[:(-len(version_suffix))] + for version in ['-2.1', '-2.0', '-1.6' ]: + logger.debug('Checking for upgrade from previous version ' + version) + previous = os.path.join(parent, appname + version) + logger.debug('previous = ' + previous) + if os.path.isdir( previous ): + logger.info('Found directory "%s".', previous) + copy_tree( previous, cwd, True ) + logger.info('Content copied to directory "%s".', cwd) + return + + def createDirectories(): ''' Create the build directories if necessary ''' for dir in ['bind', 'clipart', 'doc', 'examples', 'images', 'kbd', \ @@ -183,6 +250,11 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''): sys.exit(2) logger.info('checking for ' + description + '...') ## print '(' + ','.join(progs) + ')', + additional_path = path + path = os.environ["PATH"].split(os.pathsep) + additional_path + extlist = [''] + if "PATHEXT" in os.environ: + extlist = extlist + os.environ["PATHEXT"].split(os.pathsep) global java, perl for idx in range(len(progs)): # ac_prog may have options, ac_word is the command name @@ -193,10 +265,6 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''): if ac_word.endswith('.pl') and perl == '': continue msg = '+checking for "' + ac_word + '"... ' - path = os.environ["PATH"].split(os.pathsep) + path - extlist = [''] - if "PATHEXT" in os.environ: - extlist = extlist + os.environ["PATHEXT"].split(os.pathsep) for ac_dir in path: if hasattr(os, "access") and not os.access(ac_dir, os.F_OK): continue @@ -235,6 +303,11 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [], sys.exit(2) logger.info('checking for ' + description + '...') ## print '(' + ','.join(progs) + ')', + additional_path = path + path = os.environ["PATH"].split(os.pathsep) + additional_path + extlist = [''] + if "PATHEXT" in os.environ: + extlist = extlist + os.environ["PATHEXT"].split(os.pathsep) found_prime = False real_ac_dir = '' real_ac_word = not_found @@ -248,10 +321,6 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [], if ac_word.endswith('.pl') and perl == '': continue msg = '+checking for "' + ac_word + '"... ' - path = os.environ["PATH"].split(os.pathsep) + path - extlist = [''] - if "PATHEXT" in os.environ: - extlist = extlist + os.environ["PATHEXT"].split(os.pathsep) found_alt = False for ac_dir in path: if hasattr(os, "access") and not os.access(ac_dir, os.F_OK): @@ -505,8 +574,8 @@ def checkFormatEntries(dtl_tools): checkViewerEditor('a Dia viewer and editor', ['dia'], rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector,zipped=native", "application/x-dia-diagram"']) # - checkViewerEditor('an OpenOffice drawing viewer and editor', ['libreoffice', 'lodraw', 'ooffice', 'oodraw', 'soffice'], - rc_entry = [r'\Format odg "odg, sxd" "OpenOffice drawing" "" "%%" "%%" "vector,zipped=native" "application/vnd.oasis.opendocument.graphics"']) + checkViewerEditor('an OpenDocument drawing viewer and editor', ['libreoffice', 'lodraw', 'ooffice', 'oodraw', 'soffice'], + rc_entry = [r'\Format odg "odg, sxd" "OpenDocument drawing" "" "%%" "%%" "vector,zipped=native" "application/vnd.oasis.opendocument.graphics"']) # checkViewerEditor('a Grace viewer and editor', ['xmgrace'], rc_entry = [r'\Format agr agr Grace "" "%%" "%%" "vector" ""']) @@ -515,7 +584,7 @@ def checkFormatEntries(dtl_tools): rc_entry = [r'\Format fen fen FEN "" "%%" "%%" "" ""']) # checkViewerEditor('a SVG viewer and editor', ['inkscape'], - rc_entry = [r'\Format svg svg SVG "" "%%" "%%" "vector" "image/svg+xml"']) + rc_entry = [r'\Format svg "svg, svgz" SVG "" "%%" "%%" "vector,zipped=native" "image/svg+xml"']) # imageformats = r'''\Format bmp bmp BMP "" "%s" "%s" "" "image/x-bmp" \Format gif gif GIF "" "%s" "%s" "" "image/gif" @@ -553,6 +622,7 @@ def checkFormatEntries(dtl_tools): \Format luatex tex "LaTeX (LuaTeX)" "" "" "%%" "document,menu=export" "" \Format pdflatex tex "LaTeX (pdflatex)" "" "" "%%" "document,menu=export" "" \Format xetex tex "LaTeX (XeTeX)" "" "" "%%" "document,menu=export" "" +\Format latexclipboard tex "LaTeX (clipboard)" "" "" "%%" "" "" \Format text txt "Plain text" a "" "%%" "document,menu=export" "text/plain" \Format text2 txt "Plain text (pstotext)" "" "" "%%" "document" "" \Format text3 txt "Plain text (ps2ascii)" "" "" "%%" "document" "" @@ -563,7 +633,7 @@ def checkFormatEntries(dtl_tools): checkViewer('gnumeric spreadsheet software', ['gnumeric'], rc_entry = [r'''\Format gnumeric gnumeric "Gnumeric spreadsheet" "" "" "%%" "document" "application/x-gnumeric" \Format excel xls "Excel spreadsheet" "" "" "%%" "document" "application/vnd.ms-excel" -\Format oocalc ods "OpenOffice spreadsheet" "" "" "%%" "document" "application/vnd.oasis.opendocument.spreadsheet"''']) +\Format oocalc ods "OpenDocument spreadsheet" "" "" "%%" "document" "application/vnd.oasis.opendocument.spreadsheet"''']) # checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'], rc_entry = [r'\Format xhtml xhtml "LyXHTML" y "%%" "" "document,menu=export" "application/xhtml+xml"']) @@ -578,22 +648,23 @@ def checkFormatEntries(dtl_tools): # #checkProg('a Postscript interpreter', ['gs'], # rc_entry = [ r'\ps_command "%%"' ]) - checkViewer('a Postscript previewer', ['kghostview', 'okular', 'evince', 'gv', 'ghostview -swap'], + checkViewer('a Postscript previewer', ['kghostview', 'okular', 'qpdfview --unique', 'evince', 'gv', 'ghostview -swap', 'gsview64', 'gsview32'], rc_entry = [r'''\Format eps eps EPS "" "%%" "" "vector" "image/x-eps" \Format eps2 eps "EPS (uncropped)" "" "%%" "" "vector" "" -\Format eps3 eps "EPS (cropped)" "" "%%" "" "document,menu=export" "" +\Format eps3 eps "EPS (cropped)" "" "%%" "" "document" "" \Format ps ps Postscript t "%%" "" "document,vector,menu=export" "application/postscript"''']) # for xdg-open issues look here: http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg151818.html # the MIME type is set for pdf6, because that one needs to be autodetectable by libmime - checkViewer('a PDF previewer', ['pdfview', 'kpdf', 'okular', 'evince', 'kghostview', 'xpdf', 'acrobat', 'acroread', 'mupdf', \ - 'gv', 'ghostview'], + checkViewer('a PDF previewer', ['pdfview', 'kpdf', 'okular', 'qpdfview --unique', 'evince', 'kghostview', 'xpdf', 'SumatraPDF', 'acrobat', 'acroread', 'mupdf', \ + 'gv', 'ghostview', 'AcroRd32', 'gsview64', 'gsview32'], rc_entry = [r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" "" "document,vector,menu=export" "" \Format pdf2 pdf "PDF (pdflatex)" F "%%" "" "document,vector,menu=export" "" \Format pdf3 pdf "PDF (dvipdfm)" m "%%" "" "document,vector,menu=export" "" \Format pdf4 pdf "PDF (XeTeX)" X "%%" "" "document,vector,menu=export" "" \Format pdf5 pdf "PDF (LuaTeX)" u "%%" "" "document,vector,menu=export" "" \Format pdf6 pdf "PDF (graphics)" "" "%%" "" "vector" "application/pdf" -\Format pdf7 pdf "PDF (cropped)" "" "%%" "" "document,menu=export" ""''']) +\Format pdf7 pdf "PDF (cropped)" "" "%%" "" "document,vector" "" +\Format pdf8 pdf "PDF (lower resolution)" "" "%%" "" "document,vector" ""''']) # checkViewer('a DVI previewer', ['xdvi', 'kdvi', 'okular', 'yap', 'dviout -Set=!m'], rc_entry = [r'''\Format dvi dvi DVI D "%%" "" "document,vector,menu=export" "application/x-dvi" @@ -608,13 +679,16 @@ def checkFormatEntries(dtl_tools): checkViewerEditor('Noteedit', ['noteedit'], rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector" ""']) # - checkViewerEditor('an OpenDocument/OpenOffice viewer', ['libreoffice', 'lwriter', 'lowriter', 'oowriter', 'swriter', 'abiword'], - rc_entry = [r'''\Format odt odt OpenDocument "" "%%" "%%" "document,vector,menu=export" "application/vnd.oasis.opendocument.text" + checkViewerEditor('an OpenDocument viewer', ['libreoffice', 'lwriter', 'lowriter', 'oowriter', 'swriter', 'abiword'], + rc_entry = [r'''\Format odt odt "OpenDocument (tex4ht)" "" "%%" "%%" "document,vector,menu=export" "application/vnd.oasis.opendocument.text" +\Format odt2 odt "OpenDocument (eLyXer)" "" "%%" "%%" "document,vector,menu=export" "application/vnd.oasis.opendocument.text" +\Format odt3 odt "OpenDocument (Pandoc)" "" "%%" "%%" "document,vector,menu=export" "application/vnd.oasis.opendocument.text" \Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,vector" "application/vnd.sun.xml.writer"''']) # checkViewerEditor('a Rich Text and Word viewer', ['libreoffice', 'lwriter', 'lowriter', 'oowriter', 'swriter', 'abiword'], rc_entry = [r'''\Format rtf rtf "Rich Text Format" "" "%%" "%%" "document,vector,menu=export" "application/rtf" -\Format word doc "MS Word" W "%%" "%%" "document,vector,menu=export" "application/msword"''']) +\Format word doc "MS Word" W "%%" "%%" "document,vector,menu=export" "application/msword" +\Format word2 docx "MS Word Office Open XML" O "%%" "%%" "document,vector,menu=export" "application/vnd.openxmlformats-officedocument.wordprocessingml.document"''']) # # entries that do not need checkProg addToRC(r'''\Format date "" "date command" "" "" "" "" "" @@ -624,8 +698,9 @@ def checkFormatEntries(dtl_tools): \Format lyx13x 13.lyx "LyX 1.3.x" "" "" "" "document" "" \Format lyx14x 14.lyx "LyX 1.4.x" "" "" "" "document" "" \Format lyx15x 15.lyx "LyX 1.5.x" "" "" "" "document" "" -\Format lyx16x 16.lyx "LyX 1.6.x" "" "" "" "document,menu=export" "" -\Format lyx20x 20.lyx "LyX 2.0.x" "" "" "" "document,menu=export" "" +\Format lyx16x 16.lyx "LyX 1.6.x" "" "" "" "document" "" +\Format lyx20x 20.lyx "LyX 2.0.x" "" "" "" "document" "" +\Format lyx21x 21.lyx "LyX 2.1.x" "" "" "" "document,menu=export" "" \Format clyx cjklyx "CJK LyX 1.4.x (big5)" "" "" "" "document" "" \Format jlyx cjklyx "CJK LyX 1.4.x (euc-jp)" "" "" "" "document" "" \Format klyx cjklyx "CJK LyX 1.4.x (euc-kr)" "" "" "" "document" "" @@ -658,14 +733,17 @@ def checkConverterEntries(): # will also have this version suffix. # 4) Otherwise always use tex2lyx. in_binary_subdir = os.path.join(lyx_binary_dir, 'tex2lyx', 'tex2lyx') - in_binary_subdir = os.path.abspath(in_binary_subdir) + in_binary_subdir = os.path.abspath(in_binary_subdir).replace('\\', '/') in_binary_dir = os.path.join(lyx_binary_dir, 'tex2lyx') - in_binary_dir = os.path.abspath(in_binary_dir) + in_binary_dir = os.path.abspath(in_binary_dir).replace('\\', '/') path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [in_binary_subdir, in_binary_subdir + version_suffix, in_binary_dir, in_binary_dir + version_suffix, 'tex2lyx' + version_suffix, 'tex2lyx'], rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" "" -\converter literate lyx "%% -n -m noweb -f $$i $$o" ""'''], not_found = 'tex2lyx') +\converter latexclipboard lyx "%% -fixedenc utf8 -f $$i $$o" "" +\converter literate lyx "%% -n -m noweb -f $$i $$o" "" +\converter sweave lyx "%% -n -m sweave -f $$i $$o" "" +\converter knitr lyx "%% -n -m knitr -f $$i $$o" ""'''], not_found = 'tex2lyx') if path == '': logger.warning("Failed to find tex2lyx on your system.") @@ -673,6 +751,7 @@ def checkConverterEntries(): checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'], rc_entry = [r'''\converter literate latex "%%" "" \converter literate pdflatex "%%" "" +\converter literate xetex "%%" "" \converter literate luatex "%%" ""''']) # checkProg('a Sweave -> LaTeX converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e $$r'], @@ -705,11 +784,17 @@ def checkConverterEntries(): # eLyXer: search as an executable (elyxer.py, elyxer) path, elyxer = checkProg('a LyX -> HTML converter', - ['elyxer.py --directory $$r $$i $$o', 'elyxer --directory $$r $$i $$o'], + ['elyxer.py --nofooter --directory $$r $$i $$o', 'elyxer --nofooter --directory $$r $$i $$o'], rc_entry = [ r'\converter lyx html "%%" ""' ]) path, elyxer = checkProg('a LyX -> HTML (MS Word) converter', - ['elyxer.py --html --directory $$r $$i $$o', 'elyxer --html --directory $$r $$i $$o'], + ['elyxer.py --nofooter --html --directory $$r $$i $$o', 'elyxer --nofooter --html --directory $$r $$i $$o'], rc_entry = [ r'\converter lyx wordhtml "%%" ""' ]) + path, elyxer = checkProg('a LyX -> OpenDocument (eLyXer) converter', + ['elyxer.py --html --nofooter --unicode --directory $$r $$i $$o', 'elyxer --html --nofooter --unicode --directory $$r $$i $$o'], + rc_entry = [ r'\converter lyx odt2 "%%" ""' ]) + path, elyxer = checkProg('a LyX -> Word converter', + ['elyxer.py --html --nofooter --unicode --directory $$r $$i $$o', 'elyxer --html --nofooter --unicode --directory $$r $$i $$o'], + rc_entry = [ r'\converter lyx word "%%" ""' ]) if elyxer.find('elyxer') >= 0: addToRC(r'''\copier html "python -tt $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''') addToRC(r'''\copier wordhtml "python -tt $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''') @@ -746,6 +831,9 @@ def checkConverterEntries(): # checkProg('an OpenDocument -> LaTeX converter', ['w2l -clean $$i'], rc_entry = [ r'\converter odt latex "%%" ""' ]) + # + checkProg('a MS Word Office Open XML converter -> LaTeX', ['pandoc -s -f docx -o $$o -t latex $$i'], + rc_entry = [ r'\converter word2 latex "%%" ""' ]) # Only define a converter to pdf6, otherwise the odt format could be # used as an intermediate step for export to pdf, which is not wanted. checkProg('an OpenDocument -> PDF converter', ['unoconv -f pdf --stdout $$i > $$o'], @@ -756,7 +844,7 @@ def checkConverterEntries(): # directly available as application. # On SuSE the scripts have a .sh suffix, and on debian they are in /usr/share/tex4ht/ # Both SuSE and debian have oolatex - checkProg('a LaTeX -> Open Document converter', [ + checkProg('a LaTeX -> Open Document (tex4ht) converter', [ 'oolatex $$i', 'mk4ht oolatex $$i', 'oolatex.sh $$i', '/usr/share/tex4ht/oolatex $$i', 'htlatex $$i \'xhtml,ooffice\' \'ooffice/! -cmozhtf\' \'-coo\' \'-cvalidate\''], rc_entry = [ r'\converter latex odt "%%" "needaux"' ]) @@ -764,6 +852,12 @@ def checkConverterEntries(): checkProg('a LaTeX -> RTF converter', ['latex2rtf -p -S -o $$o $$i', 'latex2rt -p -S -o $$o $$i'], rc_entry = [ r'\converter latex rtf "%%" "needaux"' ]) # + checkProg('a LaTeX -> Open Document (Pandoc) converter', ['pandoc -s -f latex -o $$o -t odt $$i'], + rc_entry = [ r'\converter latex odt3 "%%" ""' ]) + # + checkProg('a LaTeX -> MS Word Office Open XML converter', ['pandoc -s -f latex -o $$o -t docx $$i'], + rc_entry = [ r'\converter latex word2 "%%" ""' ]) + # checkProg('a RTF -> HTML converter', ['unrtf --html $$i > $$o'], rc_entry = [ r'\converter rtf html "%%" ""' ]) # Do not define a converter to pdf6, ps is a pure export format @@ -790,9 +884,18 @@ def checkConverterEntries(): # Only define a converter from pdf6 for graphics checkProg('a PDF to EPS converter', ['pdftops -eps -f 1 -l 1 $$i $$o'], rc_entry = [ r'\converter pdf6 eps "%%" ""' ]) - # + # Create one converter for a PDF produced using TeX fonts and one for a + # PDF produced using non-TeX fonts. This does not produce non-unique + # conversion paths, since a given document either uses TeX fonts or not. checkProg('a PDF cropping tool', ['pdfcrop $$i $$o'], - rc_entry = [ r'\converter pdf2 pdf7 "%%" ""' ]) + rc_entry = [ r'''\converter pdf2 pdf7 "%%" "" +\converter pdf4 pdf7 "%%" ""''' ]) + # Create one converter for a PDF produced using TeX fonts and one for a + # PDF produced using non-TeX fonts. This does not produce non-unique + # conversion paths, since a given document either uses TeX fonts or not. + checkProg('Ghostscript', ["gswin32c", "gswin64c", "gs"], + rc_entry = [ r'''\converter pdf2 pdf8 "python -tt $$s/scripts/convert_pdf.py $$i $$o ebook" "" +\converter pdf4 pdf8 "python -tt $$s/scripts/convert_pdf.py $$i $$o ebook" ""''' ]) # checkProg('a Beamer info extractor', ['makebeamerinfo -p $$i'], rc_entry = [ r'\converter pdf2 beamer.info "%%" ""' ]) @@ -866,7 +969,7 @@ def checkConverterEntries(): # The eps2->eps converter then fixes the bounding box by cropping. # Although unoconv can convert to png and pdf as well, do not define # odg->png and odg->pdf converters, since the bb would be too large as well. - checkProg('an OpenOffice -> EPS converter', ['libreoffice -headless -nologo -convert-to eps $$i', 'unoconv -f eps --stdout $$i > $$o'], + checkProg('an OpenDocument -> EPS converter', ['libreoffice -headless -nologo -convert-to eps $$i', 'unoconv -f eps --stdout $$i > $$o'], rc_entry = [ r'\converter odg eps2 "%%" ""']) # Only define a converter to pdf6 for graphics checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', 'inkscape --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'], @@ -962,6 +1065,7 @@ def checkConverterEntries(): \converter lyx lyx15x "python -tt $$s/lyx2lyx/lyx2lyx -t 276 $$i > $$o" "" \converter lyx lyx16x "python -tt $$s/lyx2lyx/lyx2lyx -t 345 $$i > $$o" "" \converter lyx lyx20x "python -tt $$s/lyx2lyx/lyx2lyx -t 413 $$i > $$o" "" +\converter lyx lyx21x "python -tt $$s/lyx2lyx/lyx2lyx -t 474 $$i > $$o" "" \converter lyx clyx "python -tt $$s/lyx2lyx/lyx2lyx -c big5 -t 245 $$i > $$o" "" \converter lyx jlyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp -t 245 $$i > $$o" "" \converter lyx klyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr -t 245 $$i > $$o" "" @@ -1015,13 +1119,6 @@ def checkOtherEntries(): # 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 "python -tt $$s/scripts/fig_copy.py $$i $$o" \copier pstex "python -tt $$s/scripts/tex_copy.py $$i $$o $$l" @@ -1066,8 +1163,8 @@ def processLayoutFile(file, bool_docbook): return x.strip() classname = file.split(os.sep)[-1].split('.')[0] # return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for \DeclareLaTeXClass[a,b,c]{article} - p = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}') - q = re.compile(r'\DeclareCategory{(.*)}') + p = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$') + q = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$') classdeclaration = "" categorydeclaration = '""' for line in open(file).readlines(): @@ -1162,8 +1259,8 @@ def checkLatexConfig(check_config, bool_docbook): # Construct the list of classes to test for. # build the list of available layout files and convert it to commands # for chkconfig.ltx - declare = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}') - category = re.compile(r'\DeclareCategory{(.*)}') + declare = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$') + category = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$') empty = re.compile(r'^\s*$') testclasses = list() for file in glob.glob( os.path.join('layouts', '*.layout') ) + \ @@ -1390,7 +1487,7 @@ def rescanTeXFiles(): if not os.path.isfile( os.path.join(srcdir, 'scripts', 'TeXFiles.py') ): logger.error("configure: error: cannot find TeXFiles.py script") sys.exit(1) - tfp = cmdOutput("python -tt " + os.path.join(srcdir, 'scripts', 'TeXFiles.py')) + tfp = cmdOutput("python -tt " + '"' + os.path.join(srcdir, 'scripts', 'TeXFiles.py') + '"') logger.info(tfp) logger.info("\tdone") @@ -1407,7 +1504,7 @@ if __name__ == '__main__': lyx_check_config = True lyx_kpsewhich = True outfile = 'lyxrc.defaults' - lyxrc_fileformat = 11 + lyxrc_fileformat = 19 rc_entries = '' lyx_keep_temps = False version_suffix = '' @@ -1447,6 +1544,8 @@ Options: logger.error("configure: error: cannot find chkconfig.ltx script") sys.exit(1) setEnviron() + if sys.platform == 'darwin' and len(version_suffix) > 0: + checkUpgrade() createDirectories() dtl_tools = checkDTLtools() ## Write the first part of outfile