From aba63d465130f961cb650fd65ca4068b85247195 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Fri, 14 Sep 2018 18:34:43 +0200 Subject: [PATCH] Build Servo --- decision-task.py | 33 ++++++++++++------ servo-build-task.sh | 9 +++++ servo-x86_64-linux.dockerfile | 63 +++++++++++++++++++++++++++++++---- 3 files changed, 88 insertions(+), 17 deletions(-) create mode 100755 servo-build-task.sh diff --git a/decision-task.py b/decision-task.py index 6d96a27826c..602ee934ffc 100644 --- a/decision-task.py +++ b/decision-task.py @@ -4,6 +4,18 @@ import os.path from decisionlib import DecisionTask +# https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/caches +CARGO_CACHE_SCOPES = [ + "docker-worker:cache:cargo-registry-cache", + "docker-worker:cache:cargo-git-cache", +] + +CARGO_CACHE = { + "cargo-registry-cache": "/root/.cargo/registry", + "cargo-git-cache": "/root/.cargo/git", +} + + def main(): decision = DecisionTask( project_name="Taskcluster experimenfts for Servo", # Used in task names @@ -12,25 +24,26 @@ def main(): worker_type="servo-docker-worker", ) + decision.create_task_with_in_tree_dockerfile( + task_name="servo build task", + command="./servo-build-task.sh", + dockerfile=dockerfile("servo-x86_64-linux"), + max_run_time_minutes=60, + scopes=CARGO_CACHE_SCOPES, + cache=CARGO_CACHE, + ) + build_task = decision.create_task_with_in_tree_dockerfile( task_name="build task", command="./build-task.sh", dockerfile=dockerfile("servo-x86_64-linux"), max_run_time_minutes=20, + scopes=CARGO_CACHE_SCOPES, + cache=CARGO_CACHE, artifacts=[ ("/repo/something-rust/executable.gz", "1 week"), ], - - # https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/caches - scopes=[ - "docker-worker:cache:cargo-registry-cache", - "docker-worker:cache:cargo-git-cache", - ], - cache={ - "cargo-registry-cache": "/root/.cargo/registry", - "cargo-git-cache": "/root/.cargo/git", - }, ) decision.create_task( diff --git a/servo-build-task.sh b/servo-build-task.sh new file mode 100755 index 00000000000..1ef49172c84 --- /dev/null +++ b/servo-build-task.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e +set -x + +git clone https://github.com/servo/servo/ +cd servo +git checkout 0a2c61da91e77102ae774075ec4126937a79f038 +./mach build -d diff --git a/servo-x86_64-linux.dockerfile b/servo-x86_64-linux.dockerfile index 3b8edcf2123..df71fc6edbe 100644 --- a/servo-x86_64-linux.dockerfile +++ b/servo-x86_64-linux.dockerfile @@ -1,13 +1,62 @@ FROM ubuntu:bionic-20180821 +ENV \ + # + # Use rustup’s 'cargo' and 'rustc' + PATH="/root/.cargo/bin:${PATH}" \ + # + # SpiderMonkey’s build system fails if $SHELL is unset + SHELL=/bin/dash \ + # + # The 'tzdata' APT package waits for user input on install by default + # https://stackoverflow.com/questions/44331836/apt-get-install-tzdata-noninteractive + DEBIAN_FRONTEND=noninteractive + RUN apt-get update -q && apt-get install -qy --no-install-recommends \ - git \ - curl \ - ca-certificates \ - python2.7 \ - g++ \ + # + # Cloning the repository + git \ + ca-certificates \ + # + # Installing rustup + curl \ + # + # Running mach + python2.7 \ + python-virtualenv \ + virtualenv \ + # + # Multiple C/C++ dependencies built from source + g++ \ + make \ + cmake \ + # + # ANGLE + xorg-dev \ + # + # mozjs (SpiderMonkey) + autoconf2.13 \ + # + # Bindgen (for SpiderMonkey bindings) + clang \ + # + # gstreamer + libglib2.0-dev \ + libgstreamer-plugins-base1.0-dev \ + libgstreamer-plugins-bad1.0-dev \ + libgstreamer1.0-dev \ + # + # OpenSSL + libssl1.0-dev \ + # + # blurz + libdbus-1-dev \ + # + # Skia + libglu1-mesa-dev \ + libbz2-dev \ + # + # && \ - rm -rf /var/lib/apt/lists/* && \ curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none -y -ENV PATH="/root/.cargo/bin:${PATH}"