X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=bb692919232df9209b2d5671edf950116e6b48d8;hb=01dc665a2580f93007fcc25b6b897b67f507b664;hp=4f4977c08b761ccc3eb2622abb0747b2ff75e1e6;hpb=af49df00f5ee01f6c22a415f086819bfee569f0b;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index 4f4977c08b..bb69291923 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -275,7 +275,7 @@ def checkProg(description, progs, rc_entry=None, path=None, not_found =''): "for each prog and not_found.") sys.exit(2) logger.info('checking for ' + description + '...') - ## print '(' + ','.join(progs) + ')', + logger.debug('(' + ','.join(progs) + ')') additional_path = path path = os.environ["PATH"].split(os.pathsep) + additional_path extlist = [''] @@ -318,13 +318,45 @@ def checkProg(description, progs, rc_entry=None, path=None, not_found =''): addToRC(rc_entry[idx].replace('%%', ac_prog)) return [ac_dir, ac_word] # if not successful - logger.info(msg + ' no') + logger.info(msg + ' not in path') # write rc entries for 'not found' if len(rc_entry) > 0: # the last one. addToRC(rc_entry[-1].replace('%%', not_found)) return ['', not_found] +def check_java(): + """ Check for Java, don't give up as often as checkProg, using platform-dependent techniques """ + if os.name == 'nt': + # Check in the registry. + try: # Python 3. + import winreg + except ImportError: # Python 2. + import _winreg as winreg + + potential_keys_64b = ["SOFTWARE\\JavaSoft\\Java Runtime Environment", "SOFTWARE\\JavaSoft\\Java Development Kit", + "SOFTWARE\\JavaSoft\\JDK", "SOFTWARE\\JavaSoft\\JRE"] + potential_keys_32b = [k.replace('SOFTWARE', 'SOFTWARE\\WOW6432Node') for k in potential_keys_64b] + potential_keys = potential_keys_64b + potential_keys_32b + + reg_hive = winreg.HKEY_LOCAL_MACHINE + for key in potential_keys: + try: + with winreg.OpenKey(reg_hive, key) as reg_key: + version = winreg.QueryValueEx(reg_key, "CurrentVersion")[0] + with winreg.OpenKey(reg_hive, key + '\\' + version) as reg_key: + java_bin = winreg.QueryValueEx(reg_key, "JavaHome")[0] + '\\bin\\java.exe' + logger.info('+checking for java: found in Windows registry, ' + str(java_bin)) + return java_bin + except OSError: + pass + + # The test failed, no Java found. + return '' + else: + return '' + + def checkProgAlternatives(description, progs, rc_entry=None, alt_rc_entry=None, path=None, not_found=''): ''' @@ -343,7 +375,7 @@ def checkProgAlternatives(description, progs, rc_entry=None, logger.error("rc entry should have one item or item for each prog and not_found.") sys.exit(2) logger.info('checking for ' + description + '...') - ## print '(' + ','.join(progs) + ')', + logger.debug('(' + ','.join(progs) + ')') additional_path = path path = os.environ["PATH"].split(os.pathsep) + additional_path extlist = [''] @@ -413,7 +445,7 @@ def checkProgAlternatives(description, progs, rc_entry=None, break if found_alt: break - if found_alt == False: + if not found_alt: # if not successful logger.info(msg + ' no') if found_prime: @@ -721,6 +753,7 @@ def checkFormatEntries(dtl_tools): \Format docbook5 xml "DocBook 5" "" "" "%%" "document,menu=export" "application/docbook+xml" \Format dot dot "Graphviz Dot" "" "" "%%" "vector" "text/vnd.graphviz" \Format dviluatex tex "LaTeX (dviluatex)" "" "" "%%" "document,menu=export" "" +\Format epub epub ePub "" "" "%%" "document,menu=export" "application/epub+zip" \Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export" "" \Format literate nw NoWeb N "" "%%" "document,menu=export" "" \Format sweave Rnw "Sweave" S "" "%%" "document,menu=export" "" @@ -973,6 +1006,17 @@ def checkConverterEntries(): checkProg('DocBook converter -> PDF (docbook)', ['pandoc -f docbook -t latex --latex-engine=lualatex --toc -o $$o $$i'], rc_entry = [ r'\converter docbook5 pdf9 "%%" ""' ]) # + xpath, xslt_sheet = checkProg('XSLT stylesheets for ePub', ['chunk.xsl'], '', ['/usr/share/xml/docbook/stylesheet/docbook-xsl-ns/epub3']) + if xslt_sheet == 'chunk.xsl': + xpath = '/usr/share/xml/docbook/stylesheet/docbook-xsl-ns' + else: + xpath = 'none' + global java + if xsltproc != '': + addToRC('\\converter docbook5 epub "python $$s/scripts/docbook2epub.py none none \\"' + xsltproc + '\\" ' + xpath + ' $$i $$o" ""') + elif java != '': + addToRC('\\converter docbook5 epub "python $$s/scripts/docbook2epub.py \\"' + java + '\\" none none ' + xpath + ' $$i $$o" ""') + # 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 @@ -1900,7 +1944,7 @@ if __name__ == '__main__': lyx_check_config = True lyx_kpsewhich = True outfile = 'lyxrc.defaults' - lyxrc_fileformat = 34 + lyxrc_fileformat = 36 rc_entries = '' lyx_keep_temps = False version_suffix = '' @@ -1960,7 +2004,10 @@ Format %i LATEX = checkLatex(dtl_tools) # check java and perl before any checkProg that may require them java = checkProg('a java interpreter', ['java'])[1] + if java == '': + java = check_java() perl = checkProg('a perl interpreter', ['perl'])[1] + xsltproc = checkProg('xsltproc', ['xsltproc'])[1] (inkscape_path, inkscape_gui) = os.path.split(checkInkscape()) # On Windows, we need to call the "inkscape.com" wrapper # for command line purposes. Other OSes do not differentiate.