blob: 4ccfbc43c3096bd09f7f6da05d0b3943eaeafd17 [file] [log] [blame]
Jan Tattermusch7897ae92017-06-07 22:57:36 +02001# Copyright 2015 gRPC authors.
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +02002#
Jan Tattermusch7897ae92017-06-07 22:57:36 +02003# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +02006#
Jan Tattermusch7897ae92017-06-07 22:57:36 +02007# http://www.apache.org/licenses/LICENSE-2.0
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +02008#
Jan Tattermusch7897ae92017-06-07 22:57:36 +02009# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +020014
15FROM debian:jessie
16
17# Install Git and basic packages.
18RUN apt-get update && apt-get install -y \
19 autoconf \
20 autotools-dev \
21 build-essential \
22 bzip2 \
23 ccache \
24 curl \
25 gcc \
26 gcc-multilib \
27 git \
28 golang \
29 gyp \
30 lcov \
31 libc6 \
32 libc6-dbg \
33 libc6-dev \
34 libgtest-dev \
35 libtool \
36 make \
37 perl \
38 strace \
39 python-dev \
40 python-setuptools \
41 python-yaml \
42 telnet \
43 unzip \
44 wget \
45 zip && apt-get clean
46
47#================
48# Build profiling
49RUN apt-get update && apt-get install -y time && apt-get clean
50
51#====================
52# Python dependencies
53
54# Install dependencies
55
56RUN apt-get update && apt-get install -y \
57 python-all-dev \
58 python3-all-dev \
59 python-pip
60
61# Install Python packages from PyPI
62RUN pip install pip --upgrade
63RUN pip install virtualenv
Mehrdad Afshari9b3c73d2017-03-07 22:10:15 +000064RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +020065
66#================
67# C# dependencies
68
69# Update to a newer version of mono
Matt Kwonga7983182017-06-02 14:02:47 -070070RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
71RUN echo "deb http://download.mono-project.com/repo/debian jessie main" | tee /etc/apt/sources.list.d/mono-official.list
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +020072RUN echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
73RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +020074
75# Install dependencies
76RUN apt-get update && apt-get -y dist-upgrade && apt-get install -y \
77 mono-devel \
78 ca-certificates-mono \
79 nuget \
80 && apt-get clean
81
82RUN nuget update -self
83
84# Install dotnet SDK based on https://www.microsoft.com/net/core#debian
85RUN apt-get update && apt-get install -y curl libunwind8 gettext
Jan Tattermuschc4c95ad2017-04-06 13:20:49 +020086# dotnet-dev-1.0.0-preview2-003131
87RUN curl -sSL -o dotnet100.tar.gz https://go.microsoft.com/fwlink/?LinkID=827530
Jan Tattermuschbe2807d2017-03-09 10:15:41 +010088RUN mkdir -p /opt/dotnet && tar zxf dotnet100.tar.gz -C /opt/dotnet
89# dotnet-dev-1.0.1
90RUN curl -sSL -o dotnet101.tar.gz https://go.microsoft.com/fwlink/?LinkID=843453
91RUN mkdir -p /opt/dotnet && tar zxf dotnet101.tar.gz -C /opt/dotnet
Jan Tattermuscha98a2ad2016-09-09 12:42:32 +020092RUN ln -s /opt/dotnet/dotnet /usr/local/bin
93
94# Trigger the population of the local package cache
95ENV NUGET_XMLDOC_MODE skip
96RUN mkdir warmup \
97 && cd warmup \
98 && dotnet new \
99 && cd .. \
100 && rm -rf warmup
101
102# Prepare ccache
103RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
104RUN ln -s /usr/bin/ccache /usr/local/bin/g++
105RUN ln -s /usr/bin/ccache /usr/local/bin/cc
106RUN ln -s /usr/bin/ccache /usr/local/bin/c++
107RUN ln -s /usr/bin/ccache /usr/local/bin/clang
108RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
109
110
111RUN mkdir /var/local/jenkins
112
113# Define the default command.
114CMD ["bash"]