blob: b6d81bd34923df96ff98cdaef812184098fd910b [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
34# csharp
35RUN 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` \
62 bison \
63 build-essential \
64 clang \
65 cmake \
66 debhelper \
67 flex \
68 ninja-build \
69 pkg-config \
70 vim
71
72# _
73# | | __ _ _ __ __ _ _ _ __ _ __ _ ___ ___
74# | |/ _` | '_ \ / _` | | | |/ _` |/ _` |/ _ \/ __|
75# | | (_| | | | | (_| | |_| | (_| | (_| | __/\__ \
76# |_|\__,_|_| |_|\__, |\__,_|\__,_|\__, |\___||___/
77# |___/ |___/
78
79RUN apt-get install -y --no-install-recommends \
80`# C++ dependencies` \
81 libboost-dev \
82 libboost-filesystem-dev \
83 libboost-program-options-dev \
84 libboost-system-dev \
85 libboost-test-dev \
86 libboost-thread-dev \
87 libevent-dev \
88 libssl-dev \
89 qt5-default \
90 qtbase5-dev \
91 qtbase5-dev-tools
92
93RUN apt-get install -y --no-install-recommends \
94`# csharp dependencies` \
95 mono-devel
96
97RUN apt-get install -y --no-install-recommends \
98`# D dependencies` \
99 dmd-bin \
100 libevent-dev \
101 libssl-dev \
102 xdg-utils
103RUN curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
104 curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
105 mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
106 mv libevent-master/deimos/* openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
107 mv libevent-master/C/* openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
108 rm -rf libevent-master openssl-master
109
110RUN apt-get install -y --no-install-recommends \
111`# Dart dependencies` \
112 dart
113ENV PATH /usr/lib/dart/bin:$PATH
114
115RUN apt-get install -y --no-install-recommends \
116`# dotnet core dependencies` \
117 dotnet-sdk-2.0.0
118
119RUN apt-get install -y --no-install-recommends \
120`# Erlang dependencies` \
121 erlang-base \
122 erlang-eunit \
123 erlang-dev \
124 erlang-tools \
125 rebar
126
127RUN apt-get install -y --no-install-recommends \
128`# GlibC dependencies` \
129 libglib2.0-dev
130
131RUN apt-get install -y --no-install-recommends \
132`# golang (go) dependencies` \
133 golang-go
134
135RUN apt-get install -y --no-install-recommends \
136`# Haskell dependencies` \
137 ghc \
138 cabal-install
139
140RUN apt-get install -y --no-install-recommends \
141`# Haxe dependencies` \
142 haxe \
143 neko \
144 neko-dev \
145 libneko0
146RUN haxelib setup --always /usr/share/haxelib && \
147 haxelib install --always hxcpp
148
149RUN apt-get install -y --no-install-recommends \
150`# Java dependencies` \
151 ant \
152 ant-optional \
153 openjdk-8-jdk \
154 maven
155
156RUN apt-get install -y --no-install-recommends \
157`# Lua dependencies` \
158 lua5.3 \
159 lua5.3-dev
160
161# not in Xenial any more...
162#RUN apt-get install -y --no-install-recommends \
163#`# MinGW dependencies` \
164# mingw32 \
165# mingw32-binutils \
166# mingw32-runtime \
167# nsis
168
169RUN apt-get install -y --no-install-recommends \
170`# Node.js dependencies` \
171 nodejs
172
173RUN apt-get install -y --no-install-recommends \
174`# OCaml dependencies` \
175 ocaml \
176 opam
177RUN opam init --yes
178RUN opam install --yes oasis
179
180RUN apt-get install -y --no-install-recommends \
181`# Perl dependencies` \
182 libbit-vector-perl \
183 libclass-accessor-class-perl \
184 libcrypt-ssleay-perl \
185 libio-socket-ssl-perl \
186 libnet-ssleay-perl
187
188RUN apt-get install -y --no-install-recommends \
189`# Php dependencies` \
190 php7.0 \
191 php7.0-cli \
192 php7.0-dev \
193 php-pear \
194 re2c \
195 phpunit
196
197RUN apt-get install -y --no-install-recommends \
198`# Python dependencies` \
199 python-all \
200 python-all-dbg \
201 python-all-dev \
202 python-backports.ssl-match-hostname \
203 python-ipaddress \
204 python-pip \
205 python-setuptools \
206 python-tornado \
207 python-twisted \
208 python-zope.interface \
209 python3-all \
210 python3-all-dbg \
211 python3-all-dev \
212 python3-pip \
213 python3-setuptools \
214 python3-tornado
215
216RUN apt-get install -y --no-install-recommends \
217`# Ruby dependencies` \
218 ruby \
219 ruby-dev \
220 ruby-bundler
221RUN gem install bundler --no-ri --no-rdoc
222
223RUN apt-get install -y --no-install-recommends \
224`# Rust dependencies` \
225 cargo \
226 rustc
227
228RUN apt-get dist-upgrade -y
229
230RUN apt-get install -y --no-install-recommends \
231`# Clean up` \
232 && rm -rf /var/cache/apt/* && \
233 rm -rf /var/lib/apt/lists/* && \
234 rm -rf /tmp/* && \
235 rm -rf /var/tmp/*
236
237ENV THRIFT_ROOT /thrift
238RUN mkdir -p $THRIFT_ROOT/src
239COPY Dockerfile $THRIFT_ROOT/
240WORKDIR $THRIFT_ROOT/src