configure.py: Check path accessibility before call to os.path.isfile.

If you have an unmounted dir, ac_dir, in your PATH, the call to

os.path.isfile( os.path.join(ac_dir, ac_word + ext) )

hangs. This is probably a python bug, but the result of configure.py
hanging and LyX freezing is really bad, hence this workaround.

According to the python docs, MacOS doesn't provide os.access();
the hasattr protection is used for this reason.
This commit is contained in:
Julien Rioux 2013-02-04 15:45:14 +01:00
parent ebddec15de
commit ef04549d8d

View File

@ -198,6 +198,8 @@ def checkProg(description, progs, rc_entry = [], path = [], not_found = ''):
if "PATHEXT" in os.environ: if "PATHEXT" in os.environ:
extlist = extlist + os.environ["PATHEXT"].split(os.pathsep) extlist = extlist + os.environ["PATHEXT"].split(os.pathsep)
for ac_dir in path: for ac_dir in path:
if hasattr(os, "access") and not os.access(ac_dir, os.F_OK):
continue
for ext in extlist: for ext in extlist:
if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ): if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ):
logger.info(msg + ' yes') logger.info(msg + ' yes')
@ -252,6 +254,8 @@ def checkProgAlternatives(description, progs, rc_entry = [], alt_rc_entry = [],
extlist = extlist + os.environ["PATHEXT"].split(os.pathsep) extlist = extlist + os.environ["PATHEXT"].split(os.pathsep)
found_alt = False found_alt = False
for ac_dir in path: for ac_dir in path:
if hasattr(os, "access") and not os.access(ac_dir, os.F_OK):
continue
for ext in extlist: for ext in extlist:
if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ): if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ):
logger.info(msg + ' yes') logger.info(msg + ' yes')