aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md6
-rwxr-xr-xmach7
-rw-r--r--python/mach_bootstrap.py18
-rw-r--r--python/servo/bootstrap.py16
-rw-r--r--python/servo/util.py2
5 files changed, 40 insertions, 9 deletions
diff --git a/README.md b/README.md
index 16d2533ebc0..20e60b885c1 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@ If you've already partially compiled servo but forgot to do this step, run `./ma
#### On Debian-based Linuxes
-Please run `sudo apt install python-virtualenv build-essential libssl-dev libffi-dev python-dev` followed by `./mach bootstrap`.
+Please run `./mach bootstrap`.
If this doesn't work, file a bug, and, run the commands below:
@@ -103,7 +103,7 @@ If `virtualenv` does not exist, try `python-virtualenv`.
#### On Fedora
-Please run `sudo dnf install python2-virtualenv gcc libffi-devel python-devel openssl-devel` followed by `./mach bootstrap`.
+Please run `./mach bootstrap`.
If this doesn't work, file a bug, and, run the commands below:
@@ -118,7 +118,7 @@ sudo dnf install curl libtool gcc-c++ libXi-devel \
#### On CentOS
-Please run `sudo yum install python2-virtualenv gcc libffi-devel python-devel openssl-devel` followed by `./mach bootstrap`.
+Please run `./mach bootstrap`.
If this doesn't work, file a bug, and, run the commands below:
diff --git a/mach b/mach
index c328f6b08fa..c9ae9fc2b40 100755
--- a/mach
+++ b/mach
@@ -20,8 +20,11 @@ def main(args):
topdir = os.path.abspath(os.path.dirname(sys.argv[0]))
sys.path.insert(0, os.path.join(topdir, "python"))
import mach_bootstrap
- mach = mach_bootstrap.bootstrap(topdir)
- sys.exit(mach.run(sys.argv[1:]))
+ if len(sys.argv) > 1 and sys.argv[1] == "bootstrap":
+ sys.exit(mach_bootstrap.bootstrap_command_only(topdir))
+ else:
+ mach = mach_bootstrap.bootstrap(topdir)
+ sys.exit(mach.run(sys.argv[1:]))
if __name__ == '__main__':
diff --git a/python/mach_bootstrap.py b/python/mach_bootstrap.py
index 2db4bf01c30..3435b39f06a 100644
--- a/python/mach_bootstrap.py
+++ b/python/mach_bootstrap.py
@@ -224,11 +224,29 @@ def _is_windows():
return sys.platform == 'win32'
+class DummyContext(object):
+ pass
+
+
+def bootstrap_command_only(topdir):
+ from servo.bootstrap import bootstrap
+
+ context = DummyContext()
+ context.topdir = topdir
+ force = False
+ if len(sys.argv) == 3 and sys.argv[2] == "-f":
+ force = True
+ bootstrap(context, force)
+ return 0
+
+
def bootstrap(topdir):
_ensure_case_insensitive_if_windows()
topdir = os.path.abspath(topdir)
+ len(sys.argv) > 1 and sys.argv[1] == "bootstrap"
+
# We don't support paths with Unicode characters for now
# https://github.com/servo/servo/issues/10002
try:
diff --git a/python/servo/bootstrap.py b/python/servo/bootstrap.py
index c2c046d2609..2bbc3836012 100644
--- a/python/servo/bootstrap.py
+++ b/python/servo/bootstrap.py
@@ -49,11 +49,16 @@ def install_linux_deps(context, pkgs_ubuntu, pkgs_fedora, force):
command.append('-y')
print("Installing missing dependencies...")
run_as_root(command + pkgs)
+ return True
+ return False
+
def install_salt_dependencies(context, force):
pkgs_apt = ['build-essential', 'libssl-dev', 'libffi-dev', 'python-dev']
pkgs_dnf = ['gcc', 'libffi-devel', 'python-devel', 'openssl-devel']
- install_linux_deps(context, pkgs_apt, pkgs_dnf, force)
+ if not install_linux_deps(context, pkgs_apt, pkgs_dnf, force):
+ print("Dependencies are already installed")
+
def gstreamer(context, force=False):
cur = os.curdir
@@ -62,6 +67,9 @@ def gstreamer(context, force=False):
os.chdir(gstdir)
subprocess.call(["bash", "gstreamer.sh"])
os.chdir(cur)
+ return True
+ return False
+
def linux(context, force=False):
# Please keep these in sync with the packages in README.md
@@ -98,11 +106,13 @@ def linux(context, force=False):
else:
pkgs_apt += ["libssl1.0-dev"]
- install_linux_deps(context, pkgs_apt, pkgs_dnf, force)
+ installed_something = install_linux_deps(context, pkgs_apt, pkgs_dnf, force)
if not check_gstreamer_lib():
- gstreamer(context, force)
+ installed_something |= gstreamer(context, force)
+ if not installed_something:
+ print("Dependencies were already installed!")
def salt(context, force=False):
diff --git a/python/servo/util.py b/python/servo/util.py
index d71cffe27da..c093978e631 100644
--- a/python/servo/util.py
+++ b/python/servo/util.py
@@ -20,7 +20,6 @@ import StringIO
import sys
import zipfile
import urllib2
-import certifi
try:
@@ -30,6 +29,7 @@ except ImportError:
# The cafile parameter was added in 2.7.9
if HAS_SNI and sys.version_info >= (2, 7, 9):
+ import certifi
STATIC_RUST_LANG_ORG_DIST = "https://static.rust-lang.org/dist"
URLOPEN_KWARGS = {"cafile": certifi.where()}
else: