From bcbfc883f4916ec1fb4a15463df4830c380100d7 Mon Sep 17 00:00:00 2001 From: Chris Manghane Date: Wed, 1 Oct 2014 11:57:02 -0700 Subject: [PATCH] dashboard: add linux-amd64-clang builder. Fixes golang/go#8805. LGTM=bradfitz R=bradfitz CC=golang-codereviews https://golang.org/cl/152790043 --- dashboard/coordinator/main.go | 3 +++ dashboard/env/linux-x86-clang/Dockerfile | 20 +++++++++++++++++++ dashboard/env/linux-x86-clang/Makefile | 15 ++++++++++++++ .../scripts/build-go-builder.sh | 20 +++++++++++++++++++ .../scripts/install-apt-deps.sh | 19 ++++++++++++++++++ .../linux-x86-clang/sources/clang-deps.list | 3 +++ 6 files changed, 80 insertions(+) create mode 100644 dashboard/env/linux-x86-clang/Dockerfile create mode 100644 dashboard/env/linux-x86-clang/Makefile create mode 100755 dashboard/env/linux-x86-clang/scripts/build-go-builder.sh create mode 100755 dashboard/env/linux-x86-clang/scripts/install-apt-deps.sh create mode 100644 dashboard/env/linux-x86-clang/sources/clang-deps.list diff --git a/dashboard/coordinator/main.go b/dashboard/coordinator/main.go index 107443dd..5d7b6b5c 100644 --- a/dashboard/coordinator/main.go +++ b/dashboard/coordinator/main.go @@ -52,6 +52,7 @@ type imageInfo struct { var images = map[string]*imageInfo{ "gobuilders/linux-x86-base": {url: "https://storage.googleapis.com/go-builder-data/docker-linux.base.tar.gz"}, + "gobuilders/linux-x86-clang": {url: "http://storage.googleapis.com/go-builder-data/docker-linux.clang.tar.gz"}, "gobuilders/linux-x86-gccgo": {url: "https://storage.googleapis.com/go-builder-data/docker-linux.gccgo.tar.gz"}, "gobuilders/linux-x86-nacl": {url: "https://storage.googleapis.com/go-builder-data/docker-linux.nacl.tar.gz"}, "gobuilders/linux-x86-sid": {url: "https://storage.googleapis.com/go-builder-data/docker-linux.sid.tar.gz"}, @@ -87,6 +88,8 @@ func main() { }) addBuilder(buildConfig{name: "linux-386-sid", image: "gobuilders/linux-x86-sid"}) addBuilder(buildConfig{name: "linux-amd64-sid", image: "gobuilders/linux-x86-sid"}) + addBuilder(buildConfig{name: "linux-386-clang", image: "gobuilders/linux-x86-clang"}) + addBuilder(buildConfig{name: "linux-amd64-clang", image: "gobuilders/linux-x86-clang"}) if (*just != "") != (*rev != "") { log.Fatalf("--just and --rev must be used together") diff --git a/dashboard/env/linux-x86-clang/Dockerfile b/dashboard/env/linux-x86-clang/Dockerfile new file mode 100644 index 00000000..296cd53b --- /dev/null +++ b/dashboard/env/linux-x86-clang/Dockerfile @@ -0,0 +1,20 @@ +# Copyright 2014 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# gobuilders/linux-x86-clang for building with clang instead of gcc. + +FROM debian:wheezy +MAINTAINER golang-dev + +ENV DEBIAN_FRONTEND noninteractive + +ADD /sources/clang-deps.list /etc/apt/sources.list.d/ + +ADD /scripts/install-apt-deps.sh /scripts/ +RUN /scripts/install-apt-deps.sh + +ADD /scripts/build-go-builder.sh /scripts/ +RUN GO_REV=073fc578434b BUILDER_REV=8845ca94a310 /scripts/build-go-builder.sh && test -f /usr/local/bin/builder + +ENV CC /usr/bin/clang \ No newline at end of file diff --git a/dashboard/env/linux-x86-clang/Makefile b/dashboard/env/linux-x86-clang/Makefile new file mode 100644 index 00000000..4a9ae8a5 --- /dev/null +++ b/dashboard/env/linux-x86-clang/Makefile @@ -0,0 +1,15 @@ +# Copyright 2014 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +docker: Dockerfile + docker build -t gobuilders/linux-x86-clang . + +docker-linux.clang.tar.gz: docker + docker save gobuilders/linux-x86-clang | gzip | (cd ../../coordinator/buildongce && go run create.go --write_object=go-builder-data/docker-linux.clang.tar.gz) + +check: docker + docker run gobuilders/linux-x86-clang /usr/local/bin/builder -rev=fa76e8393654 -buildroot=/ -v -report=false linux-amd64-temp + +check32: docker + docker run gobuilders/linux-x86-clang /usr/local/bin/builder -rev=fa76e8393654 -buildroot=/ -v -report=false linux-386-temp diff --git a/dashboard/env/linux-x86-clang/scripts/build-go-builder.sh b/dashboard/env/linux-x86-clang/scripts/build-go-builder.sh new file mode 100755 index 00000000..1448fc56 --- /dev/null +++ b/dashboard/env/linux-x86-clang/scripts/build-go-builder.sh @@ -0,0 +1,20 @@ +set -ex + +export GOPATH=/gopath +export GOROOT=/goroot +PREFIX=/usr/local +: ${GO_REV:?"need to be set to the golang repo revision used to build the builder."} +: ${BUILDER_REV:?"need to be set to the go.tools repo revision for the builder."} + +mkdir -p $GOROOT +curl -s https://storage.googleapis.com/gobuilder/go-snap.tar.gz | tar x --no-same-owner -zv -C $GOROOT +(cd $GOROOT/src && hg pull -r $GO_REV -u && find && ./make.bash) + +GO_TOOLS=$GOPATH/src/code.google.com/p/go.tools +mkdir -p $GO_TOOLS +curl -s https://storage.googleapis.com/gobuilder/go.tools-snap.tar.gz | tar x --no-same-owner -zv -C $GO_TOOLS + +mkdir -p $PREFIX/bin +(cd $GO_TOOLS && hg pull -r $BUILDER_REV -u && GOBIN=$PREFIX/bin /goroot/bin/go install code.google.com/p/go.tools/dashboard/builder) + +rm -fR $GOROOT/bin $GOROOT/pkg $GOPATH diff --git a/dashboard/env/linux-x86-clang/scripts/install-apt-deps.sh b/dashboard/env/linux-x86-clang/scripts/install-apt-deps.sh new file mode 100755 index 00000000..5e95edf4 --- /dev/null +++ b/dashboard/env/linux-x86-clang/scripts/install-apt-deps.sh @@ -0,0 +1,19 @@ +set -ex + +apt-get update +# For running curl to get the hg starter tarballs (faster than hg clone). +apt-get install -y --no-install-recommends curl ca-certificates +# Optionally used by some net/http tests: +apt-get install -y --no-install-recommends strace +# For building Go's bootstrap 'dist' prog +apt-get install -y --no-install-recommends wget +wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | apt-key add - +apt-get update +apt-get install -y --no-install-recommends clang-3.5 +# TODO(cmang): move these into a 386 image that derives from this one. +apt-get install -y --no-install-recommends libc6-dev-i386 +# For interacting with the Go source & subrepos: +apt-get install -y --no-install-recommends mercurial git-core + +apt-get clean +rm -fr /var/lib/apt/lists diff --git a/dashboard/env/linux-x86-clang/sources/clang-deps.list b/dashboard/env/linux-x86-clang/sources/clang-deps.list new file mode 100644 index 00000000..eb3e244a --- /dev/null +++ b/dashboard/env/linux-x86-clang/sources/clang-deps.list @@ -0,0 +1,3 @@ +# The debian sources for stable clang builds, taken from http://llvm.org/apt/ +deb http://llvm.org/apt/wheezy/ llvm-toolchain-wheezy main +deb-src http://llvm.org/apt/wheezy/ llvm-toolchain-wheezy main \ No newline at end of file