aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/bootstrap.py
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2018-09-03 16:46:58 +0530
committerManish Goregaokar <manishsmail@gmail.com>2018-09-11 19:34:38 +0530
commit6de148a7e5b03436da238ae8c38d67b9b0221821 (patch)
tree88f000e3186a9ae48b3bb840bd681e8b5cf7abef /python/servo/bootstrap.py
parent10970be612abadc953dd26e2b5d375cd714fa99f (diff)
downloadservo-6de148a7e5b03436da238ae8c38d67b9b0221821.tar.gz
servo-6de148a7e5b03436da238ae8c38d67b9b0221821.zip
Have bootstrap script install trusty g++/clang deps
Diffstat (limited to 'python/servo/bootstrap.py')
-rw-r--r--python/servo/bootstrap.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/python/servo/bootstrap.py b/python/servo/bootstrap.py
index 2bbc3836012..46b2f0f76aa 100644
--- a/python/servo/bootstrap.py
+++ b/python/servo/bootstrap.py
@@ -17,13 +17,43 @@ import servo.packages as packages
from servo.util import extract, download_file, host_triple
+def install_trusty_deps(force):
+ version = str(subprocess.check_output(['gcc', '-dumpversion'])).split('.')
+ gcc = True
+ if int(version[0]) > 4:
+ gcc = False
+ elif int(version[0]) == 4 and int(version[1]) >= 9:
+ gcc = False
+
+ version = str(subprocess.check_output(['clang', '-dumpversion'])).split('.')
+ clang = int(version[0]) < 4
+
+ if gcc:
+ run_as_root(["add-apt-repository", "ppa:ubuntu-toolchain-r/test"], force)
+ run_as_root(["apt-get", "update"])
+ run_as_root(["apt-get", "install", "gcc-4.9", "g++-4.9"], force)
+ run_as_root(['update-alternatives', '--install', '/usr/bin/gcc', 'gcc',
+ '/usr/bin/gcc-4.9', '60', '--slave', '/usr/bin/g++', 'g++',
+ '/usr/bin/g++-4.9'])
+ if clang:
+ run_as_root(["bash", "-c", 'wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -'])
+ run_as_root(["apt-add-repository" "deb http://apt.llvm.org/trusty/ llvm-toolchain-xenial-4.0 main"], force)
+ run_as_root(["apt-get", "update"])
+ run_as_root(["apt-get", "install", "clang-4.0"], force)
+
+ return gcc or clang
+
+
def check_gstreamer_lib():
return subprocess.call(["pkg-config", "gstreamer-1.0 >= 1.12"],
stdout=PIPE, stderr=PIPE) == 0
-def run_as_root(command):
+
+def run_as_root(command, force=False):
if os.geteuid() != 0:
command.insert(0, 'sudo')
+ if force:
+ command += "-y"
return subprocess.call(command)
@@ -111,6 +141,9 @@ def linux(context, force=False):
if not check_gstreamer_lib():
installed_something |= gstreamer(context, force)
+ if context.distro == "Ubuntu" and context.distro_version == "14.04":
+ installed_something |= install_trusty_deps(force)
+
if not installed_something:
print("Dependencies were already installed!")