logger = logging.getLogger('LyX')
logger.addHandler(console)
+def quoteIfSpace(name):
+ " utility function: quote name if it contains spaces "
+ if ' ' in name:
+ return '"' + name + '"'
+ else:
+ return name
+
def writeToFile(filename, lines, append = False):
" utility function: write or append lines to filename "
if append:
pass
-def cmdOutput(cmd, async = False):
+def cmdOutput(cmd, asynchronous = False):
'''utility function: run a command and get its output as a string
cmd: command to run
- async: if False, return whole output as a string, otherwise
+ asynchronous: if False, return whole output as a string, otherwise
return the stdout handle from which the output can be
read (the caller is then responsible for closing it)
'''
pipe = subprocess.Popen(cmd, shell=b, close_fds=b, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, universal_newlines=True)
pipe.stdin.close()
- if async:
+ if asynchronous:
return pipe.stdout
output = pipe.stdout.read()
pipe.stdout.close()
logger.info('Checking for upgrade from previous version.')
parent = os.path.dirname(cwd)
appname = basename[:(-len(version_suffix))]
- for version in ['-2.1', '-2.0', '-1.6' ]:
+ for version in ['-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)
if os.path.isdir( previous ):
logger.info('Found directory "%s".', previous)
copy_tree( previous, cwd, True )
- logger.info('Content copied to directory "%s".', cwd)
+ logger.info('Content copied from directory "%s".', previous)
return
+def checkUpgradeWin():
+ ''' Check for upgrade from previous version '''
+ cwd = os.getcwd()
+ basename = os.path.basename(cwd)
+ if basename != "LyX":
+ return
+ lyxrc = os.path.join(cwd, outfile)
+ if os.path.isfile(lyxrc):
+ return
+ olddir = os.path.join(os.path.dirname(cwd), "LyX2.3")
+ if not os.path.isdir(oldir):
+ return
+ logger.info('Copying ' + olddir + ' into ' + cwd)
+ copy_tree(olddir, cwd, True)
+
+
def createDirectories():
''' Create the build directories if necessary '''
for dir in ['bind', 'clipart', 'doc', 'examples', 'images', 'kbd',
if "PATHEXT" in os.environ:
extlist = extlist + os.environ["PATHEXT"].split(os.pathsep)
global java, perl
+ unquoted_space = re.compile(r'''((?:[^ "']|"[^"]*"|'[^']*')+)''')
for idx in range(len(progs)):
# ac_prog may have options, ac_word is the command name
- ac_prog = progs[idx]
- ac_word = ac_prog.split(' ')[0]
+ ac_prog = progs[idx].replace('"', '\\"')
+ ac_word = unquoted_space.split(progs[idx])[1::2][0].strip('"')
if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '':
continue
if ac_word.endswith('.pl') and perl == '':
PPLATEX = LATEX
if dtl_tools:
# Windows only: DraftDVI
- addToRC(r'''\converter latex dvi2 "%s" "latex"
+ addToRC(r'''\converter latex dvi2 "%s" "latex,hyperref-driver=dvips"
\converter dvi2 dvi "python -tt $$s/scripts/clean_dvi.py $$i $$o" ""''' % PPLATEX)
else:
- addToRC(r'\converter latex dvi "%s" "latex"' % PPLATEX)
+ addToRC(r'\converter latex dvi "%s" "latex,hyperref-driver=dvips"' % PPLATEX)
# no latex
if LATEX != '':
# Check if latex is usable
in_binary_dir = os.path.join(lyx_binary_dir, 'tex2lyx')
in_binary_dir = os.path.abspath(in_binary_dir).replace('\\', '/')
- path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [in_binary_subdir, in_binary_subdir + version_suffix, in_binary_dir, in_binary_dir + version_suffix, 'tex2lyx' + version_suffix, 'tex2lyx'],
+ path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [quoteIfSpace(in_binary_subdir), quoteIfSpace(in_binary_subdir + version_suffix), quoteIfSpace(in_binary_dir), quoteIfSpace(in_binary_dir + version_suffix), 'tex2lyx' + version_suffix, 'tex2lyx'],
rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" ""
\converter latexclipboard lyx "%% -fixedenc utf8 -f $$i $$o" ""
\converter literate lyx "%% -n -m noweb -f $$i $$o" ""
-\converter sweave lyx "%% -n -m sweave -f $$i $$o" "needauth"
-\converter knitr lyx "%% -n -m knitr -f $$i $$o" "needauth"'''], not_found = 'tex2lyx')
+\converter sweave lyx "%% -n -m sweave -f $$i $$o" ""
+\converter knitr lyx "%% -n -m knitr -f $$i $$o" ""'''], not_found = 'tex2lyx')
if path == '':
logger.warning("Failed to find tex2lyx on your system.")
setEnviron()
if sys.platform == 'darwin' and len(version_suffix) > 0:
checkUpgrade()
+ if os.name == 'nt':
+ checkUpgradeWin()
createDirectories()
dtl_tools = checkDTLtools()
## Write the first part of outfile