| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 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 Centos | 
 | 14 | # | 
 | 15 | # Known missing client libraries: | 
 | 16 | #  - None | 
 | 17 |  | 
 | 18 | FROM ubuntu:trusty | 
 | 19 | MAINTAINER Apache Thrift <dev@thrift.apache.org> | 
 | 20 |  | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 21 | ENV DEBIAN_FRONTEND noninteractive | 
 | 22 |  | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 23 | # General dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 24 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 25 |       apt-transport-https \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 26 |       autoconf \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 27 |       automake \ | 
 | 28 |       bison \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 29 |       build-essential \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 30 |       clang \ | 
 | 31 |       cmake \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 32 |       curl \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 33 |       debhelper \ | 
 | 34 |       flex \ | 
 | 35 |       g++ \ | 
 | 36 |       git \ | 
 | 37 |       libtool \ | 
 | 38 |       make \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 39 |       ninja-build \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 40 |       pkg-config | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 41 |  | 
 | 42 | # C++ dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 43 | # libevent and OpenSSL are needed by D too | 
 | 44 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 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 \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 52 |       libssl-dev \ | 
 | 53 |       qt5-default \ | 
 | 54 |       qtbase5-dev \ | 
 | 55 |       qtbase5-dev-tools | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 56 |  | 
 | 57 | # Java dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 58 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 59 |       ant \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 60 |       ant-optional \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 61 |       openjdk-7-jdk \ | 
 | 62 |       maven \ | 
 | 63 |     && update-java-alternatives -s java-1.7.0-openjdk-amd64 | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 64 |  | 
 | 65 | # Python dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 66 | # TODO: | 
 | 67 | # Install twisted and zope.interface via pip. we need twisted at ./configure time, otherwise | 
 | 68 | # py.twisted tests are skipped. | 
| Nobuaki Sukegawa | ed23b2b | 2016-02-28 13:47:44 +0900 | [diff] [blame] | 69 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 70 |       python-all \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 71 |       python-all-dbg \ | 
| Nobuaki Sukegawa | ed23b2b | 2016-02-28 13:47:44 +0900 | [diff] [blame] | 72 |       python-all-dev \ | 
 | 73 |       python-pip \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 74 |       python-setuptools \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 75 |       python-twisted \ | 
 | 76 |       python-zope.interface \ | 
| Nobuaki Sukegawa | f43d0ca | 2016-03-25 09:22:16 +0900 | [diff] [blame] | 77 |       python3-all \ | 
 | 78 |       python3-all-dbg \ | 
 | 79 |       python3-all-dev \ | 
 | 80 |       python3-setuptools \ | 
| Nobuaki Sukegawa | 25536ad | 2016-02-04 15:08:55 +0900 | [diff] [blame] | 81 |       python3-pip | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 82 |  | 
 | 83 | # Ruby dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 84 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 85 |       ruby \ | 
 | 86 |       ruby-dev \ | 
 | 87 |     && gem install bundler rake | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 88 |  | 
 | 89 | # Perl dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 90 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 91 |       libbit-vector-perl \ | 
 | 92 |       libclass-accessor-class-perl \ | 
 | 93 |       libcrypt-ssleay-perl \ | 
 | 94 |       libio-socket-ssl-perl \ | 
 | 95 |       libnet-ssleay-perl | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 96 |  | 
 | 97 | # Php dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 98 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 99 |       php5 \ | 
 | 100 |       php5-dev \ | 
 | 101 |       php5-cli \ | 
 | 102 |       php-pear \ | 
 | 103 |       re2c \ | 
 | 104 |       phpunit | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 105 |  | 
 | 106 | # GlibC dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 107 | RUN apt-get update && apt-get install -y --no-install-recommends libglib2.0-dev | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 108 |  | 
 | 109 | # Erlang dependencies | 
| jfarrell | b2e90c1 | 2015-07-27 08:49:53 -0400 | [diff] [blame] | 110 | RUN echo 'deb http://packages.erlang-solutions.com/debian trusty contrib' > /etc/apt/sources.list.d/erlang_solutions.list && \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 111 |     curl -sSL http://packages.erlang-solutions.com/debian/erlang_solutions.asc | apt-key add - && \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 112 |     apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 113 |       erlang-base \ | 
 | 114 |       erlang-eunit \ | 
 | 115 |       erlang-dev \ | 
 | 116 |       erlang-tools \ | 
 | 117 |       rebar | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 118 |  | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 119 | # Go dependencies | 
 | 120 | RUN curl -sSL https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz | tar -C /usr/local/ -xz | 
 | 121 | ENV PATH /usr/local/go/bin:$PATH | 
