X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=58234c0d5a454443fe4b22481c4dec3205af0104;hb=c40bd7eccb3fb28323937c2000c87075fb60205b;hp=2fa8fe7ec7f1b70d01e11d75accf32e6d159a1ee;hpb=fa44bf796144d9ebe9af13ea54fcf2f767f79e82;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index 2fa8fe7ec7..58234c0d5a 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -62,7 +62,7 @@ def cmdOutput(cmd): ''' if os.name == 'nt': b = False - cmd = 'cmd /d /c ' + cmd + cmd = 'cmd /d /c pushd ' + shortPath(os.getcwdu()) + '&' + cmd else: b = True pipe = subprocess.Popen(cmd, shell=b, close_fds=b, stdin=subprocess.PIPE, \ @@ -73,6 +73,18 @@ def cmdOutput(cmd): return output.strip() +def shortPath(path): + ''' On Windows, return the short version of "path" if possible ''' + if os.name == 'nt': + from ctypes import windll, create_unicode_buffer + GetShortPathName = windll.kernel32.GetShortPathNameW + shortlen = GetShortPathName(path, 0, 0) + shortpath = create_unicode_buffer(shortlen) + if GetShortPathName(path, shortpath, shortlen): + return shortpath.value + return path + + def setEnviron(): ''' I do not really know why this is useful, but we might as well keep it. NLS nuisances. @@ -109,18 +121,14 @@ def checkTeXPaths(): from tempfile import mkstemp fd, tmpfname = mkstemp(suffix='.ltx') if os.name == 'nt': - from ctypes import windll, create_unicode_buffer - GetShortPathName = windll.kernel32.GetShortPathNameW - longname = unicode(tmpfname) - shortlen = GetShortPathName(longname, 0, 0) - shortname = create_unicode_buffer(shortlen) - if GetShortPathName(longname, shortname, shortlen): - inpname = shortname.value.replace('\\', '/') - else: - inpname = tmpfname.replace('\\', '/') + from locale import getdefaultlocale + language, encoding = getdefaultlocale() + if encoding == None: + encoding = 'latin1' + inpname = shortPath(unicode(tmpfname, encoding)).replace('\\', '/') else: inpname = cmdOutput('cygpath -m ' + tmpfname) - logname = os.path.basename(inpname.replace('.ltx', '.log')) + logname = os.path.basename(re.sub("(?i).ltx", ".log", inpname)) inpname = inpname.replace('~', '\\string~') os.write(fd, r'\relax') os.close(fd) @@ -480,158 +488,140 @@ def checkModule(module): def checkFormatEntries(dtl_tools): ''' Check all formats (\Format entries) ''' checkViewerEditor('a Tgif viewer and editor', ['tgif'], - rc_entry = [r'\Format tgif obj Tgif "" "%%" "%%" "vector"']) + rc_entry = [r'\Format tgif "obj, tgo" Tgif "" "%%" "%%" "vector" "application/x-tgif"']) # checkViewerEditor('a FIG viewer and editor', ['xfig', 'jfig3-itext.jar', 'jfig3.jar'], - rc_entry = [r'\Format fig fig FIG "" "%%" "%%" "vector"']) + rc_entry = [r'\Format fig fig FIG "" "%%" "%%" "vector" "application/x-xfig"']) # checkViewerEditor('a Dia viewer and editor', ['dia'], - rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector,zipped=native"']) + 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"']) + rc_entry = [r'\Format odg "odg, sxd" "OpenOffice drawing" "" "%%" "%%" "vector,zipped=native" "application/vnd.oasis.opendocument.graphics"']) # checkViewerEditor('a Grace viewer and editor', ['xmgrace'], - rc_entry = [r'\Format agr agr Grace "" "%%" "%%" "vector"']) + rc_entry = [r'\Format agr agr Grace "" "%%" "%%" "vector" ""']) # checkViewerEditor('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'], - rc_entry = [r'\Format fen fen FEN "" "%%" "%%" ""']) + rc_entry = [r'\Format fen fen FEN "" "%%" "%%" "" ""']) # checkViewerEditor('a SVG viewer and editor', ['inkscape'], - rc_entry = [r'\Format svg svg SVG "" "%%" "%%" "vector"']) + rc_entry = [r'\Format svg svg SVG "" "%%" "%%" "vector" "image/svg+xml"']) # - path, iv = checkViewerNoRC('a raster image viewer', ['xv', 'kview', 'gimp-remote', 'gimp'], - rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" "" -\Format gif gif GIF "" "%s" "%s" "" -\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" -\Format pbm pbm PBM "" "%s" "%s" "" -\Format pgm pgm PGM "" "%s" "%s" "" -\Format png png PNG "" "%s" "%s" "" -\Format ppm ppm PPM "" "%s" "%s" "" -\Format tiff tif TIFF "" "%s" "%s" "" -\Format xbm xbm XBM "" "%s" "%s" "" -\Format xpm xpm XPM "" "%s" "%s" ""''']) - path, ie = checkEditorNoRC('a raster image editor', ['gimp-remote', 'gimp'], - rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" "" -\Format gif gif GIF "" "%s" "%s" "" -\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" -\Format pbm pbm PBM "" "%s" "%s" "" -\Format pgm pgm PGM "" "%s" "%s" "" -\Format png png PNG "" "%s" "%s" "" -\Format ppm ppm PPM "" "%s" "%s" "" -\Format tiff tif TIFF "" "%s" "%s" "" -\Format xbm xbm XBM "" "%s" "%s" "" -\Format xpm xpm XPM "" "%s" "%s" ""''']) - addToRC(r'''\Format bmp bmp BMP "" "%s" "%s" "" -\Format gif gif GIF "" "%s" "%s" "" -\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" -\Format pbm pbm PBM "" "%s" "%s" "" -\Format pgm pgm PGM "" "%s" "%s" "" -\Format png png PNG "" "%s" "%s" "" -\Format ppm ppm PPM "" "%s" "%s" "" -\Format tiff tif TIFF "" "%s" "%s" "" -\Format xbm xbm XBM "" "%s" "%s" "" -\Format xpm xpm XPM "" "%s" "%s" ""''' % \ + imageformats = r'''\Format bmp bmp BMP "" "%s" "%s" "" "image/x-bmp" +\Format gif gif GIF "" "%s" "%s" "" "image/gif" +\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" "image/jpeg" +\Format pbm pbm PBM "" "%s" "%s" "" "image/x-portable-bitmap" +\Format pgm pgm PGM "" "%s" "%s" "" "image/x-portable-graymap" +\Format png png PNG "" "%s" "%s" "" "image/x-png" +\Format ppm ppm PPM "" "%s" "%s" "" "image/x-portable-pixmap" +\Format tiff tif TIFF "" "%s" "%s" "" "image/tiff" +\Format xbm xbm XBM "" "%s" "%s" "" "image/x-xbitmap" +\Format xpm xpm XPM "" "%s" "%s" "" "image/x-xpixmap"''' + path, iv = checkViewerNoRC('a raster image viewer', ['xv', 'kview', 'gimp-remote', 'gimp'], rc_entry = [imageformats]) + path, ie = checkEditorNoRC('a raster image editor', ['gimp-remote', 'gimp'], rc_entry = [imageformats]) + addToRC(imageformats % \ (iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie) ) # checkViewerEditor('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)" "" "" "%%" "" -\Format docbook sgml DocBook B "" "%%" "document,menu=export" -\Format docbook-xml xml "DocBook (XML)" "" "" "%%" "document,menu=export" -\Format dot dot "Graphviz Dot" "" "" "%%" "vector" -\Format dviluatex tex "LaTeX (dviluatex)" "" "" "%%" "document,menu=export" -\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export" -\Format literate nw NoWeb N "" "%%" "document,menu=export" -\Format sweave Rnw "Sweave" S "" "%%" "document,menu=export" -\Format r R "R/S code" "" "" "%%" "document,menu=export" -\Format knitr Rnw "Rnw (knitr)" "" "" "%%" "document,menu=export" -\Format lilypond ly "LilyPond music" "" "" "%%" "vector" -\Format lilypond-book lytex "LilyPond book (LaTeX)" "" "" "%%" "document,menu=export" -\Format latex tex "LaTeX (plain)" L "" "%%" "document,menu=export" -\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 text txt "Plain text" a "" "%%" "document,menu=export" -\Format text2 txt "Plain text (pstotext)" "" "" "%%" "document" -\Format text3 txt "Plain text (ps2ascii)" "" "" "%%" "document" -\Format text4 txt "Plain text (catdvi)" "" "" "%%" "document" -\Format textparagraph txt "Plain Text, Join Lines" "" "" "%%" "document"''' ]) + 'nedit', 'gedit', 'notepad', 'geany', 'leafpad', 'mousepad'], + 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)" "" "" "%%" "" "" +\Format docbook sgml DocBook B "" "%%" "document,menu=export" "" +\Format docbook-xml xml "DocBook (XML)" "" "" "%%" "document,menu=export" "application/docbook+xml" +\Format dot dot "Graphviz Dot" "" "" "%%" "vector" "text/vnd.graphviz" +\Format dviluatex tex "LaTeX (dviluatex)" "" "" "%%" "document,menu=export" "" +\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export" "" +\Format literate nw NoWeb N "" "%%" "document,menu=export" "" +\Format sweave Rnw "Sweave" S "" "%%" "document,menu=export" "" +\Format r R "R/S code" "" "" "%%" "document,menu=export" "" +\Format knitr Rnw "Rnw (knitr)" "" "" "%%" "document,menu=export" "" +\Format lilypond ly "LilyPond music" "" "" "%%" "vector" "text/x-lilypond" +\Format lilypond-book lytex "LilyPond book (LaTeX)" "" "" "%%" "document,menu=export" "" +\Format latex tex "LaTeX (plain)" L "" "%%" "document,menu=export" "text/x-tex" +\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 text txt "Plain text" a "" "%%" "document,menu=export" "text/plain" +\Format text2 txt "Plain text (pstotext)" "" "" "%%" "document" "" +\Format text3 txt "Plain text (ps2ascii)" "" "" "%%" "document" "" +\Format text4 txt "Plain text (catdvi)" "" "" "%%" "document" "" +\Format textparagraph txt "Plain Text, Join Lines" "" "" "%%" "document" "" +\Format beamer.info pdf.info "Info (Beamer)" "" "" "%%" "document,menu=export" ""''' ]) #Spreadsheets using ssconvert from gnumeric checkViewer('gnumeric spreadsheet software', ['gnumeric'], - rc_entry = [r'''\Format gnumeric gnumeric "Gnumeric spreadsheet" "" "" "%%" "document" -\Format excel xls "Excel spreadsheet" "" "" "%%" "document" -\Format oocalc ods "OpenOffice spreadsheet" "" "" "%%" "document"''']) + 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"''']) # checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'], - rc_entry = [r'\Format xhtml xhtml "LyXHTML" y "%%" "" "document,menu=export"']) + rc_entry = [r'\Format xhtml xhtml "LyXHTML" y "%%" "" "document,menu=export" "application/xhtml+xml"']) # checkEditor('a BibTeX editor', ['jabref', 'JabRef', \ 'pybliographic', 'bibdesk', 'gbib', 'kbib', \ 'kbibtex', 'sixpack', 'bibedit', 'tkbibtex' \ 'xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \ - 'nedit', 'gedit', 'notepad'], - rc_entry = [r'''\Format bibtex bib "BibTeX" "" "" "%%" ""''' ]) + 'nedit', 'gedit', 'notepad', 'geany', 'leafpad', 'mousepad'], + rc_entry = [r'''\Format bibtex bib "BibTeX" "" "" "%%" "" "text/x-bibtex"''' ]) # #checkProg('a Postscript interpreter', ['gs'], # rc_entry = [ r'\ps_command "%%"' ]) checkViewer('a Postscript previewer', ['kghostview', 'okular', 'evince', 'gv', 'ghostview -swap'], - rc_entry = [r'''\Format eps eps EPS "" "%%" "" "vector" -\Format eps2 eps "EPS (uncropped)" "" "%%" "" "vector" -\Format ps ps Postscript t "%%" "" "document,vector,menu=export"''']) + rc_entry = [r'''\Format eps eps EPS "" "%%" "" "vector" "image/x-eps" +\Format eps2 eps "EPS (uncropped)" "" "%%" "" "vector" "" +\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 checkViewer('a PDF previewer', ['kpdf', 'okular', 'evince', 'kghostview', 'xpdf', 'acrobat', 'acroread', \ 'gv', 'ghostview'], - 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"''']) + rc_entry = [r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" "" "document,vector,menu=export" "application/pdf" +\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" ""''']) # checkViewer('a DVI previewer', ['xdvi', 'kdvi', 'okular', 'yap', 'dviout -Set=!m'], - rc_entry = [r'''\Format dvi dvi DVI D "%%" "" "document,vector,menu=export" -\Format dvi3 dvi "DVI (LuaTeX)" V "%%" "" "document,vector,menu=export"''']) + rc_entry = [r'''\Format dvi dvi DVI D "%%" "" "document,vector,menu=export" "application/x-dvi" +\Format dvi3 dvi "DVI (LuaTeX)" V "%%" "" "document,vector,menu=export" ""''']) if dtl_tools: # Windows only: DraftDVI - addToRC(r'\Format dvi2 dvi DraftDVI "" "" "" "vector"') + addToRC(r'\Format dvi2 dvi DraftDVI "" "" "" "vector" ""') # checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'], - rc_entry = [r'\Format html "html, htm" HTML H "%%" "" "document,menu=export"']) + rc_entry = [r'\Format html "html, htm" HTML H "%%" "" "document,menu=export" "text/html"']) # checkViewerEditor('Noteedit', ['noteedit'], - rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector"']) + rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector" ""']) # - checkViewerEditor('an OpenDocument/OpenOffice viewer', ['libreoffice', 'lwriter', 'swriter', 'oowriter', 'abiword'], - rc_entry = [r'''\Format odt odt OpenDocument "" "%%" "%%" "document,vector,menu=export" -\Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,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" +\Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,vector" "application/vnd.sun.xml.writer"''']) # - checkViewerEditor('a Rich Text and Word viewer', ['libreoffice', 'lwriter', 'swriter', 'oowriter', 'abiword'], - rc_entry = [r'''\Format rtf rtf "Rich Text Format" "" "%%" "%%" "document,vector,menu=export" -\Format word doc "MS Word" W "%%" "%%" "document,vector,menu=export"''']) + 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"''']) # # entries that do not need checkProg - addToRC(r'''\Format date "" "date command" "" "" "" "" -\Format csv csv "Table (CSV)" "" "" "" "document" -\Format fax "" Fax "" "" "" "document" -\Format lyx lyx LyX "" "" "" "" -\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 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" -\Format lyxpreview lyxpreview "LyX Preview" "" "" "" "" -\Format pdftex pdftex_t PDFTEX "" "" "" "" -\Format program "" Program "" "" "" "" -\Format pstex pstex_t PSTEX "" "" "" "" -\Format wmf wmf "Windows Metafile" "" "" "" "vector" -\Format emf emf "Enhanced Metafile" "" "" "" "vector" -\Format wordhtml "html, htm" "HTML (MS Word)" "" "" "" "document" + addToRC(r'''\Format date "" "date command" "" "" "" "" "" +\Format csv csv "Table (CSV)" "" "" "" "document" "text/csv" +\Format fax "" Fax "" "" "" "document" "" +\Format lyx lyx LyX "" "" "" "" "application/x-lyx" +\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 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" "" +\Format lyxpreview lyxpreview "LyX Preview" "" "" "" "" "" +\Format pdftex pdftex_t PDFTEX "" "" "" "" "" +\Format program "" Program "" "" "" "" "" +\Format pstex pstex_t PSTEX "" "" "" "" "" +\Format wmf wmf "Windows Metafile" "" "" "" "vector" "image/x-wmf" +\Format emf emf "Enhanced Metafile" "" "" "" "vector" "image/x-emf" +\Format wordhtml "html, htm" "HTML (MS Word)" "" "" "" "document" "" ''') @@ -724,7 +714,7 @@ def checkConverterEntries(): # Check if LyXBlogger is installed lyxblogger_found = checkModule('lyxblogger') if lyxblogger_found: - addToRC(r'\Format blog blog "LyXBlogger" "" "" "" "document"') + addToRC(r'\Format blog blog "LyXBlogger" "" "" "" "document" ""') addToRC(r'\converter xhtml blog "python -m lyxblogger $$i" ""') # @@ -777,6 +767,9 @@ def checkConverterEntries(): checkProg('a PDF to EPS converter', ['pdftops -eps -f 1 -l 1 $$i $$o'], rc_entry = [ r'\converter pdf eps "%%" ""' ]) # + checkProg('a Beamer info extractor', ['makebeamerinfo -p $$i'], + rc_entry = [ r'\converter pdf2 beamer.info "%%" ""' ]) + # checkProg('a DVI to TXT converter', ['catdvi $$i > $$o'], rc_entry = [ r'\converter dvi text4 "%%" ""' ]) # @@ -920,12 +913,12 @@ def checkConverterEntries(): # Currently, lyxpak outputs a gzip compressed tar archive on *nix # and a zip archive on Windows. # So, we configure the appropriate version according to the platform. - cmd = r'\converter lyx %s "python -tt $$s/scripts/lyxpak.py $$r/$$i" ""' + cmd = r'\converter lyx %s "python -tt $$s/scripts/lyxpak.py $$r/$$f" ""' if os.name == 'nt': - addToRC(r'\Format lyxzip zip "LyX Archive (zip)" "" "" "" "document,menu=export"') + addToRC(r'\Format lyxzip zip "LyX Archive (zip)" "" "" "" "document,menu=export" ""') addToRC(cmd % "lyxzip") else: - addToRC(r'\Format lyxgz gz "LyX Archive (tar.gz)" "" "" "" "document,menu=export"') + addToRC(r'\Format lyxgz gz "LyX Archive (tar.gz)" "" "" "" "document,menu=export" ""') addToRC(cmd % "lyxgz") # @@ -1013,17 +1006,29 @@ def checkOtherEntries(): def processLayoutFile(file, bool_docbook): ''' process layout file and get a line of result - Declare lines look like this: (article.layout, scrbook.layout, svjog.layout) + Declare lines look like this: + \DeclareLaTeXClass[]{} + + Optionally, a \DeclareCategory line follows: + + \DeclareCategory{} + + So for example (article.layout, scrbook.layout, svjog.layout) + \DeclareLaTeXClass{article} + \DeclareCategory{Articles} + \DeclareLaTeXClass[scrbook]{book (koma-script)} + \DeclareCategory{Books} + \DeclareLaTeXClass[svjour,svjog.clo]{article (Springer - svjour/jog)} - we expect output: + we'd expect this output: - "article" "article" "article" "false" "article.cls" - "scrbook" "scrbook" "book (koma-script)" "false" "scrbook.cls" - "svjog" "svjour" "article (Springer - svjour/jog)" "false" "svjour.cls,svjog.clo" + "article" "article" "article" "false" "article.cls" "Articles" + "scrbook" "scrbook" "book (koma-script)" "false" "scrbook.cls" "Books" + "svjog" "svjour" "article (Springer - svjour/jog)" "false" "svjour.cls,svjog.clo" "" ''' def checkForClassExtension(x): '''if the extension for a latex class is not @@ -1035,8 +1040,12 @@ def processLayoutFile(file, bool_docbook): 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{(.*)}') + classdeclaration = "" + categorydeclaration = '""' for line in open(file).readlines(): res = p.search(line) + qres = q.search(line) if res != None: (classtype, optAll, opt, opt1, desc) = res.groups() avai = {'LaTeX':'false', 'DocBook':bool_docbook}[classtype] @@ -1049,7 +1058,15 @@ def processLayoutFile(file, bool_docbook): prereq_latex = ','.join(prereq_list) prereq_docbook = {'true':'', 'false':'docbook'}[bool_docbook] prereq = {'LaTeX':prereq_latex, 'DocBook':prereq_docbook}[classtype] - return '"%s" "%s" "%s" "%s" "%s"\n' % (classname, opt, desc, avai, prereq) + classdeclaration = '"%s" "%s" "%s" "%s" "%s"' % (classname, opt, desc, avai, prereq) + if categorydeclaration != '""': + return classdeclaration + " " + categorydeclaration + if qres != None: + categorydeclaration = '"%s"' % (qres.groups()[0]) + if classdeclaration != "": + return classdeclaration + " " + categorydeclaration + if classdeclaration != "": + return classdeclaration + " " + categorydeclaration logger.warning("Layout file " + file + " has no \DeclareXXClass line. ") return "" @@ -1098,6 +1115,12 @@ def checkLatexConfig(check_config, bool_docbook): tx.write(retval) tx.close() logger.info('\tdone') + if not os.path.isfile('packages.lst') or not check_config: + logger.info('+generating default list of packages... ') + removeFiles(['packages.lst']) + tx = open('packages.lst', 'w') + tx.close() + logger.info('\tdone') if not check_config: return None # the following will generate textclass.lst.tmp, and packages.lst.tmp @@ -1113,6 +1136,7 @@ def checkLatexConfig(check_config, bool_docbook): # 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{(.*)}') empty = re.compile(r'^\s*$') testclasses = list() for file in glob.glob( os.path.join('layouts', '*.layout') ) + \ @@ -1121,14 +1145,23 @@ def checkLatexConfig(check_config, bool_docbook): if not os.path.isfile(file): continue classname = file.split(os.sep)[-1].split('.')[0] + decline = "" + catline = "" for line in open(file).readlines(): if not empty.match(line) and line[0] != '#': - logger.warning("Failed to find valid \Declare line for layout file `" + file + "'.\n\t=> Skipping this file!") - nodeclaration = True + if decline == "": + logger.warning("Failed to find valid \Declare line for layout file `" + file + "'.\n\t=> Skipping this file!") + nodeclaration = True + # A class, but no category declaration. Just break. break - if declare.search(line) == None: + if declare.search(line) != None: + decline = "\\TestDocClass{%s}{%s}" % (classname, line[1:].strip()) + testclasses.append(decline) + elif category.search(line) != None: + catline = "\\DeclareCategory{%s}{%s}" % (classname, category.search(line).groups()[0]) + testclasses.append(catline) + if catline == "" or decline == "": continue - testclasses.append("\\TestDocClass{%s}{%s}" % (classname, line[1:].strip())) break if nodeclaration: continue @@ -1152,7 +1185,7 @@ def checkLatexConfig(check_config, bool_docbook): if rmcopy: removeFiles( [ 'chkconfig.ltx' ] ) # - # currently, values in chhkconfig are only used to set + # currently, values in chkconfig are only used to set # \font_encoding values = {} for line in open('chkconfig.vars').readlines(): @@ -1323,6 +1356,17 @@ def checkTeXAllowSpaces(): removeFiles( [ 'a b.tex', 'a b.log', 'texput.log' ]) +def rescanTeXFiles(): + ''' Run kpsewhich to update information about TeX files ''' + logger.info("+Indexing TeX files... ") + 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')) + logger.info(tfp) + logger.info("\tdone") + + def removeTempFiles(): # Final clean-up if not lyx_keep_temps: @@ -1333,8 +1377,9 @@ def removeTempFiles(): if __name__ == '__main__': lyx_check_config = True + lyx_kpsewhich = True outfile = 'lyxrc.defaults' - lyxrc_fileformat = 3 + lyxrc_fileformat = 7 rc_entries = '' lyx_keep_temps = False version_suffix = '' @@ -1345,10 +1390,13 @@ if __name__ == '__main__': Options: --help show this help lines --keep-temps keep temporary files (for debug. purposes) + --without-kpsewhich do not update TeX files information via kpsewhich --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-kpsewhich': + lyx_kpsewhich = False elif op == '--without-latex-config': lyx_check_config = False elif op == '--keep-temps': @@ -1393,6 +1441,8 @@ Format %i if windows_style_tex_paths != '': addToRC(r'\tex_expects_windows_paths %s' % windows_style_tex_paths) checkOtherEntries() + if lyx_kpsewhich: + rescanTeXFiles() checkModulesConfig() # --without-latex-config can disable lyx_check_config ret = checkLatexConfig(lyx_check_config and LATEX != '', bool_docbook)