blob: 58a361c9a399dcdc99c7db257a373c48821408f0 [file] [log] [blame]
jfarrelle03f7e82015-02-18 23:25:54 -05001# 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 Centos
14#
15# Known missing client libraries:
16# - None
17
18FROM ubuntu:trusty
19MAINTAINER Apache Thrift <dev@thrift.apache.org>
20
jfarrelle03f7e82015-02-18 23:25:54 -050021ENV DEBIAN_FRONTEND noninteractive
22
jfarrelle03f7e82015-02-18 23:25:54 -050023# General dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090024RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090025 apt-transport-https \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090026 autoconf \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090027 automake \
28 bison \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090029 build-essential \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090030 clang \
31 cmake \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090032 curl \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090033 debhelper \
34 flex \
35 g++ \
36 git \
37 libtool \
38 make \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090039 ninja-build \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090040 pkg-config
jfarrelle03f7e82015-02-18 23:25:54 -050041
42# C++ dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090043# libevent and OpenSSL are needed by D too
44RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090045 libboost-dev \
46 libboost-filesystem-dev \
47 libboost-program-options-dev \
48 libboost-system-dev \
49 libboost-test-dev \
50 libboost-thread-dev \
51 libevent-dev \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090052 libssl-dev \
53 qt5-default \
54 qtbase5-dev \
55 qtbase5-dev-tools
jfarrelle03f7e82015-02-18 23:25:54 -050056
57# Java dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090058RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090059 ant \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090060 ant-optional \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090061 openjdk-7-jdk \
62 maven \
63 && update-java-alternatives -s java-1.7.0-openjdk-amd64
jfarrelle03f7e82015-02-18 23:25:54 -050064
65# Python dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090066# TODO:
67# Install twisted and zope.interface via pip. we need twisted at ./configure time, otherwise
68# py.twisted tests are skipped.
Nobuaki Sukegawaed23b2b2016-02-28 13:47:44 +090069RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090070 python-all \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090071 python-all-dbg \
Nobuaki Sukegawaed23b2b2016-02-28 13:47:44 +090072 python-all-dev \
73 python-pip \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090074 python-setuptools \
75 python-support \
76 python-twisted \
77 python-zope.interface \
Nobuaki Sukegawaed23b2b2016-02-28 13:47:44 +090078 python3-dev \
Nobuaki Sukegawa25536ad2016-02-04 15:08:55 +090079 python3-pip
jfarrelle03f7e82015-02-18 23:25:54 -050080
81# Ruby dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090082RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090083 ruby \
84 ruby-dev \
85 && gem install bundler rake
jfarrelle03f7e82015-02-18 23:25:54 -050086
87# Perl dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090088RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090089 libbit-vector-perl \
90 libclass-accessor-class-perl \
91 libcrypt-ssleay-perl \
92 libio-socket-ssl-perl \
93 libnet-ssleay-perl
jfarrelle03f7e82015-02-18 23:25:54 -050094
95# Php dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +090096RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090097 php5 \
98 php5-dev \
99 php5-cli \
100 php-pear \
101 re2c \
102 phpunit
jfarrelle03f7e82015-02-18 23:25:54 -0500103
104# GlibC dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900105RUN apt-get update && apt-get install -y --no-install-recommends libglib2.0-dev
jfarrelle03f7e82015-02-18 23:25:54 -0500106
107# Erlang dependencies
jfarrellb2e90c12015-07-27 08:49:53 -0400108RUN echo 'deb http://packages.erlang-solutions.com/debian trusty contrib' > /etc/apt/sources.list.d/erlang_solutions.list && \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900109 curl -sSL http://packages.erlang-solutions.com/debian/erlang_solutions.asc | apt-key add - && \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900110 apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900111 erlang-base \
112 erlang-eunit \
113 erlang-dev \
114 erlang-tools \
115 rebar
jfarrelle03f7e82015-02-18 23:25:54 -0500116
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900117# Go dependencies
118RUN curl -sSL https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz | tar -C /usr/local/ -xz
119ENV PATH /usr/local/go/bin:$PATH
jfarrell763841b2015-06-24 09:11:54 -0400120
jfarrelle03f7e82015-02-18 23:25:54 -0500121# Haskell dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900122RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900123 ghc \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900124 cabal-install
125# Packages tend to be overwritten by build process since we're currently calling cabal update
126# libghc-binary-dev \
127# libghc-network-dev \
128# libghc-http-dev \
129# libghc-hashable-dev \
130# libghc-unordered-containers-dev \
131# libghc-vector-dev
jfarrelle03f7e82015-02-18 23:25:54 -0500132
133# Haxe
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900134RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900135 neko \
136 neko-dev \
137 libneko0 \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900138 && mkdir -p /usr/lib/haxe && \
139 curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz | \
140 tar -C /usr/lib/haxe --strip-components=1 -xz && \
jfarrelle03f7e82015-02-18 23:25:54 -0500141 ln -s /usr/lib/haxe/haxe /usr/bin/haxe && \
142 ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib && \
jfarrelle03f7e82015-02-18 23:25:54 -0500143 mkdir -p /usr/lib/haxe/lib && \
144 chmod -R 777 /usr/lib/haxe/lib && \
145 haxelib setup /usr/lib/haxe/lib && \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900146 haxelib install hxcpp
jfarrelle03f7e82015-02-18 23:25:54 -0500147
148# Node.js dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900149RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900150 nodejs \
151 nodejs-dev \
152 nodejs-legacy \
153 npm
jfarrelle03f7e82015-02-18 23:25:54 -0500154
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900155# CSharp dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900156RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900157 libmono-system-web2.0-cil \
158 mono-complete \
159 mono-devel \
160 mono-gmcs \
161 mono-xbuild
jfarrelle03f7e82015-02-18 23:25:54 -0500162
163# D dependencies
Nobuaki Sukegawaeee04d92016-02-22 22:13:31 +0900164RUN apt-get update && apt-get install -y --no-install-recommends xdg-utils && \
165 curl -sSL http://downloads.dlang.org/releases/2.x/2.070.0/dmd_2.070.0-0_amd64.deb -o /tmp/dmd_2.070.0-0_amd64.deb && \
Nobuaki Sukegawa33de26c2016-02-22 01:43:23 +0900166 dpkg -i /tmp/dmd_2.070.0-0_amd64.deb && \
Nobuaki Sukegawaeee04d92016-02-22 22:13:31 +0900167 rm /tmp/dmd_2.070.0-0_amd64.deb && \
168 curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
169 curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
170 mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
171 mv libevent-master/deimos/* openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
172 mv libevent-master/C/* openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
173 rm -rf libevent-master openssl-master && \
174 echo 'gcc -Wl,--no-as-needed $*' > /usr/local/bin/gcc-dmd && \
175 chmod 755 /usr/local/bin/gcc-dmd && \
176 echo 'CC=/usr/local/bin/gcc-dmd' >> /etc/dmd.conf
jfarrelle03f7e82015-02-18 23:25:54 -0500177
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900178# Dart dependencies
179RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
180 curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900181 apt-get update && apt-get install -y --no-install-recommends dart
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900182ENV PATH /usr/lib/dart/bin:$PATH
183
184# Lua dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900185RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900186 lua5.2 \
187 lua5.2-dev
188
189# MinGW dependencies
Nobuaki Sukegawa6bb12772016-03-08 01:55:31 +0900190RUN apt-get update && apt-get install -y --no-install-recommends \
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900191 mingw32 \
192 mingw32-binutils \
193 mingw32-runtime \
194 nsis
195
jfarrelle03f7e82015-02-18 23:25:54 -0500196# Clean up
197RUN apt-get clean && \
198 rm -rf /var/cache/apt/* && \
199 rm -rf /var/lib/apt/lists/* && \
200 rm -rf /tmp/* && \
201 rm -rf /var/tmp/*
202
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +0900203ENV THRIFT_ROOT /thrift
204RUN mkdir -p $THRIFT_ROOT/src
205COPY scripts $THRIFT_ROOT
206WORKDIR $THRIFT_ROOT/src