Skip to content

Commit

Permalink
Bug 1346940 - Update CI to LLVM 4.0 r=franziskus
Browse files Browse the repository at this point in the history
Differential Revision: https://nss-review.dev.mozaws.net/D249

--HG--
extra : amend_source : 97df8df992f31b30aeb032dc5b4456e43fce1b52
  • Loading branch information
Tim Taubert committed Mar 20, 2017
1 parent be72de4 commit e0ffe74
Show file tree
Hide file tree
Showing 5 changed files with 127 additions and 11 deletions.
30 changes: 30 additions & 0 deletions automation/taskcluster/docker-clang-3.9/Dockerfile
@@ -0,0 +1,30 @@
FROM ubuntu:16.04
MAINTAINER Tim Taubert <ttaubert@mozilla.com>

RUN useradd -d /home/worker -s /bin/bash -m worker
WORKDIR /home/worker

# Add build and test scripts.
ADD bin /home/worker/bin
RUN chmod +x /home/worker/bin/*

# Install dependencies.
ADD setup.sh /tmp/setup.sh
RUN bash /tmp/setup.sh

# Change user.
USER worker

# Env variables.
ENV HOME /home/worker
ENV SHELL /bin/bash
ENV USER worker
ENV LOGNAME worker
ENV HOSTNAME taskcluster-worker
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV HOST localhost
ENV DOMSUF localdomain

# Set a default command for debugging.
CMD ["/bin/bash", "--login"]
20 changes: 20 additions & 0 deletions automation/taskcluster/docker-clang-3.9/bin/checkout.sh
@@ -0,0 +1,20 @@
#!/usr/bin/env bash

set -v -e -x

if [ $(id -u) = 0 ]; then
# Drop privileges by re-running this script.
exec su worker $0
fi

# Default values for testing.
REVISION=${NSS_HEAD_REVISION:-default}
REPOSITORY=${NSS_HEAD_REPOSITORY:-https://hg.mozilla.org/projects/nss}

# Clone NSS.
for i in 0 2 5; do
sleep $i
hg clone -r $REVISION $REPOSITORY nss && exit 0
rm -rf nss
done
exit 1
45 changes: 45 additions & 0 deletions automation/taskcluster/docker-clang-3.9/setup.sh
@@ -0,0 +1,45 @@
#!/usr/bin/env bash

set -v -e -x

# Update packages.
export DEBIAN_FRONTEND=noninteractive
apt-get -y update && apt-get -y upgrade

# Need this to add keys for PPAs below.
apt-get install -y --no-install-recommends apt-utils

apt_packages=()
apt_packages+=('ca-certificates')
apt_packages+=('curl')
apt_packages+=('xz-utils')

# Latest Mercurial.
apt_packages+=('mercurial')
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 41BD8711B1F0EC2B0D85B91CF59CE3A8323293EE
echo "deb http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu xenial main" > /etc/apt/sources.list.d/mercurial.list

# Install packages.
apt-get -y update
apt-get install -y --no-install-recommends ${apt_packages[@]}

# Download clang.
curl -LO http://releases.llvm.org/3.9.1/clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz
curl -LO http://releases.llvm.org/3.9.1/clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz.sig
# Verify the signature.
gpg --keyserver pool.sks-keyservers.net --recv-keys B6C8F98282B944E3B0D5C2530FC3042E345AD05D
gpg --verify *.tar.xz.sig
# Install into /usr/local/.
tar xJvf *.tar.xz -C /usr/local --strip-components=1
# Cleanup.
rm *.tar.xz*

locale-gen en_US.UTF-8
dpkg-reconfigure locales

# Cleanup.
rm -rf ~/.ccache ~/.cache
apt-get autoremove -y
apt-get clean
apt-get autoclean
rm $0
13 changes: 10 additions & 3 deletions automation/taskcluster/docker/setup.sh
Expand Up @@ -49,9 +49,16 @@ apt-get install -y --no-install-recommends ${apt_packages[@]}
# 32-bit builds
ln -s /usr/include/x86_64-linux-gnu/zconf.h /usr/include

# Install clang-3.9 into /usr/local/.
# FIXME: verify signature
curl -L http://releases.llvm.org/3.9.1/clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz | tar xJv -C /usr/local --strip-components=1
# Download clang.
curl -LO http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
curl -LO http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz.sig
# Verify the signature.
gpg --keyserver pool.sks-keyservers.net --recv-keys B6C8F98282B944E3B0D5C2530FC3042E345AD05D
gpg --verify *.tar.xz.sig
# Install into /usr/local/.
tar xJvf *.tar.xz -C /usr/local --strip-components=1
# Cleanup.
rm *.tar.xz*

# Install latest Rust (stable).
su worker -c "curl https://sh.rustup.rs -sSf | sh -s -- -y"
Expand Down
30 changes: 22 additions & 8 deletions automation/taskcluster/graph/src/extend.js
Expand Up @@ -5,8 +5,20 @@
import merge from "./merge";
import * as queue from "./queue";

const LINUX_IMAGE = {name: "linux", path: "automation/taskcluster/docker"};
const FUZZ_IMAGE = {name: "fuzz", path: "automation/taskcluster/docker-fuzz"};
const LINUX_IMAGE = {
name: "linux",
path: "automation/taskcluster/docker"
};

const LINUX_CLANG39_IMAGE = {
name: "linux-clang-3.9",
path: "automation/taskcluster/docker-clang-3.9"
};

const FUZZ_IMAGE = {
name: "fuzz",
path: "automation/taskcluster/docker-fuzz"
};

const WINDOWS_CHECKOUT_CMD =
"bash -c \"hg clone -r $NSS_HEAD_REVISION $NSS_HEAD_REPOSITORY nss || " +
Expand Down Expand Up @@ -125,7 +137,8 @@ export default async function main() {
},
platform: "linux64",
collection: "asan",
image: LINUX_IMAGE
image: LINUX_IMAGE,
features: ["allowPtrace"],
});

await scheduleWindows("Windows 2012 64 (opt)", {
Expand Down Expand Up @@ -221,12 +234,12 @@ async function scheduleLinux(name, base) {
// Extra builds.
let extra_base = merge({group: "Builds"}, build_base);
queue.scheduleTask(merge(extra_base, {
name: `${name} w/ clang-3.9`,
name: `${name} w/ clang-4.0`,
env: {
CC: "clang",
CCC: "clang++",
},
symbol: "clang-3.9"
symbol: "clang-4.0"
}));

queue.scheduleTask(merge(extra_base, {
Expand Down Expand Up @@ -563,14 +576,14 @@ function scheduleTests(task_build, task_cert, test_base) {

async function scheduleTools() {
let base = {
image: LINUX_IMAGE,
platform: "nss-tools",
kind: "test"
};

queue.scheduleTask(merge(base, {
symbol: "clang-format-3.9",
name: "clang-format-3.9",
image: LINUX_CLANG39_IMAGE,
command: [
"/bin/bash",
"-c",
Expand All @@ -579,8 +592,9 @@ async function scheduleTools() {
}));

queue.scheduleTask(merge(base, {
symbol: "scan-build-3.9",
name: "scan-build-3.9",
symbol: "scan-build-4.0",
name: "scan-build-4.0",
image: LINUX_IMAGE,
env: {
USE_64: "1",
CC: "clang",
Expand Down

0 comments on commit e0ffe74

Please sign in to comment.