blob: b69d7ea867a13dca8eb6212d824ce44aa0b96d01 [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
James E. King, III0ad20bd2017-09-30 15:44:16 -070013#
James E. King, IIIb66b66f2017-08-31 18:07:40 -070014# Apache Thrift Docker build environment for Ubuntu Xenial
James E. King, III0ad20bd2017-09-30 15:44:16 -070015# Using all stock Ubuntu Xenial packaging except for:
16# - d: does not come with Ubuntu so we're installing 2.073.2 for coverage
17# - dart: does not come with Ubuntu so we're installing 1.22.1 for coverage
James E. King IIIa37feaf2018-03-06 15:11:01 -050018# - nodejs: Ubuntu comes with 4.2.6 which exits LTS April 2018, so we're installing 6.x
James E. King, III0ad20bd2017-09-30 15:44:16 -070019#
20
James E. King, IIIb66b66f2017-08-31 18:07:40 -070021FROM buildpack-deps:xenial-scm
22MAINTAINER Apache Thrift <dev@thrift.apache.org>
James E. King, IIIb66b66f2017-08-31 18:07:40 -070023ENV DEBIAN_FRONTEND noninteractive
24
James E. King, IIId7142b72017-09-01 13:00:36 -070025### Add apt repos
James E. King, IIIb66b66f2017-08-31 18:07:40 -070026
Robert Lu31d5b7b2018-01-05 13:44:38 +080027RUN apt-get update && \
28 apt-get dist-upgrade -y && \
29 apt-get install -y --no-install-recommends \
30 apt \
31 apt-transport-https \
32 apt-utils \
33 curl \
James E. King IIIad238522018-01-13 19:52:31 -050034 software-properties-common \
Robert Lu31d5b7b2018-01-05 13:44:38 +080035 wget
James E. King, IIIb66b66f2017-08-31 18:07:40 -070036
James E. King, IIIf4543692017-09-01 05:23:29 -070037# csharp (mono)
James E. King, III0ad20bd2017-09-30 15:44:16 -070038# RUN echo "deb http://download.mono-project.com/repo/debian xenial main" | tee /etc/apt/sources.list.d/mono.list && \
39# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A6A19B38D3D831EF
James E. King, IIIb66b66f2017-08-31 18:07:40 -070040
41# D
James E. King IIIad238522018-01-13 19:52:31 -050042RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EBCF975E5BA24D5E && \
43 wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list && \
James E. King, III0ad20bd2017-09-30 15:44:16 -070044 wget -qO - https://dlang.org/d-keyring.gpg | apt-key add -
45ENV D_VERSION 2.073.2-0
James E. King, IIIb66b66f2017-08-31 18:07:40 -070046
47# Dart
48RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
Robert Lu31d5b7b2018-01-05 13:44:38 +080049 curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > \
50 /etc/apt/sources.list.d/dart_stable.list
James E. King IIIad238522018-01-13 19:52:31 -050051ENV DART_VERSION 1.22.1-1
James E. King, IIIb66b66f2017-08-31 18:07:40 -070052
James E. King, III6e883f92017-11-18 21:18:05 -050053# dotnet (core)
James E. King, IIIb6287362017-09-28 11:57:42 +000054RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \
Robert Lu31d5b7b2018-01-05 13:44:38 +080055 echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > \
56 /etc/apt/sources.list.d/dotnetdev.list
James E. King, IIId7142b72017-09-01 13:00:36 -070057
James E. King IIIa37feaf2018-03-06 15:11:01 -050058# node.js
59RUN curl -sL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
60 echo "deb https://deb.nodesource.com/node_6.x xenial main" | tee /etc/apt/sources.list.d/nodesource.list
61
James E. King, IIId7142b72017-09-01 13:00:36 -070062### install general dependencies
James E. King, III0ad20bd2017-09-30 15:44:16 -070063RUN apt-get update && apt-get install -y --no-install-recommends \
James E. King, IIIb66b66f2017-08-31 18:07:40 -070064`# General dependencies` \
James E. King, IIIf4543692017-09-01 05:23:29 -070065 bash-completion \
James E. King, IIIb66b66f2017-08-31 18:07:40 -070066 bison \
67 build-essential \
68 clang \
69 cmake \
70 debhelper \
71 flex \
James E. King, IIId7142b72017-09-01 13:00:36 -070072 gdb \
73 llvm \
James E. King, IIIb66b66f2017-08-31 18:07:40 -070074 ninja-build \
75 pkg-config \
James E. King, III7d211b82017-09-06 10:12:02 -070076 valgrind \
James E. King, IIIb66b66f2017-08-31 18:07:40 -070077 vim
James E. King, IIId7142b72017-09-01 13:00:36 -070078ENV PATH /usr/lib/llvm-3.8/bin:$PATH
James E. King, IIIb66b66f2017-08-31 18:07:40 -070079
James E. King, IIId7142b72017-09-01 13:00:36 -070080### languages
James E. King, IIIb66b66f2017-08-31 18:07:40 -070081
82RUN apt-get install -y --no-install-recommends \
83`# C++ dependencies` \
84 libboost-dev \
85 libboost-filesystem-dev \
86 libboost-program-options-dev \
87 libboost-system-dev \
88 libboost-test-dev \
89 libboost-thread-dev \
90 libevent-dev \
91 libssl-dev \
92 qt5-default \
93 qtbase5-dev \
94 qtbase5-dev-tools
95
96RUN apt-get install -y --no-install-recommends \
James E. King, IIIf4543692017-09-01 05:23:29 -070097`# csharp (mono) dependencies` \
James E. King, IIIb66b66f2017-08-31 18:07:40 -070098 mono-devel
99
James E. King, III0ad20bd2017-09-30 15:44:16 -0700100RUN apt-get install -y --allow-unauthenticated --no-install-recommends \
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700101`# D dependencies` \
James E. King, III0ad20bd2017-09-30 15:44:16 -0700102 dmd-bin=$D_VERSION \
103 libphobos2-dev=$D_VERSION \
104 dub \
105 dfmt \
106 dscanner \
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700107 libevent-dev \
108 libssl-dev \
109 xdg-utils
James E. King IIIf338d572018-01-29 14:51:24 -0500110RUN mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
111 curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
112 mv libevent-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
113 mv libevent-master/C/* /usr/include/dmd/druntime/import/C/ && \
114 rm -rf libevent-master
115RUN curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
116 mv openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
117 mv openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
118 rm -rf openssl-master
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700119
120RUN apt-get install -y --no-install-recommends \
121`# Dart dependencies` \
James E. King, III0ad20bd2017-09-30 15:44:16 -0700122 dart=$DART_VERSION
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700123ENV PATH /usr/lib/dart/bin:$PATH
124
James E. King, IIIb6287362017-09-28 11:57:42 +0000125RUN apt-get install -y --no-install-recommends \
126`# dotnet core dependencies` \
James E. King IIIf338d572018-01-29 14:51:24 -0500127 dotnet-sdk-2.1.4
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700128
129RUN apt-get install -y --no-install-recommends \
130`# Erlang dependencies` \
131 erlang-base \
132 erlang-eunit \
133 erlang-dev \
134 erlang-tools \
135 rebar
136
137RUN apt-get install -y --no-install-recommends \
138`# GlibC dependencies` \
139 libglib2.0-dev
140
141RUN apt-get install -y --no-install-recommends \
142`# golang (go) dependencies` \
James E. King, IIIf4543692017-09-01 05:23:29 -0700143 golang-go \
144 golang-race-detector-runtime
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700145
146RUN apt-get install -y --no-install-recommends \
147`# Haskell dependencies` \
148 ghc \
149 cabal-install
150
151RUN apt-get install -y --no-install-recommends \
152`# Haxe dependencies` \
153 haxe \
154 neko \
155 neko-dev \
James E. King IIIad238522018-01-13 19:52:31 -0500156 libneko0 && \
157 haxelib setup --always /usr/share/haxe/lib && \
James E. King IIIf64a3fc2018-01-14 08:54:25 -0500158 haxelib install --always hxcpp 3.4.64 2>&1 > /dev/null
James E. King, III81cdcd32017-09-09 17:54:10 +0000159# note: hxcpp 3.4.185 (latest) no longer ships static libraries, and caused a build failure
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700160
161RUN apt-get install -y --no-install-recommends \
162`# Java dependencies` \
163 ant \
164 ant-optional \
165 openjdk-8-jdk \
166 maven
167
168RUN apt-get install -y --no-install-recommends \
169`# Lua dependencies` \
James E. King, IIId7142b72017-09-01 13:00:36 -0700170 lua5.2 \
171 lua5.2-dev
172# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
173# lua5.3 does not install alternatives so stick with 5.2 here
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700174
175RUN apt-get install -y --no-install-recommends \
176`# Node.js dependencies` \
James E. King IIIa37feaf2018-03-06 15:11:01 -0500177 nodejs
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700178
179RUN apt-get install -y --no-install-recommends \
180`# OCaml dependencies` \
James E. King, IIId7142b72017-09-01 13:00:36 -0700181 ocaml \
182 opam && \
183 opam init --yes && \
184 opam install --yes oasis
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700185
186RUN apt-get install -y --no-install-recommends \
187`# Perl dependencies` \
188 libbit-vector-perl \
189 libclass-accessor-class-perl \
190 libcrypt-ssleay-perl \
191 libio-socket-ssl-perl \
192 libnet-ssleay-perl
193
194RUN apt-get install -y --no-install-recommends \
195`# Php dependencies` \
196 php7.0 \
197 php7.0-cli \
198 php7.0-dev \
199 php-pear \
200 re2c \
Robert Lua15060a2017-12-28 15:29:39 +0800201 composer
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700202
203RUN apt-get install -y --no-install-recommends \
204`# Python dependencies` \
205 python-all \
206 python-all-dbg \
207 python-all-dev \
208 python-backports.ssl-match-hostname \
209 python-ipaddress \
210 python-pip \
211 python-setuptools \
James E. King, IIId7142b72017-09-01 13:00:36 -0700212 python-six \
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700213 python-tornado \
214 python-twisted \
James E. King, IIId7142b72017-09-01 13:00:36 -0700215 python-wheel \
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700216 python-zope.interface \
217 python3-all \
218 python3-all-dbg \
219 python3-all-dev \
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700220 python3-setuptools \
James E. King, IIId7142b72017-09-01 13:00:36 -0700221 python3-six \
222 python3-tornado \
223 python3-twisted \
224 python3-wheel \
225 python3-zope.interface && \
226 pip install --upgrade backports.ssl_match_hostname
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700227
228RUN apt-get install -y --no-install-recommends \
229`# Ruby dependencies` \
230 ruby \
231 ruby-dev \
232 ruby-bundler
233RUN gem install bundler --no-ri --no-rdoc
234
235RUN apt-get install -y --no-install-recommends \
236`# Rust dependencies` \
237 cargo \
238 rustc
239
James E. King, IIId7142b72017-09-01 13:00:36 -0700240# Clean up
241RUN rm -rf /var/cache/apt/* && \
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700242 rm -rf /var/lib/apt/lists/* && \
243 rm -rf /tmp/* && \
244 rm -rf /var/tmp/*
245
James E. King, IIIb6287362017-09-28 11:57:42 +0000246ENV DOTNET_CLI_TELEMETRY_OPTOUT 1
James E. King, IIIb66b66f2017-08-31 18:07:40 -0700247ENV THRIFT_ROOT /thrift
248RUN mkdir -p $THRIFT_ROOT/src
249COPY Dockerfile $THRIFT_ROOT/
250WORKDIR $THRIFT_ROOT/src