#! /usr/bin/python3
-# -*- coding: utf-8 -*-
#
# file configure.py
# This file is part of LyX, the document processor.
# \author Bo Peng
# Full author contact details are available in file CREDITS.
-from __future__ import print_function
import glob, logging, os, errno, re, shutil, subprocess, sys, stat
-if sys.version_info[0] < 3:
- import codecs
- open = codecs.open
-
-
# set up logging
logging.basicConfig(level = logging.DEBUG,
format = '%(levelname)s: %(message)s', # ignore application name
'''
if os.name == 'nt':
b = False
- if sys.version_info[0] < 3:
- cmd = 'cmd /d /c pushd ' + shortPath(os.getcwdu()) + '&' + cmd
- else:
- cmd = 'cmd /d /c pushd ' + shortPath(os.getcwd()) + '&' + cmd
+ cmd = 'cmd /d /c pushd ' + shortPath(os.getcwd()) + '&' + cmd
else:
b = True
pipe = subprocess.Popen(cmd, shell=b, close_fds=b, stdin=subprocess.PIPE,
names = os.listdir(src)
except os.error as oserror:
(errno, errstr) = oserror.args
- raise FileError("error listing files in '%s': %s" % (src, errstr))
+ raise FileError(f"error listing files in '{src}': {errstr}")
if not os.path.isdir(dst):
os.makedirs(dst)
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 level == 0 and name in [ 'cache', 'configure.log', 'chkconfig.ltx' ]:
+ logger.info("Skip copy of %s", src_name)
elif os.path.isdir(src_name):
outputs.extend(
copy_tree(src_name, dst_name, preserve_symlinks, level=(level + 1)))
logger.info('Checking for upgrade from previous version.')
parent = os.path.dirname(cwd)
appname = basename[:(-len(version_suffix))]
- for version in ['-2.3', '-2.2', '-2.1', '-2.0', '-1.6' ]:
+ for version in ['-2.4', '-2.3', '-2.2', '-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)
fd, tmpfname = mkstemp(suffix='.ltx')
if os.name == 'nt':
encoding = sys.getfilesystemencoding()
- if sys.version_info[0] < 3:
- inpname = shortPath(unicode(tmpfname, encoding)).replace('\\', '/')
- else:
- inpname = shortPath(tmpfname).replace('\\', '/')
+ inpname = shortPath(tmpfname).replace('\\', '/')
else:
inpname = cmdOutput('cygpath -m ' + tmpfname)
logname = os.path.basename(re.sub("(?i).ltx", ".log", inpname))
""" 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
+ import winreg
potential_keys_64b = ["SOFTWARE\\JavaSoft\\Java Runtime Environment", "SOFTWARE\\JavaSoft\\Java Development Kit",
"SOFTWARE\\JavaSoft\\JDK", "SOFTWARE\\JavaSoft\\JRE"]
return 'inkscape-binary'
elif os.name != 'nt':
return 'inkscape'
- if sys.version_info[0] < 3:
- import _winreg as winreg
- else:
- import winreg
+ import winreg
aReg = winreg.ConnectRegistry(None, winreg.HKEY_CLASSES_ROOT)
try:
aKey = winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
return valentry.split(',')[0]
else:
return 'inkscape'
- except EnvironmentError:
+ except OSError:
try:
aKey = winreg.OpenKey(aReg, r"inkscape.SVG\shell\open\command")
val = winreg.QueryValueEx(aKey, "")
return str(val[0]).split('"')[1]
- except EnvironmentError:
+ except OSError:
try:
aKey = winreg.OpenKey(aReg, r"Applications\inkscape.exe\shell\open\command")
val = winreg.QueryValueEx(aKey, "")
return str(val[0]).split('"')[1]
- except EnvironmentError:
+ except OSError:
return 'inkscape'
\Format lyx20x 20.lyx "LyX 2.0.x" "" "" "" "document" ""
\Format lyx21x 21.lyx "LyX 2.1.x" "" "" "" "document" ""
\Format lyx22x 22.lyx "LyX 2.2.x" "" "" "" "document" ""
-\Format lyx23x 23.lyx "LyX 2.3.x" "" "" "" "document,menu=export" ""
+\Format lyx23x 23.lyx "LyX 2.3.x" "" "" "" "document" ""
+\Format lyx24x 24.lyx "LyX 2.4.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" ""
\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 lyx24x "$${python} $$s/lyx2lyx/lyx2lyx -V 2.4 -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" ""
q = re.compile('\\s*#\\s*\\\\DeclareCategory{(.*)}\\s*$')
classdeclaration = ""
categorydeclaration = '""'
- for line in open(file, 'r', encoding='utf8').readlines():
+ for line in open(file, encoding='utf8').readlines():
res = p.match(line)
qres = q.match(line)
if res is not None:
decline = ""
catline = ""
try:
- for line in open(file, 'r', encoding='utf8').readlines():
+ for line in open(file, encoding='utf8').readlines():
if not empty.match(line) and line[0] != '#'[0]:
if decline == "":
logger.warning(r"Failed to find valid \Declare line "
# A class, but no category declaration. Just break.
break
if declare.match(line) is not None:
- decline = "\\TestDocClass{%s}{%s}" % (classname, line[1:].strip())
+ decline = f"\\TestDocClass{{{classname}}}{{{line[1:].strip()}}}"
testclasses.append(decline)
elif category.match(line) is not None:
catline = ("\\DeclareCategory{%s}{%s}"
readingDescription = False
descLines = []
- for line in open(file, 'r', encoding='utf8').readlines():
+ for line in open(file, encoding='utf8').readlines():
if readingDescription:
res = redend.match(line)
if res != None:
readingDescription = False
descLines = []
- for line in open(file, 'r', encoding='utf8').readlines():
+ for line in open(file, encoding='utf8').readlines():
if readingDescription:
res = redend.match(line)
if res != None:
interpreter = sys.executable
if interpreter == '':
interpreter = "python"
- tfp = cmdOutput('"%s" -tt "%s"' % (interpreter, tfscript))
+ tfp = cmdOutput(f'"{interpreter}" "{tfscript}"')
logger.info(tfp)
logger.info("\tdone")
lyx_keep_temps = False
version_suffix = ''
lyx_binary_dir = ''
- logger.info("+Running LyX configure with Python %s.%s.%s", sys.version_info[0], sys.version_info[1], sys.version_info[2])
+ python_version = ".".join([str(n) for n in sys.version_info[:3]])
+ logger.info("+Running LyX configure with Python %s", python_version)
## Parse the command line
for op in sys.argv[1:]: # default shell/for list is $*, the options
if op in [ '-help', '--help', '-h' ]: