]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
1 | # 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 Debian | |
14 | # | |
15 | # Known missing client libraries: | |
16 | # - dotnetcore | |
17 | # - rust | |
18 | ||
19 | FROM buildpack-deps:jessie-scm | |
20 | MAINTAINER Apache Thrift <dev@thrift.apache.org> | |
21 | ||
22 | ENV DEBIAN_FRONTEND noninteractive | |
23 | ||
24 | # Add apt sources | |
25 | # jessie-backports for cmake and some ruby bits | |
26 | RUN echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list | |
27 | ||
28 | # Dart | |
29 | RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ | |
30 | curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \ | |
31 | sed -i /etc/apt/sources.list.d/dart_stable.list -e 's/https:/http:/g' | |
32 | ||
33 | RUN apt-get update && apt-get install -y --no-install-recommends \ | |
34 | `# General dependencies` \ | |
35 | bison \ | |
36 | build-essential \ | |
37 | clang \ | |
38 | debhelper \ | |
39 | flex \ | |
40 | pkg-config && \ | |
41 | apt-get -t jessie-backports install -y --no-install-recommends cmake | |
42 | ||
43 | RUN apt-get install -y --no-install-recommends \ | |
44 | `# C++ dependencies` \ | |
45 | 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 \ | |
52 | libssl-dev \ | |
53 | qt5-default \ | |
54 | qtbase5-dev \ | |
55 | qtbase5-dev-tools | |
56 | ||
57 | RUN apt-get install -y --no-install-recommends \ | |
58 | `# Java dependencies` \ | |
59 | ant \ | |
60 | ant-optional \ | |
61 | openjdk-7-jdk \ | |
62 | maven | |
63 | ||
64 | RUN apt-get install -y --no-install-recommends \ | |
65 | `# Python dependencies` \ | |
66 | python-all \ | |
67 | python-all-dbg \ | |
68 | python-all-dev \ | |
69 | python-pip \ | |
70 | python-setuptools \ | |
71 | python-twisted \ | |
72 | python-zope.interface \ | |
73 | python3-all \ | |
74 | python3-all-dbg \ | |
75 | python3-all-dev \ | |
76 | python3-setuptools \ | |
77 | python3-pip | |
78 | ||
79 | RUN apt-get install -y --no-install-recommends \ | |
80 | `# Ruby dependencies` \ | |
81 | ruby \ | |
82 | ruby-bundler \ | |
83 | ruby-dev \ | |
84 | `# Perl dependencies` \ | |
85 | libbit-vector-perl \ | |
86 | libclass-accessor-class-perl \ | |
87 | libcrypt-ssleay-perl \ | |
88 | libio-socket-ssl-perl \ | |
89 | libnet-ssleay-perl | |
90 | ||
91 | RUN apt-get -t jessie-backports install -y ruby-bundler | |
92 | RUN apt-get install -y --no-install-recommends \ | |
93 | `# Php dependencies` \ | |
94 | php5 \ | |
95 | php5-dev \ | |
96 | php5-cli \ | |
97 | php-pear \ | |
98 | re2c \ | |
99 | phpunit \ | |
100 | `# GlibC dependencies` \ | |
101 | libglib2.0-dev | |
102 | ||
103 | RUN apt-get update && apt-get install -y --no-install-recommends \ | |
104 | `# Erlang dependencies` \ | |
105 | erlang-base \ | |
106 | erlang-eunit \ | |
107 | erlang-dev \ | |
108 | erlang-tools \ | |
109 | rebar | |
110 | ||
111 | RUN apt-get update && apt-get install -y --no-install-recommends \ | |
112 | `# Haskell dependencies` \ | |
113 | ghc \ | |
114 | cabal-install \ | |
115 | `# Haxe dependencies` \ | |
116 | neko \ | |
117 | neko-dev \ | |
118 | libneko0 | |
119 | ||
120 | RUN apt-get update && apt-get install -y --no-install-recommends \ | |
121 | `# Node.js dependencies` \ | |
122 | nodejs \ | |
123 | nodejs-dev \ | |
124 | nodejs-legacy \ | |
125 | npm | |
126 | ||
127 | RUN apt-get update && apt-get install -y --no-install-recommends \ | |
128 | `# CSharp dependencies` \ | |
129 | libmono-system-web2.0-cil \ | |
130 | mono-devel | |
131 | ||
132 | RUN apt-get update && apt-get install -y --no-install-recommends \ | |
133 | `# D dependencies` \ | |
134 | xdg-utils \ | |
135 | `# Dart dependencies` \ | |
136 | dart \ | |
137 | `# Lua dependencies` \ | |
138 | lua5.2 \ | |
139 | lua5.2-dev \ | |
140 | `# MinGW dependencies` \ | |
141 | mingw32 \ | |
142 | mingw32-binutils \ | |
143 | `# mingw32-runtime` \ | |
144 | nsis \ | |
145 | `# Clean up` \ | |
146 | && rm -rf /var/cache/apt/* && \ | |
147 | rm -rf /var/lib/apt/lists/* && \ | |
148 | rm -rf /tmp/* && \ | |
149 | rm -rf /var/tmp/* | |
150 | ||
151 | # Ruby | |
152 | RUN gem install bundler --no-ri --no-rdoc | |
153 | ||
154 | # Python optional dependencies | |
155 | RUN pip2 install -U ipaddress backports.ssl_match_hostname tornado | |
156 | RUN pip3 install -U backports.ssl_match_hostname tornado | |
157 | ||
158 | # Go | |
159 | RUN curl -sSL https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz | tar -C /usr/local/ -xz | |
160 | ENV PATH /usr/local/go/bin:$PATH | |
161 | ||
162 | # Haxe | |
163 | RUN mkdir -p /usr/lib/haxe && \ | |
164 | wget -O - https://github.com/HaxeFoundation/haxe/releases/download/3.2.1/haxe-3.2.1-linux64.tar.gz | \ | |
165 | tar -C /usr/lib/haxe --strip-components=1 -xz && \ | |
166 | ln -s /usr/lib/haxe/haxe /usr/bin/haxe && \ | |
167 | ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib && \ | |
168 | mkdir -p /usr/lib/haxe/lib && \ | |
169 | chmod -R 777 /usr/lib/haxe/lib && \ | |
170 | haxelib setup /usr/lib/haxe/lib && \ | |
171 | haxelib install hxcpp | |
172 | ||
173 | # D | |
174 | RUN 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 && \ | |
175 | dpkg -i /tmp/dmd_2.070.0-0_amd64.deb && \ | |
176 | rm /tmp/dmd_2.070.0-0_amd64.deb && \ | |
177 | curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \ | |
178 | curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \ | |
179 | mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \ | |
180 | mv libevent-master/deimos/* openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \ | |
181 | mv libevent-master/C/* openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \ | |
182 | rm -rf libevent-master openssl-master && \ | |
183 | echo 'gcc -Wl,--no-as-needed $*' > /usr/local/bin/gcc-dmd && \ | |
184 | chmod 755 /usr/local/bin/gcc-dmd && \ | |
185 | echo 'CC=/usr/local/bin/gcc-dmd' >> /etc/dmd.conf | |
186 | ||
187 | # Dart | |
188 | ENV PATH /usr/lib/dart/bin:$PATH | |
189 | ||
190 | # OCaml | |
191 | RUN echo 'deb http://ppa.launchpad.net/avsm/ppa/ubuntu trusty main' > /etc/apt/sources.list.d/avsm-official-ocaml.list && \ | |
192 | gpg --keyserver keyserver.ubuntu.com --recv 61707B09 && \ | |
193 | gpg --export --armor 61707B09 | apt-key add - && \ | |
194 | apt-get update && \ | |
195 | apt-get install -y ocaml opam && \ | |
196 | opam init && \ | |
197 | opam install oasis | |
198 | ||
199 | # Force utf8 locale to successfully build Haskell tf-random | |
200 | ENV LC_ALL C.UTF-8 | |
201 | ||
202 | ENV THRIFT_ROOT /thrift | |
203 | RUN mkdir -p $THRIFT_ROOT/src | |
204 | COPY Dockerfile $THRIFT_ROOT/ | |
205 | WORKDIR $THRIFT_ROOT/src |