diff options
-rw-r--r-- | README.md | 6 | ||||
-rwxr-xr-x | mach | 7 | ||||
-rw-r--r-- | python/mach_bootstrap.py | 18 | ||||
-rw-r--r-- | python/servo/bootstrap.py | 16 | ||||
-rw-r--r-- | python/servo/util.py | 2 |
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: @@ -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: |