On Monday, February 15, 2021 3:25:45 PM WET Scott Kostyshak wrote:
> +1
>
> Thanks for taking a look, José.
>
> Scott
OK. I have lots of issues on hand but at least this is funny. :-)
One option would be to use some kind of string formatting. Actually since
curly braces are usually not used in OS we could use the string format syntax
(that is also used in C++20 format). One example would be:
\converter pdf4 pdf8 "{python} $$s/scripts/convert_pdf.py $$i $$o ebook"...
The lyx could convert internally {python} to the python path. Since lyx
already has this information, or else it would not call configure.py
If you do not like this option one in the same line as the other
interpolations that we apply is to use $${python}.
The other option is to replace this in configure.py like in the following
patch that I have not yet tested.
What do you think?
--
José Abílio
diff --git a/lib/configure.py b/lib/configure.py
index 43073e901d..4e08ef6776 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -29,7 +29,10 @@ formatter = logging.Formatter('%(message)s') # only print out the message itself
console.setFormatter(formatter)
logger = logging.getLogger('LyX')
logger.addHandler(console)
-
+interpreter = sys.executable
+if interpreter == '':
+ interpreter = "python"
+
def quoteIfSpace(name):
" utility function: quote name if it contains spaces "
if ' ' in name:
@@ -52,7 +55,7 @@ def addToRC(lines):
add newline at the end of lines.
'''
if lines.strip():
- writeToFile(outfile, lines + '\n', append = True)
+ writeToFile(outfile, lines.format(python=interpreter) + '\n', append = True)
logger.debug('Add to RC:\n' + lines + '\n\n')
@@ -653,7 +656,7 @@ def checkLatex(dtl_tools):
if dtl_tools:
# Windows only: DraftDVI
addToRC(r'''\converter latex dvi2 "%s" "latex,hyperref-driver=dvips"
-\converter dvi2 dvi "python -tt $$s/scripts/clean_dvi.py $$i $$o" ""''' % LATEX)
+\converter dvi2 dvi "{python} $$s/scripts/clean_dvi.py $$i $$o" ""''' % LATEX)
else:
addToRC(r'\converter latex dvi "%s" "latex,hyperref-driver=dvips"' % LATEX)
# no latex
@@ -943,7 +946,7 @@ def checkConverterEntries():
checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex',
'htmltolatex -input $$i -output $$o', 'htmltolatex.jar -input $$i -output $$o'],
rc_entry = [ r'\converter html latex "%%" ""',
- r'\converter html latex "python -tt $$s/scripts/html2latexwrapper.py %% $$i $$o" ""',
+ r'\converter html latex "{python} $$s/scripts/html2latexwrapper.py %% $$i $$o" ""',
r'\converter html latex "%%" ""',
r'\converter html latex "%%" ""', '' ])
#
@@ -964,8 +967,8 @@ def checkConverterEntries():
['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"''')
+ addToRC(r'''\copier html "{python} $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
+ addToRC(r'''\copier wordhtml "{python} $$s/scripts/ext_copy.py -e html,png,jpg,jpeg,css $$i $$o"''')
else:
# search for HTML converters other than eLyXer
# On SuSE the scripts have a .sh suffix, and on debian they are in /usr/share/tex4ht/
@@ -974,24 +977,24 @@ def checkConverterEntries():
'latex2html -no_subdir -split 0 -show_section_numbers $$i', 'hevea -s $$i'],
rc_entry = [ r'\converter latex html "%%" "needaux"' ])
if htmlconv.find('htlatex') >= 0 or htmlconv == 'latex2html':
- addToRC(r'''\copier html "python -tt $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
+ addToRC(r'''\copier html "{python} $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
else:
- addToRC(r'''\copier html "python -tt $$s/scripts/ext_copy.py $$i $$o"''')
+ addToRC(r'''\copier html "{python} $$s/scripts/ext_copy.py $$i $$o"''')
path, htmlconv = checkProg('a LaTeX -> HTML (MS Word) converter', ["htlatex $$i 'html,word' 'symbol/!' '-cvalidate'",
"htlatex.sh $$i 'html,word' 'symbol/!' '-cvalidate'",
"/usr/share/tex4ht/htlatex $$i 'html,word' 'symbol/!' '-cvalidate'"],
rc_entry = [ r'\converter latex wordhtml "%%" "needaux"' ])
if htmlconv.find('htlatex') >= 0:
- addToRC(r'''\copier wordhtml "python -tt $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
+ addToRC(r'''\copier wordhtml "{python} $$s/scripts/ext_copy.py -e html,png,css $$i $$o"''')
else:
- addToRC(r'''\copier wordhtml "python -tt $$s/scripts/ext_copy.py $$i $$o"''')
+ addToRC(r'''\copier wordhtml "{python} $$s/scripts/ext_copy.py $$i $$o"''')
# Check if LyXBlogger is installed
lyxblogger_found = checkModule('lyxblogger')
if lyxblogger_found:
addToRC(r'\Format blog blog "LyXBlogger" "" "" "" "document" ""')
- addToRC(r'\converter xhtml blog "python -m lyxblogger $$i" ""')
+ addToRC(r'\converter xhtml blog "{python} -m lyxblogger $$i" ""')
#
checkProg('an OpenOffice.org -> LaTeX converter', ['w2l -clean $$i'],
@@ -1013,9 +1016,9 @@ def checkConverterEntries():
xpath = 'none'
global java
if xsltproc != '':
- addToRC('\\converter docbook5 epub "python $$s/scripts/docbook2epub.py none none \\"' + xsltproc + '\\" ' + xpath + ' $$i $$r $$o" ""')
+ addToRC('\\converter docbook5 epub "{python} $$s/scripts/docbook2epub.py none none \\"' + xsltproc + '\\" ' + xpath + ' $$i $$r $$o" ""')
elif java != '':
- addToRC('\\converter docbook5 epub "python $$s/scripts/docbook2epub.py \\"' + java + '\\" none none ' + xpath + ' $$i $$r $$o" ""')
+ addToRC('\\converter docbook5 epub "{python} $$s/scripts/docbook2epub.py \\"' + java + '\\" none none ' + xpath + ' $$i $$r $$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 "%%" ""' ])
@@ -1087,8 +1090,8 @@ def checkConverterEntries():
# 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" ""''' ])
+ rc_entry = [ r'''\converter pdf2 pdf8 "{python} $$s/scripts/convert_pdf.py $$i $$o ebook" ""
+\converter pdf4 pdf8 "{python} $$s/scripts/convert_pdf.py $$i $$o ebook" ""''' ])
#
checkProg('a Beamer info extractor', ['makebeamerinfo -p $$i'],
rc_entry = [ r'\converter pdf2 beamer.info "%%" ""' ])
@@ -1114,24 +1117,24 @@ def checkConverterEntries():
\converter fig ppm "fig2dev -L ppm $$i $$o" ""
\converter fig svg "fig2dev -L svg $$i $$o" ""
\converter fig png "fig2dev -L png $$i $$o" ""
-\converter fig pdftex "python -tt $$s/scripts/fig2pdftex.py $$i $$o" ""
-\converter fig pstex "python -tt $$s/scripts/fig2pstex.py $$i $$o" ""''')
+\converter fig pdftex "{python} $$s/scripts/fig2pdftex.py $$i $$o" ""
+\converter fig pstex "{python} $$s/scripts/fig2pstex.py $$i $$o" ""''')
#
if inkscape_stable:
checkProg('a SVG -> PDFTeX converter', [inkscape_cl],
- rc_entry = [ r'\converter svg pdftex "python -tt $$s/scripts/svg2pdftex.py %% $$p$$i $$p$$o" ""'],
+ rc_entry = [ r'\converter svg pdftex "{python} $$s/scripts/svg2pdftex.py %% $$p$$i $$p$$o" ""'],
path = [inkscape_path])
#
checkProg('a SVG -> PSTeX converter', [inkscape_cl],
- rc_entry = [ r'\converter svg pstex "python -tt $$s/scripts/svg2pstex.py %% $$p$$i $$p$$o" ""'],
+ rc_entry = [ r'\converter svg pstex "{python} $$s/scripts/svg2pstex.py %% $$p$$i $$p$$o" ""'],
path = [inkscape_path])
else:
checkProg('a SVG -> PDFTeX converter', [inkscape_cl],
- rc_entry = [ r'\converter svg pdftex "python -tt $$s/scripts/svg2pdftex.py --unstable %% $$p$$i $$p$$o" ""'],
+ rc_entry = [ r'\converter svg pdftex "{python} $$s/scripts/svg2pdftex.py --unstable %% $$p$$i $$p$$o" ""'],
path = [inkscape_path])
#
checkProg('a SVG -> PSTeX converter', [inkscape_cl],
- rc_entry = [ r'\converter svg pstex "python -tt $$s/scripts/svg2pstex.py --unstable %% $$p$$i $$p$$o" ""'],
+ rc_entry = [ r'\converter svg pstex "{python} $$s/scripts/svg2pstex.py --unstable %% $$p$$i $$p$$o" ""'],
path = [inkscape_path])
#
checkProg('a TIFF -> PS converter', ['tiff2ps $$i > $$o'],
@@ -1246,7 +1249,7 @@ def checkConverterEntries():
#
checkProg('Gnuplot', ['gnuplot'],
rc_entry = [ r'''\Format gnuplot "gp, gnuplot" "Gnuplot" "" "" "" "vector" "text/plain"
-\converter gnuplot pdf6 "python -tt $$s/scripts/gnuplot2pdf.py $$i $$o" "needauth"''' ])
+\converter gnuplot pdf6 "{python} $$s/scripts/gnuplot2pdf.py $$i $$o" "needauth"''' ])
#
# gnumeric/xls/ods to tex
checkProg('a spreadsheet -> latex converter', ['ssconvert'],
@@ -1258,10 +1261,10 @@ def checkConverterEntries():
\converter oocalc html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
\converter excel html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
\converter excel2 html_table "ssconvert --export-type=Gnumeric_html:html40frag $$i $$o" ""
-\converter gnumeric xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
-\converter oocalc xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
-\converter excel xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
-\converter excel2 xhtml_table "python $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter gnumeric xhtml_table "{python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter oocalc xhtml_table "{python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter excel xhtml_table "{python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
+\converter excel2 xhtml_table "{python} $$s/scripts/spreadsheet_to_docbook.py $$i $$o" ""
'''])
path, lilypond = checkProg('a LilyPond -> EPS/PDF/PNG converter', ['lilypond'])
@@ -1320,7 +1323,7 @@ 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/$$f" ""'
+ cmd = r'\converter lyx %s "{python} $$s/scripts/lyxpak.py $$r/$$f" ""'
if os.name == 'nt':
addToRC(r'\Format lyxzip zip "LyX Archive (zip)" "" "" "" "document,menu=export" ""')
addToRC(cmd % "lyxzip")
@@ -1334,24 +1337,24 @@ def checkConverterEntries():
#
# Entries that do not need checkProg
addToRC(r'''
-\converter csv lyx "python -tt $$s/scripts/csv2lyx.py $$i $$o" ""
-\converter fen asciichess "python -tt $$s/scripts/fen2ascii.py $$i $$o" ""
-\converter lyx lyx13x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.3 -o $$o $$i" ""
-\converter lyx lyx14x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o $$i" ""
-\converter lyx lyx15x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.5 -o $$o $$i" ""
-\converter lyx lyx16x "python -tt $$s/lyx2lyx/lyx2lyx -V 1.6 -o $$o $$i" ""
-\converter lyx lyx20x "python -tt $$s/lyx2lyx/lyx2lyx -V 2.0 -o $$o $$i" ""
-\converter lyx lyx21x "python -tt $$s/lyx2lyx/lyx2lyx -V 2.1 -o $$o $$i" ""
-\converter lyx lyx22x "python -tt $$s/lyx2lyx/lyx2lyx -V 2.2 -o $$o $$i" ""
-\converter lyx lyx23x "python -tt $$s/lyx2lyx/lyx2lyx -V 2.3 -o $$o $$i" ""
-\converter lyx clyx "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c big5 $$i" ""
-\converter lyx jlyx "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_jp $$i" ""
-\converter lyx klyx "python -tt $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_kr $$i" ""
-\converter clyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c big5 -o $$o $$i" ""
-\converter jlyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp -o $$o $$i" ""
-\converter klyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr -o $$o $$i" ""
-\converter lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py --png" ""
-\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py --ppm" ""
+\converter csv lyx "{python} $$s/scripts/csv2lyx.py $$i $$o" ""
+\converter fen asciichess "{python} $$s/scripts/fen2ascii.py $$i $$o" ""
+\converter lyx lyx13x "{python} $$s/lyx2lyx/lyx2lyx -V 1.3 -o $$o $$i" ""
+\converter lyx lyx14x "{python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o $$i" ""
+\converter lyx lyx15x "{python} $$s/lyx2lyx/lyx2lyx -V 1.5 -o $$o $$i" ""
+\converter lyx lyx16x "{python} $$s/lyx2lyx/lyx2lyx -V 1.6 -o $$o $$i" ""
+\converter lyx lyx20x "{python} $$s/lyx2lyx/lyx2lyx -V 2.0 -o $$o $$i" ""
+\converter lyx lyx21x "{python} $$s/lyx2lyx/lyx2lyx -V 2.1 -o $$o $$i" ""
+\converter lyx lyx22x "{python} $$s/lyx2lyx/lyx2lyx -V 2.2 -o $$o $$i" ""
+\converter lyx lyx23x "{python} $$s/lyx2lyx/lyx2lyx -V 2.3 -o $$o $$i" ""
+\converter lyx clyx "{python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c big5 $$i" ""
+\converter lyx jlyx "{python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_jp $$i" ""
+\converter lyx klyx "{python} $$s/lyx2lyx/lyx2lyx -V 1.4 -o $$o -c euc_kr $$i" ""
+\converter clyx lyx "{python} $$s/lyx2lyx/lyx2lyx -c big5 -o $$o $$i" ""
+\converter jlyx lyx "{python} $$s/lyx2lyx/lyx2lyx -c euc_jp -o $$o $$i" ""
+\converter klyx lyx "{python} $$s/lyx2lyx/lyx2lyx -c euc_kr -o $$o $$i" ""
+\converter lyxpreview png "{python} $$s/scripts/lyxpreview2bitmap.py --png" ""
+\converter lyxpreview ppm "{python} $$s/scripts/lyxpreview2bitmap.py --ppm" ""
''')
@@ -1385,11 +1388,11 @@ def checkOtherEntries():
## FIXME: MAPLE is not used anywhere
# path, MAPLE = checkProg('Maple', ['maple'])
# Add the rest of the entries (no checkProg is required)
- addToRC(r'''\citation_search_view "python -tt $$s/scripts/lyxpaperview.py"''')
- 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"
-\copier pdftex "python -tt $$s/scripts/tex_copy.py $$i $$o $$l"
-\copier program "python -tt $$s/scripts/ext_copy.py $$i $$o"
+ addToRC(r'''\citation_search_view "{python} $$s/scripts/lyxpaperview.py"''')
+ addToRC(r'''\copier fig "{python} $$s/scripts/fig_copy.py $$i $$o"
+\copier pstex "{python} $$s/scripts/tex_copy.py $$i $$o $$l"
+\copier pdftex "{python} $$s/scripts/tex_copy.py $$i $$o $$l"
+\copier program "{python} $$s/scripts/ext_copy.py $$i $$o"
''')
def _checkForClassExtension(x):
@@ -1924,9 +1927,6 @@ def rescanTeXFiles():
if not os.path.isfile(tfscript):
logger.error("configure: error: cannot find TeXFiles.py script")
sys.exit(1)
- interpreter = sys.executable
- if interpreter == '':
- interpreter = "python"
tfp = cmdOutput('"%s" -tt "%s"' % (interpreter, tfscript))
logger.info(tfp)
logger.info("\tdone")
--
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel