1*1b3f573fSAndroid Build Coastguard Worker# This Dockerfile specifies the recipe for creating an image for the tests 2*1b3f573fSAndroid Build Coastguard Worker# to run in. 3*1b3f573fSAndroid Build Coastguard Worker# 4*1b3f573fSAndroid Build Coastguard Worker# We install as many test dependencies here as we can, because these setup 5*1b3f573fSAndroid Build Coastguard Worker# steps can be cached. They do *not* run every time we run the build. 6*1b3f573fSAndroid Build Coastguard Worker# The Docker image is only rebuilt when the Dockerfile (ie. this file) 7*1b3f573fSAndroid Build Coastguard Worker# changes. 8*1b3f573fSAndroid Build Coastguard Worker 9*1b3f573fSAndroid Build Coastguard Worker# Base Dockerfile for gRPC dev images 10*1b3f573fSAndroid Build Coastguard WorkerFROM 32bit/debian:latest 11*1b3f573fSAndroid Build Coastguard Worker 12*1b3f573fSAndroid Build Coastguard Worker# Apt source for php 13*1b3f573fSAndroid Build Coastguard WorkerRUN echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu trusty main" | tee /etc/apt/sources.list.d/various-php.list && \ 14*1b3f573fSAndroid Build Coastguard Worker apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F4FCBB07 15*1b3f573fSAndroid Build Coastguard Worker 16*1b3f573fSAndroid Build Coastguard Worker# Install dependencies. We start with the basic ones require to build protoc 17*1b3f573fSAndroid Build Coastguard Worker# and the C++ build 18*1b3f573fSAndroid Build Coastguard WorkerRUN apt-get clean && apt-get update && apt-get install -y --force-yes \ 19*1b3f573fSAndroid Build Coastguard Worker autoconf \ 20*1b3f573fSAndroid Build Coastguard Worker autotools-dev \ 21*1b3f573fSAndroid Build Coastguard Worker build-essential \ 22*1b3f573fSAndroid Build Coastguard Worker bzip2 \ 23*1b3f573fSAndroid Build Coastguard Worker ccache \ 24*1b3f573fSAndroid Build Coastguard Worker curl \ 25*1b3f573fSAndroid Build Coastguard Worker gcc \ 26*1b3f573fSAndroid Build Coastguard Worker git \ 27*1b3f573fSAndroid Build Coastguard Worker libc6 \ 28*1b3f573fSAndroid Build Coastguard Worker libc6-dbg \ 29*1b3f573fSAndroid Build Coastguard Worker libc6-dev \ 30*1b3f573fSAndroid Build Coastguard Worker libgtest-dev \ 31*1b3f573fSAndroid Build Coastguard Worker libtool \ 32*1b3f573fSAndroid Build Coastguard Worker make \ 33*1b3f573fSAndroid Build Coastguard Worker parallel \ 34*1b3f573fSAndroid Build Coastguard Worker time \ 35*1b3f573fSAndroid Build Coastguard Worker wget \ 36*1b3f573fSAndroid Build Coastguard Worker unzip \ 37*1b3f573fSAndroid Build Coastguard Worker # -- For python -- 38*1b3f573fSAndroid Build Coastguard Worker python-setuptools \ 39*1b3f573fSAndroid Build Coastguard Worker python-pip \ 40*1b3f573fSAndroid Build Coastguard Worker python-dev \ 41*1b3f573fSAndroid Build Coastguard Worker # -- For C++ benchmarks -- 42*1b3f573fSAndroid Build Coastguard Worker cmake \ 43*1b3f573fSAndroid Build Coastguard Worker # -- For PHP -- 44*1b3f573fSAndroid Build Coastguard Worker php5.5 \ 45*1b3f573fSAndroid Build Coastguard Worker php5.5-dev \ 46*1b3f573fSAndroid Build Coastguard Worker php5.5-xml \ 47*1b3f573fSAndroid Build Coastguard Worker php5.6 \ 48*1b3f573fSAndroid Build Coastguard Worker php5.6-dev \ 49*1b3f573fSAndroid Build Coastguard Worker php5.6-xml \ 50*1b3f573fSAndroid Build Coastguard Worker php7.0 \ 51*1b3f573fSAndroid Build Coastguard Worker php7.0-dev \ 52*1b3f573fSAndroid Build Coastguard Worker php7.0-xml \ 53*1b3f573fSAndroid Build Coastguard Worker phpunit \ 54*1b3f573fSAndroid Build Coastguard Worker valgrind \ 55*1b3f573fSAndroid Build Coastguard Worker libxml2-dev \ 56*1b3f573fSAndroid Build Coastguard Worker && apt-get clean 57*1b3f573fSAndroid Build Coastguard Worker 58*1b3f573fSAndroid Build Coastguard Worker################## 59*1b3f573fSAndroid Build Coastguard Worker# PHP dependencies. 60*1b3f573fSAndroid Build Coastguard WorkerRUN wget http://am1.php.net/get/php-5.5.38.tar.bz2/from/this/mirror 61*1b3f573fSAndroid Build Coastguard WorkerRUN mv mirror php-5.5.38.tar.bz2 62*1b3f573fSAndroid Build Coastguard WorkerRUN tar -xvf php-5.5.38.tar.bz2 63*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-5.5.38 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-5.5-zts && \ 64*1b3f573fSAndroid Build Coastguard Worker make && make install && make clean && cd .. 65*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-5.5.38 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-5.5 && \ 66*1b3f573fSAndroid Build Coastguard Worker make && make install && make clean && cd .. 67*1b3f573fSAndroid Build Coastguard Worker 68*1b3f573fSAndroid Build Coastguard WorkerRUN wget http://am1.php.net/get/php-5.6.30.tar.bz2/from/this/mirror 69*1b3f573fSAndroid Build Coastguard WorkerRUN mv mirror php-5.6.30.tar.bz2 70*1b3f573fSAndroid Build Coastguard WorkerRUN tar -xvf php-5.6.30.tar.bz2 71*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-5.6.30 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-5.6-zts && \ 72*1b3f573fSAndroid Build Coastguard Worker make && make install && cd .. 73*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-5.6.30 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-5.6 && \ 74*1b3f573fSAndroid Build Coastguard Worker make && make install && cd .. 75*1b3f573fSAndroid Build Coastguard Worker 76*1b3f573fSAndroid Build Coastguard WorkerRUN wget http://am1.php.net/get/php-7.0.18.tar.bz2/from/this/mirror 77*1b3f573fSAndroid Build Coastguard WorkerRUN mv mirror php-7.0.18.tar.bz2 78*1b3f573fSAndroid Build Coastguard WorkerRUN tar -xvf php-7.0.18.tar.bz2 79*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-7.0.18 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-7.0-zts && \ 80*1b3f573fSAndroid Build Coastguard Worker make && make install && cd .. 81*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-7.0.18 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-7.0 && \ 82*1b3f573fSAndroid Build Coastguard Worker make && make install && cd .. 83*1b3f573fSAndroid Build Coastguard Worker 84*1b3f573fSAndroid Build Coastguard WorkerRUN wget http://am1.php.net/get/php-7.1.4.tar.bz2/from/this/mirror 85*1b3f573fSAndroid Build Coastguard WorkerRUN mv mirror php-7.1.4.tar.bz2 86*1b3f573fSAndroid Build Coastguard WorkerRUN tar -xvf php-7.1.4.tar.bz2 87*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-7.1.4 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-7.1-zts && \ 88*1b3f573fSAndroid Build Coastguard Worker make && make install && cd .. 89*1b3f573fSAndroid Build Coastguard WorkerRUN cd php-7.1.4 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-7.1 && \ 90*1b3f573fSAndroid Build Coastguard Worker make && make install && cd .. 91*1b3f573fSAndroid Build Coastguard Worker 92*1b3f573fSAndroid Build Coastguard WorkerRUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 93*1b3f573fSAndroid Build Coastguard WorkerRUN php composer-setup.php 94*1b3f573fSAndroid Build Coastguard WorkerRUN mv composer.phar /usr/bin/composer 95*1b3f573fSAndroid Build Coastguard WorkerRUN php -r "unlink('composer-setup.php');" 96*1b3f573fSAndroid Build Coastguard WorkerRUN composer config -g -- disable-tls true 97*1b3f573fSAndroid Build Coastguard WorkerRUN composer config -g -- secure-http false 98*1b3f573fSAndroid Build Coastguard WorkerRUN cd /tmp && \ 99*1b3f573fSAndroid Build Coastguard Worker git clone https://github.com/google/protobuf.git && \ 100*1b3f573fSAndroid Build Coastguard Worker cd protobuf/php && \ 101*1b3f573fSAndroid Build Coastguard Worker git reset --hard 49b44bff2b6257a119f9c6a342d6151c736586b8 && \ 102*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-5.5/bin/php /usr/bin/php && \ 103*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-5.5/bin/php-config /usr/bin/php-config && \ 104*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-5.5/bin/phpize /usr/bin/phpize && \ 105*1b3f573fSAndroid Build Coastguard Worker composer install && \ 106*1b3f573fSAndroid Build Coastguard Worker mv vendor /usr/local/vendor-5.5 && \ 107*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-5.6/bin/php /usr/bin/php && \ 108*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-5.6/bin/php-config /usr/bin/php-config && \ 109*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-5.6/bin/phpize /usr/bin/phpize && \ 110*1b3f573fSAndroid Build Coastguard Worker composer install && \ 111*1b3f573fSAndroid Build Coastguard Worker mv vendor /usr/local/vendor-5.6 && \ 112*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-7.0/bin/php /usr/bin/php && \ 113*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-7.0/bin/php-config /usr/bin/php-config && \ 114*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-7.0/bin/phpize /usr/bin/phpize && \ 115*1b3f573fSAndroid Build Coastguard Worker composer install && \ 116*1b3f573fSAndroid Build Coastguard Worker mv vendor /usr/local/vendor-7.0 && \ 117*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-7.1/bin/php /usr/bin/php && \ 118*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-7.1/bin/php-config /usr/bin/php-config && \ 119*1b3f573fSAndroid Build Coastguard Worker ln -sfn /usr/local/php-7.1/bin/phpize /usr/bin/phpize && \ 120*1b3f573fSAndroid Build Coastguard Worker composer install && \ 121*1b3f573fSAndroid Build Coastguard Worker mv vendor /usr/local/vendor-7.1 122*1b3f573fSAndroid Build Coastguard Worker 123*1b3f573fSAndroid Build Coastguard Worker################## 124*1b3f573fSAndroid Build Coastguard Worker# Python dependencies 125*1b3f573fSAndroid Build Coastguard Worker 126*1b3f573fSAndroid Build Coastguard Worker# These packages exist in apt-get, but their versions are too old, so we have 127*1b3f573fSAndroid Build Coastguard Worker# to get updates from pip. 128*1b3f573fSAndroid Build Coastguard Worker 129*1b3f573fSAndroid Build Coastguard WorkerRUN pip install pip --upgrade 130*1b3f573fSAndroid Build Coastguard WorkerRUN pip install virtualenv tox yattag 131*1b3f573fSAndroid Build Coastguard Worker 132*1b3f573fSAndroid Build Coastguard Worker################## 133*1b3f573fSAndroid Build Coastguard Worker# Prepare ccache 134*1b3f573fSAndroid Build Coastguard Worker 135*1b3f573fSAndroid Build Coastguard WorkerRUN ln -s /usr/bin/ccache /usr/local/bin/gcc 136*1b3f573fSAndroid Build Coastguard WorkerRUN ln -s /usr/bin/ccache /usr/local/bin/g++ 137*1b3f573fSAndroid Build Coastguard WorkerRUN ln -s /usr/bin/ccache /usr/local/bin/cc 138*1b3f573fSAndroid Build Coastguard WorkerRUN ln -s /usr/bin/ccache /usr/local/bin/c++ 139*1b3f573fSAndroid Build Coastguard WorkerRUN ln -s /usr/bin/ccache /usr/local/bin/clang 140*1b3f573fSAndroid Build Coastguard WorkerRUN ln -s /usr/bin/ccache /usr/local/bin/clang++ 141*1b3f573fSAndroid Build Coastguard Worker 142*1b3f573fSAndroid Build Coastguard Worker# Define the default command. 143*1b3f573fSAndroid Build Coastguard WorkerCMD ["bash"] 144