blob: f0fbf0c663ce3357d46d86cf44bbd182df7fe354 [file] [log] [blame]
FROM centos:7 as centos7
ARG BUILDARCH
# Install required packages.
COPY google-cloud-sdk.repo /etc/yum.repos.d/google-cloud-sdk.repo
# Disable "fastestmirror" plug-in, because it takes a long time.
RUN sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf && \
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \
yum install -y \
bind-utils \
dpkg-dev \
ed \
file \
gcc \
gcc-c++ \
git \
gnupg2 \
google-cloud-sdk \
iproute \
lcov \
openssl-perl \
patch \
python \
python-six \
python36 \
python36-PyYAML \
python36-requests \
python36-six \
rpm-build \
sudo \
unzip \
which \
zip \
&& \
yum clean all
# Allow using sudo inside the container.
RUN echo "ALL ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN yum install -y yum-utils && \
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
yum install -y containerd.io docker-ce docker-ce-cli && \
yum clean all
# Ensure that Bazel can use its beloved ISO-8859-1 locale.
RUN localedef -i en_US -f ISO-8859-1 en_US.ISO-8859-1
# Bazelisk
RUN LATEST_BAZELISK=$(curl -sSI https://github.com/bazelbuild/bazelisk/releases/latest | grep -i '^location: ' | sed 's|.*/||' | sed $'s/\r//') && \
curl -Lo /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/${LATEST_BAZELISK}/bazelisk-linux-${BUILDARCH} && \
chown root:root /usr/local/bin/bazel && \
chmod 0755 /usr/local/bin/bazel
# Buildifier
RUN LATEST_BUILDIFIER=$(curl -sSI https://github.com/bazelbuild/buildtools/releases/latest | grep -i '^location: ' | sed 's|.*/||' | sed $'s/\r//') && \
curl -Lo /usr/local/bin/buildifier https://github.com/bazelbuild/buildtools/releases/download/${LATEST_BUILDIFIER}/buildifier-linux-${BUILDARCH} && \
chown root:root /usr/local/bin/buildifier && \
chmod 0755 /usr/local/bin/buildifier
FROM centos7 AS centos7-java8
RUN yum install -y java-1.8.0-openjdk-devel && yum clean all
FROM centos7 AS centos7-java11
# Unfortunately Azul doesn't publish an RPM package for zulu11 on aarch64, so we have to use the tar.gz version.
RUN mkdir -p /usr/lib/jvm/zulu-11 && \
pushd /usr/lib/jvm/zulu-11 && \
curl "https://cdn.azul.com/zulu/bin/zulu11.58.23-ca-jdk11.0.16.1-linux_x64.tar.gz" | tar xvz --strip-components=1 && \
update-alternatives \
--install /usr/bin/java java /usr/lib/jvm/zulu-11/bin/java 2115200 \
--slave /usr/bin/jaotc jaotc /usr/lib/jvm/zulu-11/bin/jaotc \
--slave /usr/bin/jfr jfr /usr/lib/jvm/zulu-11/bin/jfr \
--slave /usr/bin/jjs jjs /usr/lib/jvm/zulu-11/bin/jjs \
--slave /usr/bin/keytool keytool /usr/lib/jvm/zulu-11/bin/keytool \
--slave /usr/bin/pack200 pack200 /usr/lib/jvm/zulu-11/bin/pack200 \
--slave /usr/bin/rmid rmid /usr/lib/jvm/zulu-11/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry /usr/lib/jvm/zulu-11/bin/rmiregistry \
--slave /usr/bin/unpack200 unpack200 /usr/lib/jvm/zulu-11/bin/unpack200 \
--slave /usr/lib/jvm/jre jre /usr/lib/jvm/zulu-11 \
--slave /usr/share/man/man1/java.1.gz java.1.gz /usr/lib/jvm/zulu-11/man/man1/java.1.gz \
--slave /usr/share/man/man1/jjs.1.gz jjs.1.gz /usr/lib/jvm/zulu-11/man/man1/jjs.1.gz \
--slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/lib/jvm/zulu-11/man/man1/keytool.1.gz \
--slave /usr/share/man/man1/pack200.1.gz pack200.1.gz /usr/lib/jvm/zulu-11/man/man1/pack200.1.gz \
--slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/lib/jvm/zulu-11/man/man1/rmid.1.gz \
--slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/lib/jvm/zulu-11/man/man1/rmiregistry.1.gz \
--slave /usr/share/man/man1/unpack200.1.gz unpack200.1.gz /usr/lib/jvm/zulu-11/man/man1/unpack200.1.gz && \
update-alternatives \
--install /usr/bin/javac javac /usr/lib/jvm/zulu-11/bin/javac 2115200 \
--slave /usr/bin/jar jar /usr/lib/jvm/zulu-11/bin/jar \
--slave /usr/bin/jarsigner jarsigner /usr/lib/jvm/zulu-11/bin/jarsigner \
--slave /usr/bin/javadoc javadoc /usr/lib/jvm/zulu-11/bin/javadoc \
--slave /usr/bin/javap javap /usr/lib/jvm/zulu-11/bin/javap \
--slave /usr/bin/jcmd jcmd /usr/lib/jvm/zulu-11/bin/jcmd \
--slave /usr/bin/jconsole jconsole /usr/lib/jvm/zulu-11/bin/jconsole \
--slave /usr/bin/jdb jdb /usr/lib/jvm/zulu-11/bin/jdb \
--slave /usr/bin/jdeprscan jdeprscan /usr/lib/jvm/zulu-11/bin/jdeprscan \
--slave /usr/bin/jdeps jdeps /usr/lib/jvm/zulu-11/bin/jdeps \
--slave /usr/bin/jhsdb jhsdb /usr/lib/jvm/zulu-11/bin/jhsdb \
--slave /usr/bin/jimage jimage /usr/lib/jvm/zulu-11/bin/jimage \
--slave /usr/bin/jinfo jinfo /usr/lib/jvm/zulu-11/bin/jinfo \
--slave /usr/bin/jlink jlink /usr/lib/jvm/zulu-11/bin/jlink \
--slave /usr/bin/jmap jmap /usr/lib/jvm/zulu-11/bin/jmap \
--slave /usr/bin/jmod jmod /usr/lib/jvm/zulu-11/bin/jmod \
--slave /usr/bin/jps jps /usr/lib/jvm/zulu-11/bin/jps \
--slave /usr/bin/jrunscript jrunscript /usr/lib/jvm/zulu-11/bin/jrunscript \
--slave /usr/bin/jshell jshell /usr/lib/jvm/zulu-11/bin/jshell \
--slave /usr/bin/jstack jstack /usr/lib/jvm/zulu-11/bin/jstack \
--slave /usr/bin/jstat jstat /usr/lib/jvm/zulu-11/bin/jstat \
--slave /usr/bin/jstatd jstatd /usr/lib/jvm/zulu-11/bin/jstatd \
--slave /usr/bin/rmic rmic /usr/lib/jvm/zulu-11/bin/rmic \
--slave /usr/bin/serialver serialver /usr/lib/jvm/zulu-11/bin/serialver \
--slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/lib/jvm/zulu-11/man/man1/javac.1.gz \
--slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/lib/jvm/zulu-11/man/man1/jar.1.gz \
--slave /usr/share/man/man1/jarsigner.1.gz jarsigner.1.gz /usr/lib/jvm/zulu-11/man/man1/jarsigner.1.gz \
--slave /usr/share/man/man1/javadoc.1.gz javadoc.1.gz /usr/lib/jvm/zulu-11/man/man1/javadoc.1.gz \
--slave /usr/share/man/man1/javap.1.gz javap.1.gz /usr/lib/jvm/zulu-11/man/man1/javap.1.gz \
--slave /usr/share/man/man1/jcmd.1.gz jcmd.1.gz /usr/lib/jvm/zulu-11/man/man1/jcmd.1.gz \
--slave /usr/share/man/man1/jconsole.1.gz jconsole.1.gz /usr/lib/jvm/zulu-11/man/man1/jconsole.1.gz \
--slave /usr/share/man/man1/jdb.1.gz jdb.1.gz /usr/lib/jvm/zulu-11/man/man1/jdb.1.gz \
--slave /usr/share/man/man1/jdeps.1.gz jdeps.1.gz /usr/lib/jvm/zulu-11/man/man1/jdeps.1.gz \
--slave /usr/share/man/man1/jinfo.1.gz jinfo.1.gz /usr/lib/jvm/zulu-11/man/man1/jinfo.1.gz \
--slave /usr/share/man/man1/jmap.1.gz jmap.1.gz /usr/lib/jvm/zulu-11/man/man1/jmap.1.gz \
--slave /usr/share/man/man1/jps.1.gz jps.1.gz /usr/lib/jvm/zulu-11/man/man1/jps.1.gz \
--slave /usr/share/man/man1/jrunscript.1.gz jrunscript.1.gz /usr/lib/jvm/zulu-11/man/man1/jrunscript.1.gz \
--slave /usr/share/man/man1/jstack.1.gz jstack.1.gz /usr/lib/jvm/zulu-11/man/man1/jstack.1.gz \
--slave /usr/share/man/man1/jstat.1.gz jstat.1.gz /usr/lib/jvm/zulu-11/man/man1/jstat.1.gz \
--slave /usr/share/man/man1/jstatd.1.gz jstatd.1.gz /usr/lib/jvm/zulu-11/man/man1/jstatd.1.gz \
--slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/lib/jvm/zulu-11/man/man1/rmic.1.gz \
--slave /usr/share/man/man1/serialver.1.gz serialver.1.gz /usr/lib/jvm/zulu-11/man/man1/serialver.1.gz && \
popd && \
java -version && \
javac -version
FROM centos7-java11 AS centos7-java11-devtoolset10
RUN yum install -y centos-release-scl && yum install -y devtoolset-10 && yum clean all
# These are the variables set by /opt/rh/devtoolset-10/enable and necessary to activate devtoolset-10.
ENV PATH=/opt/rh/devtoolset-10/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV MANPATH=/opt/rh/devtoolset-10/root/usr/share/man
ENV INFOPATH=/opt/rh/devtoolset-10/root/usr/share/info
ENV PCP_DIR=/opt/rh/devtoolset-10/root
ENV LD_LIBRARY_PATH=/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib:/opt/rh/devtoolset-10/root/usr/lib64/dyninst:/opt/rh/devtoolset-10/root/usr/lib/dyninst:/opt/rh/devtoolset-10/root/usr/lib64:/opt/rh/devtoolset-10/root/usr/lib
ENV PKG_CONFIG_PATH=/opt/rh/devtoolset-10/root/usr/lib64/pkgconfig
FROM centos7-java11-devtoolset10 AS centos7-releaser
# dpkg-source needs a newer GNU tar version that supports --sort=name.
RUN pushd /usr/local/src && \
curl -fsSL http://ftp.gnu.org/gnu/tar/tar-1.34.tar.bz2 | tar xvj && \
cd tar-1.34 && \
FORCE_UNSAFE_CONFIGURE=1 ./configure && \
make -j && \
make install && \
popd && \
rm -rf /usr/local/src/tar-1.34 && \
ln -s tar /usr/local/bin/gtar