X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=0096a9151e0d70f3c578dc9c07044583ed0a1b08;hb=74059f6b5600c92166e66e9b6b78eda2b7b93331;hp=2fe2f3f3df2ac273210b5d51a3f012b0fefa650d;hpb=ae577fe2492daf8f5b8191e67cddacab385aa5eb;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index 2fe2f3f3df..0096a9151e 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -166,7 +166,7 @@ def checkUpgrade(): logger.debug('previous = ' + previous) if os.path.isdir( previous ): logger.info('Found directory "%s".', previous) - copy_tree( previous, cwd ) + copy_tree( previous, cwd, True ) logger.info('Content copied to directory "%s".', cwd) return @@ -250,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 @@ -260,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 @@ -302,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 @@ -315,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): @@ -678,12 +680,15 @@ def checkFormatEntries(dtl_tools): rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector" ""']) # checkViewerEditor('an OpenDocument viewer', ['libreoffice', 'lwriter', 'lowriter', 'oowriter', 'swriter', 'abiword'], - rc_entry = [r'''\Format odt odt "OpenDocument" "" "%%" "%%" "document,vector,menu=export" "application/vnd.oasis.opendocument.text" + 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" "" "" "" "" "" @@ -784,6 +789,12 @@ def checkConverterEntries(): path, elyxer = checkProg('a LyX -> HTML (MS Word) converter', ['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"''') @@ -820,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'], @@ -830,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"' ]) @@ -838,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 @@ -1143,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(): @@ -1239,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') ) + \