Skip to content

Commit

Permalink
mach_bootstrap: Don't get confused by interrupts
Browse files Browse the repository at this point in the history
When mach_bootstrap got interrupted while it's setting up virtualenv or
calling out to pip, it wouldn't repeat that step on subsequent runs, and
mach fails because its environment isn't set up properly or dependencies
are missing.

So now we re-run virtualenv if activate_this.py doesn't exist, and only
create the marker file for required packages after pip has returned
successfully.
  • Loading branch information
ben0x539 committed Nov 5, 2015
1 parent 8b030c5 commit a4fa004
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions python/mach_bootstrap.py
Expand Up @@ -91,7 +91,8 @@ def _activate_virtualenv(topdir):
if python is None:
sys.exit("Python is not installed. Please install it prior to running mach.")

if not os.path.exists(virtualenv_path):
activate_path = os.path.join(virtualenv_path, "bin", "activate_this.py")
if not (os.path.exists(virtualenv_path) and os.path.exists(activate_path)):
virtualenv = _get_exec(*VIRTUALENV_NAMES)
if virtualenv is None:
sys.exit("Python virtualenv is not installed. Please install it prior to running mach.")
Expand All @@ -101,7 +102,6 @@ def _activate_virtualenv(topdir):
except (subprocess.CalledProcessError, OSError):
sys.exit("Python virtualenv failed to execute properly.")

activate_path = os.path.join(virtualenv_path, "bin", "activate_this.py")
execfile(activate_path, dict(__file__=activate_path))

# TODO: Right now, we iteratively install all the requirements by invoking
Expand All @@ -123,7 +123,7 @@ def _activate_virtualenv(topdir):
if os.path.getmtime(req_path) + 10 < os.path.getmtime(marker_path):
continue
except OSError:
open(marker_path, 'w').close()
pass

pip = _get_exec(*PIP_NAMES)
if pip is None:
Expand All @@ -134,7 +134,7 @@ def _activate_virtualenv(topdir):
except (subprocess.CalledProcessError, OSError):
sys.exit("Pip failed to execute properly.")

os.utime(marker_path, None)
open(marker_path, 'w').close()


def bootstrap(topdir):
Expand Down

0 comments on commit a4fa004

Please sign in to comment.