blob: fd01c242a1095e65348e70558594232d3a57d529 [file] [log] [blame]
James E. King, IIIb66b66f2017-08-31 18:07:40 -07001# Licensed under the Apache License, Version 2.0 (the "License");
2# you may not use this file except in compliance with the License.
3# You may obtain a copy of the License at
4#
5# http://www.apache.org/licenses/LICENSE-2.0
6#
7# Unless required by applicable law or agreed to in writing, software
8# distributed under the License is distributed on an "AS IS" BASIS,
9# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10# See the License for the specific language governing permissions and
11# limitations under the License.
12
13# Apache Thrift Docker build environment for Ubuntu Xenial
14
15FROM buildpack-deps:xenial-scm
16MAINTAINER Apache Thrift <dev@thrift.apache.org>
17
18ENV DEBIAN_FRONTEND noninteractive
19
20# Consider using mirror nearby when building locally
21# TODO: Provide option via --build-arg=...
22# RUN sed -i /etc/apt/sources.list -e 's!http://archive.ubuntu.com/ubuntu/!http://your/mirror/!g'
23
24# _
25# __ _ _ __ | |_ _ __ ___ _ __ ___ ___
26# / _` | '_ \| __| | '__/ _ \ '_ \ / _ \/ __|
27# | (_| | |_) | |_ | | | __/ |_) | (_) \__ \
28# \__,_| .__/ \__| |_| \___| .__/ \___/|___/
29# |_| |_|
30#
31
32RUN apt-get update && apt-get install -y --no-install-recommends apt apt-transport-https curl wget apt-utils
33
James E. King, IIIf4543692017-09-01 05:23:29 -070034# csharp (mono)
James E. King, IIIb66b66f2017-08-31 18:07:40 -070035RUN echo "deb http://download.mono-project.com/repo/debian xenial main" | tee /etc/apt/sources.list.d/mono.list && \
36 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A6A19B38D3D831EF
37
38# D
39RUN wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list && \
40 apt-get update && apt-get -y --allow-unauthenticated install --reinstall d-apt-keyring
41
42# Dart
43RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
44 curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \
45 sed -i /etc/apt/sources.list.d/dart_stable.list -e 's/https:/http:/g'
46
47# dotnet (core)
48RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \
49 echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list
50
51# OCaml - may not be necessary, skip for now
52#RUN echo 'deb http://ppa.launchpad.net/avsm/ppa/ubuntu xenial main' > /etc/apt/sources.list.d/avsm-official-ocaml.list && \
53# gpg --keyserver keyserver.ubuntu.com --recv 61707B09 && \
54# gpg --export --armor 61707B09 | apt-key add -
55
56# node.js (this step runs apt-get update internally)
57RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
58
59# install general dependencies
60RUN apt-get install -y --no-install-recommends \
61`# General dependencies` \
James E. King, IIIf4543692017-09-01 05:23:29 -070062 bash-completion \
James E. King, IIIb66b66f2017-08-31 18:07:40 -070063 bison \
64 build-essential \
65 clang \
66 cmake \
67 debhelper \
68 flex \
69 ninja-build \
70 pkg-config \
71 vim
72
73# _
74# | | __ _ _ __ __ _ _ _ __ _ __ _ ___ ___
75# | |/ _` | '_ \ / _` | | | |/ _` |/ _` |/ _ \/ __|
76# | | (_| | | | | (_| | |_| | (_| | (_| | __/\__ \
77# |_|\__,_|_| |_|\__, |\__,_|\__,_|\__, |\___||___/
78# |___/ |___/
79
80RUN apt-get install -y --no-install-recommends \
81`# C++ dependencies` \
82 libboost-dev \
83 libboost-filesystem-dev \
84 libboost-program-options-dev \
85 libboost-system-dev \
86 libboost-test-dev \
87 libboost-thread-dev \
88 libevent-dev \
89 libssl-dev \
90 qt5-default \
91 qtbase5-dev \
92 qtbase5-dev-tools
93
94RUN apt-get install -y --no-install-recommends \
James E. King, IIIf4543692017-09-01 05:23:29 -070095`# csharp (mono) dependencies` \
James E. King, IIIb66b66f2017-08-31 18:07:40 -070096 mono-devel
97
98RUN apt-get install -y --no-install-recommends \
99`# D dependencies` \
100 dmd-bin \
101 libevent-dev \
102 libssl-dev \
103 xdg-utils
104RUN curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
105 curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
106 mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
107 mv libevent-master/deimos/* openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
108 mv libevent-master/C/* openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
109 rm -rf libevent-master openssl-master
110
111RUN apt-get install -y --no-install-recommends \
112`# Dart dependencies` \
113 dart
114ENV PATH /usr/lib/dart/bin:$PATH
115
116RUN apt-get install -y --no-install-recommends \
117`# dotnet core dependencies` \
118 dotnet-sdk-2.0.0
119
120RUN apt-get install -y --no-install-recommends \
121`# Erlang dependencies` \
122 erlang-base \
123 erlang-eunit \
124 erlang-dev \
125 erlang-tools \
126 rebar
127
128RUN apt-get install -y --no-install-recommends \
129`# GlibC dependencies` \
130 libglib2.0-dev
131
132RUN apt-get install -y --no-install-recommends \
133`# golang (go) dependencies` \
James E. King, IIIf4543692017-09-01 05:23:29 -0700134 golang-go \
135 golang-race-detector-runtime
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700136
137RUN apt-get install -y --no-install-recommends \
138`# Haskell dependencies` \
139 ghc \
140 cabal-install
141
142RUN apt-get install -y --no-install-recommends \
143`# Haxe dependencies` \
144 haxe \
145 neko \
146 neko-dev \
147 libneko0
148RUN haxelib setup --always /usr/share/haxelib && \
149 haxelib install --always hxcpp
150
151RUN apt-get install -y --no-install-recommends \
152`# Java dependencies` \
153 ant \
154 ant-optional \
155 openjdk-8-jdk \
156 maven
157
158RUN apt-get install -y --no-install-recommends \
159`# Lua dependencies` \
160 lua5.3 \
161 lua5.3-dev
162
163# not in Xenial any more...
164#RUN apt-get install -y --no-install-recommends \
165#`# MinGW dependencies` \
166# mingw32 \
167# mingw32-binutils \
168# mingw32-runtime \
169# nsis
170
171RUN apt-get install -y --no-install-recommends \
172`# Node.js dependencies` \
173 nodejs
174
175RUN apt-get install -y --no-install-recommends \
176`# OCaml dependencies` \
177 ocaml \
178 opam
179RUN opam init --yes
180RUN opam install --yes oasis
181
182RUN apt-get install -y --no-install-recommends \
183`# Perl dependencies` \
184 libbit-vector-perl \
185 libclass-accessor-class-perl \
186 libcrypt-ssleay-perl \
187 libio-socket-ssl-perl \
188 libnet-ssleay-perl
189
190RUN apt-get install -y --no-install-recommends \
191`# Php dependencies` \
192 php7.0 \
193 php7.0-cli \
194 php7.0-dev \
195 php-pear \
196 re2c \
197 phpunit
198
199RUN apt-get install -y --no-install-recommends \
200`# Python dependencies` \
201 python-all \
202 python-all-dbg \
203 python-all-dev \
204 python-backports.ssl-match-hostname \
205 python-ipaddress \
206 python-pip \
207 python-setuptools \
208 python-tornado \
209 python-twisted \
210 python-zope.interface \
211 python3-all \
212 python3-all-dbg \
213 python3-all-dev \
214 python3-pip \
215 python3-setuptools \
216 python3-tornado
217
218RUN apt-get install -y --no-install-recommends \
219`# Ruby dependencies` \
220 ruby \
221 ruby-dev \
222 ruby-bundler
223RUN gem install bundler --no-ri --no-rdoc
224
225RUN apt-get install -y --no-install-recommends \
226`# Rust dependencies` \
227 cargo \
228 rustc
229
230RUN apt-get dist-upgrade -y
231
232RUN apt-get install -y --no-install-recommends \
233`# Clean up` \
234 && rm -rf /var/cache/apt/* && \
235 rm -rf /var/lib/apt/lists/* && \
236 rm -rf /tmp/* && \
237 rm -rf /var/tmp/*
238
239ENV THRIFT_ROOT /thrift
240RUN mkdir -p $THRIFT_ROOT/src
241COPY Dockerfile $THRIFT_ROOT/
242WORKDIR $THRIFT_ROOT/src