summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuaki Sukegawa <nsuke@apache.org>2016-03-08 01:55:31 +0900
committerNobuaki Sukegawa <nsuke@apache.org>2016-03-09 10:36:43 +0900
commit6bb12771452b8c2fc656b0561486a51c31d1449d (patch)
tree81e205d484d41ababa76693149c037389359fb16
parent356c9986586a1c677cc911aca22be37c73aaf792 (diff)
downloadthrift-6bb12771452b8c2fc656b0561486a51c31d1449d.tar.gz
THRIFT-3718 Reduce size of docker image for build environment
This closes #931
-rw-r--r--build/docker/debian/Dockerfile48
-rwxr-xr-xbuild/docker/scripts/cmake.sh12
-rw-r--r--build/docker/ubuntu/Dockerfile71
-rw-r--r--debian/control6
4 files changed, 79 insertions, 58 deletions
diff --git a/build/docker/debian/Dockerfile b/build/docker/debian/Dockerfile
index a85d9e117..d8c241159 100644
--- a/build/docker/debian/Dockerfile
+++ b/build/docker/debian/Dockerfile
@@ -21,12 +21,15 @@ MAINTAINER Apache Thrift <dev@thrift.apache.org>
ENV DEBIAN_FRONTEND noninteractive
# General dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
apt-transport-https \
+ autoconf \
automake \
bison \
+ build-essential \
clang \
cmake \
+ curl \
debhelper \
flex \
g++ \
@@ -36,7 +39,7 @@ RUN apt-get update && apt-get install -y \
pkg-config
# C++ dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
libboost-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
@@ -44,12 +47,15 @@ RUN apt-get update && apt-get install -y \
libboost-test-dev \
libboost-thread-dev \
libevent-dev \
- libqt4-dev \
- libssl-dev
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
# Java dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
ant \
+ ant-optional \
openjdk-7-jdk \
maven \
&& update-java-alternatives -s java-1.7.0-openjdk-amd64
@@ -68,13 +74,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
python3-pip
# Ruby dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
ruby \
ruby-dev \
&& gem install bundler rake
# Perl dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
libbit-vector-perl \
libclass-accessor-class-perl \
libcrypt-ssleay-perl \
@@ -82,7 +88,7 @@ RUN apt-get update && apt-get install -y \
libnet-ssleay-perl
# Php dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
php5 \
php5-dev \
php5-cli \
@@ -91,10 +97,10 @@ RUN apt-get update && apt-get install -y \
phpunit
# GlibC dependencies
-RUN apt-get update && apt-get install -y libglib2.0-dev
+RUN apt-get update && apt-get install -y --no-install-recommends libglib2.0-dev
# Erlang dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
erlang-base \
erlang-eunit \
erlang-dev \
@@ -112,31 +118,29 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
cabal-install
# Haxe
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
neko \
neko-dev \
libneko0 \
- && mkdir -p /tmp/haxe /usr/lib/haxe && \
- curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz -o /tmp/haxe/haxe-3.2.0-linux64.tar.gz && \
- tar -xvzf /tmp/haxe/haxe-3.2.0-linux64.tar.gz -C /usr/lib/haxe --strip-components=1 && \
+ && mkdir -p /usr/lib/haxe && \
+ curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz | \
+ tar -C /usr/lib/haxe --strip-components=1 -xz && \
ln -s /usr/lib/haxe/haxe /usr/bin/haxe && \
ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib && \
mkdir -p /usr/lib/haxe/lib && \
chmod -R 777 /usr/lib/haxe/lib && \
haxelib setup /usr/lib/haxe/lib && \
- haxelib install hxcpp && \
- rm -rf /tmp/haxe
-
+ haxelib install hxcpp
# Node.js dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
nodejs \
nodejs-dev \
nodejs-legacy \
npm
# CSharp dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
libmono-system-web2.0-cil \
mono-complete \
mono-devel \
@@ -161,16 +165,16 @@ RUN apt-get update && apt-get install -y --no-install-recommends xdg-utils && \
# Dart dependencies
RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \
- apt-get update && apt-get install -y dart
+ apt-get update && apt-get install -y --no-install-recommends dart
ENV PATH /usr/lib/dart/bin:$PATH
# Lua dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
lua5.2 \
lua5.2-dev
# MinGW dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
mingw32 \
mingw32-binutils \
# mingw32-runtime \
diff --git a/build/docker/scripts/cmake.sh b/build/docker/scripts/cmake.sh
index 21b7fc683..26ccb109c 100755
--- a/build/docker/scripts/cmake.sh
+++ b/build/docker/scripts/cmake.sh
@@ -1,14 +1,22 @@
#!/bin/sh
set -ev
+CMAKE_FLAGS=$*
+MAKEPROG=make
+
+if ninja --version >/dev/null 2>&1; then
+ MAKEPROG=ninja
+ CMAKE_FLAGS="-GNinja $CMAKE_FLAGS"
+fi
+
mkdir -p cmake_build && cd cmake_build
-cmake $* ..
+cmake $CMAKE_FLAGS ..
for LIB in $BUILD_LIBS; do
if ! grep "^BUILD_${LIB}:BOOL=ON$" CMakeCache.txt ; then
echo "failed to configure $LIB"
exit 1
fi
done
-make -j3
+$MAKEPROG -j3
cpack
ctest -VV -E "(concurrency_test|processor_test)"
diff --git a/build/docker/ubuntu/Dockerfile b/build/docker/ubuntu/Dockerfile
index 5180fca67..58a361c9a 100644
--- a/build/docker/ubuntu/Dockerfile
+++ b/build/docker/ubuntu/Dockerfile
@@ -21,22 +21,27 @@ MAINTAINER Apache Thrift <dev@thrift.apache.org>
ENV DEBIAN_FRONTEND noninteractive
# General dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
apt-transport-https \
+ autoconf \
automake \
bison \
+ build-essential \
clang \
cmake \
+ curl \
debhelper \
flex \
g++ \
git \
libtool \
make \
+ ninja-build \
pkg-config
# C++ dependencies
-RUN apt-get update && apt-get install -y \
+# libevent and OpenSSL are needed by D too
+RUN apt-get update && apt-get install -y --no-install-recommends \
libboost-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
@@ -44,17 +49,23 @@ RUN apt-get update && apt-get install -y \
libboost-test-dev \
libboost-thread-dev \
libevent-dev \
- libqt4-dev \
- libssl-dev
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
# Java dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
ant \
+ ant-optional \
openjdk-7-jdk \
maven \
&& update-java-alternatives -s java-1.7.0-openjdk-amd64
# Python dependencies
+# TODO:
+# Install twisted and zope.interface via pip. we need twisted at ./configure time, otherwise
+# py.twisted tests are skipped.
RUN apt-get update && apt-get install -y --no-install-recommends \
python-all \
python-all-dbg \
@@ -68,13 +79,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
python3-pip
# Ruby dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
ruby \
ruby-dev \
&& gem install bundler rake
# Perl dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
libbit-vector-perl \
libclass-accessor-class-perl \
libcrypt-ssleay-perl \
@@ -82,7 +93,7 @@ RUN apt-get update && apt-get install -y \
libnet-ssleay-perl
# Php dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
php5 \
php5-dev \
php5-cli \
@@ -91,12 +102,12 @@ RUN apt-get update && apt-get install -y \
phpunit
# GlibC dependencies
-RUN apt-get update && apt-get install -y libglib2.0-dev
+RUN apt-get update && apt-get install -y --no-install-recommends libglib2.0-dev
# Erlang dependencies
RUN echo 'deb http://packages.erlang-solutions.com/debian trusty contrib' > /etc/apt/sources.list.d/erlang_solutions.list && \
curl -sSL http://packages.erlang-solutions.com/debian/erlang_solutions.asc | apt-key add - && \
- apt-get update && apt-get install -y \
+ apt-get update && apt-get install -y --no-install-recommends \
erlang-base \
erlang-eunit \
erlang-dev \
@@ -107,44 +118,42 @@ RUN echo 'deb http://packages.erlang-solutions.com/debian trusty contrib' > /etc
RUN curl -sSL https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz | tar -C /usr/local/ -xz
ENV PATH /usr/local/go/bin:$PATH
-
# Haskell dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
ghc \
- cabal-install \
- libghc-binary-dev \
- libghc-network-dev \
- libghc-http-dev \
- libghc-hashable-dev \
- libghc-unordered-containers-dev \
- libghc-vector-dev
+ cabal-install
+# Packages tend to be overwritten by build process since we're currently calling cabal update
+# libghc-binary-dev \
+# libghc-network-dev \
+# libghc-http-dev \
+# libghc-hashable-dev \
+# libghc-unordered-containers-dev \
+# libghc-vector-dev
# Haxe
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
neko \
neko-dev \
libneko0 \
- && mkdir -p /tmp/haxe /usr/lib/haxe && \
- curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz -o /tmp/haxe/haxe-3.2.0-linux64.tar.gz && \
- tar -xvzf /tmp/haxe/haxe-3.2.0-linux64.tar.gz -C /usr/lib/haxe --strip-components=1 && \
+ && mkdir -p /usr/lib/haxe && \
+ curl http://haxe.org/website-content/downloads/3.2.0/downloads/haxe-3.2.0-linux64.tar.gz | \
+ tar -C /usr/lib/haxe --strip-components=1 -xz && \
ln -s /usr/lib/haxe/haxe /usr/bin/haxe && \
ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib && \
mkdir -p /usr/lib/haxe/lib && \
chmod -R 777 /usr/lib/haxe/lib && \
haxelib setup /usr/lib/haxe/lib && \
- haxelib install hxcpp && \
- rm -rf /tmp/haxe
-
+ haxelib install hxcpp
# Node.js dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
nodejs \
nodejs-dev \
nodejs-legacy \
npm
# CSharp dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
libmono-system-web2.0-cil \
mono-complete \
mono-devel \
@@ -169,16 +178,16 @@ RUN apt-get update && apt-get install -y --no-install-recommends xdg-utils && \
# Dart dependencies
RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \
- apt-get update && apt-get install -y dart
+ apt-get update && apt-get install -y --no-install-recommends dart
ENV PATH /usr/lib/dart/bin:$PATH
# Lua dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
lua5.2 \
lua5.2-dev
# MinGW dependencies
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-get install -y --no-install-recommends \
mingw32 \
mingw32-binutils \
mingw32-runtime \
diff --git a/debian/control b/debian/control
index 74cbb58cb..be5209c55 100644
--- a/debian/control
+++ b/debian/control
@@ -5,14 +5,14 @@ Build-Depends: debhelper (>= 9), build-essential, mono-gmcs, python-dev, ant,
mono-devel, libmono-system-web2.0-cil, erlang-base, ruby-dev | ruby1.9.1-dev, autoconf, automake,
pkg-config, libtool, bison, flex, libboost-dev | libboost1.53-dev, python-all,
python-all-dev, python-all-dbg, openjdk-6-jdk | java-sdk,
- libboost-test-dev | libboost-test1.53-dev, libevent-dev, perl (>= 5.8.0-7),
- php5, php5-dev, libglib2.0-dev, libqt4-dev
+ libboost-test-dev | libboost-test1.53-dev, libevent-dev, libssl-dev, perl (>= 5.8.0-7),
+ php5, php5-dev, libglib2.0-dev, qtbase5-dev, qtbase5-dev-tools
Maintainer: Thrift Developer's <dev@thrift.apache.org>
Homepage: http://thrift.apache.org/
Vcs-Git: https://git-wip-us.apache.org/repos/asf/thrift.git
Vcs-Browser: https://git-wip-us.apache.org/repos/asf?p=thrift.git
Standards-Version: 3.9.5
-X-Python-Version: >= 2.7
+X-Python-Version: >= 2.6
Package: thrift-compiler
Architecture: any