xref: /aosp_15_r20/external/protobuf/kokoro/linux/32-bit/Dockerfile (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
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