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