| jfarrell | 763841b | 2015-06-24 09:11:54 -0400 | [diff] [blame] | 122 |  | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 123 | # Haskell dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 124 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 125 |       ghc \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 126 |       cabal-install | 
 | 127 | # Packages tend to be overwritten by build process since we're currently calling cabal update | 
 | 128 | #       libghc-binary-dev \ | 
 | 129 | #       libghc-network-dev \ | 
 | 130 | #       libghc-http-dev \ | 
 | 131 | #       libghc-hashable-dev \ | 
 | 132 | #       libghc-unordered-containers-dev \ | 
 | 133 | #       libghc-vector-dev | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 134 |  | 
 | 135 | # Haxe | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 136 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 137 |       neko \ | 
 | 138 |       neko-dev \ | 
 | 139 |       libneko0 \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 140 |     && mkdir -p /usr/lib/haxe && \ | 
 | 141 |     curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz | \ | 
 | 142 |     tar -C /usr/lib/haxe --strip-components=1 -xz && \ | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 143 |     ln -s /usr/lib/haxe/haxe /usr/bin/haxe && \ | 
 | 144 |     ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib && \ | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 145 |     mkdir -p /usr/lib/haxe/lib  && \ | 
 | 146 |     chmod -R 777 /usr/lib/haxe/lib && \ | 
 | 147 |     haxelib setup /usr/lib/haxe/lib && \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 148 |     haxelib install hxcpp | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 149 |  | 
 | 150 | # Node.js dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 151 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 152 |       nodejs \ | 
 | 153 |       nodejs-dev \ | 
 | 154 |       nodejs-legacy \ | 
 | 155 |       npm | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 156 |  | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 157 | # CSharp dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 158 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 159 |       libmono-system-web2.0-cil \ | 
 | 160 |       mono-complete \ | 
 | 161 |       mono-devel \ | 
 | 162 |       mono-gmcs \ | 
 | 163 |       mono-xbuild | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 164 |  | 
 | 165 | # D dependencies | 
| Nobuaki Sukegawa | eee04d9 | 2016-02-22 22:13:31 +0900 | [diff] [blame] | 166 | RUN apt-get update && apt-get install -y --no-install-recommends xdg-utils && \ | 
 | 167 |     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 Sukegawa | 33de26c | 2016-02-22 01:43:23 +0900 | [diff] [blame] | 168 |     dpkg -i /tmp/dmd_2.070.0-0_amd64.deb && \ | 
| Nobuaki Sukegawa | eee04d9 | 2016-02-22 22:13:31 +0900 | [diff] [blame] | 169 |     rm /tmp/dmd_2.070.0-0_amd64.deb && \ | 
 | 170 |     curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \ | 
 | 171 |     curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \ | 
 | 172 |     mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \ | 
 | 173 |     mv libevent-master/deimos/* openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \ | 
 | 174 |     mv libevent-master/C/* openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \ | 
 | 175 |     rm -rf libevent-master openssl-master && \ | 
 | 176 |     echo 'gcc -Wl,--no-as-needed $*' > /usr/local/bin/gcc-dmd && \ | 
 | 177 |     chmod 755 /usr/local/bin/gcc-dmd && \ | 
 | 178 |     echo 'CC=/usr/local/bin/gcc-dmd' >> /etc/dmd.conf | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 179 |  | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 180 | # Dart dependencies | 
 | 181 | RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ | 
 | 182 |     curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \ | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 183 |     apt-get update && apt-get install -y --no-install-recommends dart | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 184 | ENV PATH /usr/lib/dart/bin:$PATH | 
 | 185 |  | 
 | 186 | # Lua dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 187 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 188 |       lua5.2 \ | 
 | 189 |       lua5.2-dev | 
 | 190 |  | 
 | 191 | # MinGW dependencies | 
| Nobuaki Sukegawa | 6bb1277 | 2016-03-08 01:55:31 +0900 | [diff] [blame] | 192 | RUN apt-get update && apt-get install -y --no-install-recommends \ | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 193 |       mingw32 \ | 
 | 194 |       mingw32-binutils \ | 
 | 195 |       mingw32-runtime \ | 
 | 196 |       nsis | 
 | 197 |  | 
| jfarrell | e03f7e8 | 2015-02-18 23:25:54 -0500 | [diff] [blame] | 198 | # Clean up | 
 | 199 | RUN apt-get clean && \ | 
 | 200 |     rm -rf /var/cache/apt/* && \ | 
 | 201 |     rm -rf /var/lib/apt/lists/* && \ | 
 | 202 |     rm -rf /tmp/* && \ | 
 | 203 |     rm -rf /var/tmp/* | 
 | 204 |  | 
| Nobuaki Sukegawa | a6ab1f5 | 2015-11-28 15:04:39 +0900 | [diff] [blame] | 205 | ENV THRIFT_ROOT /thrift | 
 | 206 | RUN mkdir -p $THRIFT_ROOT/src | 
 | 207 | COPY scripts $THRIFT_ROOT | 
 | 208 | WORKDIR $THRIFT_ROOT/src |