xref: /aosp_15_r20/external/mbedtls/tests/docker/bionic/Dockerfile (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi# Dockerfile
2*62c56f98SSadaf Ebrahimi#
3*62c56f98SSadaf Ebrahimi# Purpose
4*62c56f98SSadaf Ebrahimi# -------
5*62c56f98SSadaf Ebrahimi# Defines a Docker container suitable to build and run all tests (all.sh),
6*62c56f98SSadaf Ebrahimi# except for those that use a proprietary toolchain.
7*62c56f98SSadaf Ebrahimi#
8*62c56f98SSadaf Ebrahimi# WARNING: this Dockerfile is no longer maintained! See
9*62c56f98SSadaf Ebrahimi# https://github.com/Mbed-TLS/mbedtls-test/blob/master/README.md#quick-start
10*62c56f98SSadaf Ebrahimi# for the set of Docker images we use on the CI.
11*62c56f98SSadaf Ebrahimi
12*62c56f98SSadaf Ebrahimi# Copyright The Mbed TLS Contributors
13*62c56f98SSadaf Ebrahimi# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
14*62c56f98SSadaf EbrahimiARG MAKEFLAGS_PARALLEL=""
15*62c56f98SSadaf EbrahimiARG MY_REGISTRY=
16*62c56f98SSadaf Ebrahimi
17*62c56f98SSadaf EbrahimiFROM ${MY_REGISTRY}ubuntu:bionic
18*62c56f98SSadaf Ebrahimi
19*62c56f98SSadaf Ebrahimi
20*62c56f98SSadaf EbrahimiENV DEBIAN_FRONTEND noninteractive
21*62c56f98SSadaf Ebrahimi
22*62c56f98SSadaf EbrahimiRUN apt-get update \
23*62c56f98SSadaf Ebrahimi    && apt-get -y install software-properties-common \
24*62c56f98SSadaf Ebrahimi    && rm -rf /var/lib/apt/lists
25*62c56f98SSadaf Ebrahimi
26*62c56f98SSadaf EbrahimiRUN add-apt-repository -y ppa:team-gcc-arm-embedded/ppa
27*62c56f98SSadaf Ebrahimi
28*62c56f98SSadaf EbrahimiRUN apt-get update \
29*62c56f98SSadaf Ebrahimi    && apt-get -y install \
30*62c56f98SSadaf Ebrahimi    # mbedtls build/test dependencies
31*62c56f98SSadaf Ebrahimi    build-essential \
32*62c56f98SSadaf Ebrahimi    clang \
33*62c56f98SSadaf Ebrahimi    cmake \
34*62c56f98SSadaf Ebrahimi    doxygen \
35*62c56f98SSadaf Ebrahimi    gcc-arm-none-eabi \
36*62c56f98SSadaf Ebrahimi    gcc-mingw-w64-i686 \
37*62c56f98SSadaf Ebrahimi    gcc-multilib \
38*62c56f98SSadaf Ebrahimi    g++-multilib \
39*62c56f98SSadaf Ebrahimi    gdb \
40*62c56f98SSadaf Ebrahimi    git \
41*62c56f98SSadaf Ebrahimi    graphviz \
42*62c56f98SSadaf Ebrahimi    lsof \
43*62c56f98SSadaf Ebrahimi    python \
44*62c56f98SSadaf Ebrahimi    python3-pip \
45*62c56f98SSadaf Ebrahimi    python3 \
46*62c56f98SSadaf Ebrahimi    pylint3 \
47*62c56f98SSadaf Ebrahimi    valgrind \
48*62c56f98SSadaf Ebrahimi    wget \
49*62c56f98SSadaf Ebrahimi    # libnettle build dependencies
50*62c56f98SSadaf Ebrahimi    libgmp-dev \
51*62c56f98SSadaf Ebrahimi    m4 \
52*62c56f98SSadaf Ebrahimi    pkg-config \
53*62c56f98SSadaf Ebrahimi    && rm -rf /var/lib/apt/lists/*
54*62c56f98SSadaf Ebrahimi
55*62c56f98SSadaf Ebrahimi# Jinja2 is required for driver dispatch code generation.
56*62c56f98SSadaf EbrahimiRUN python3 -m pip install \
57*62c56f98SSadaf Ebrahimi    jinja2==2.10.1 types-jinja2
58*62c56f98SSadaf Ebrahimi
59*62c56f98SSadaf Ebrahimi# Build a static, legacy openssl from sources with sslv3 enabled
60*62c56f98SSadaf Ebrahimi# Based on https://gist.github.com/bmaupin/8caca3a1e8c3c5686141 (build-openssl.sh)
61*62c56f98SSadaf Ebrahimi# Note: openssl-1.0.2 and earlier has known build issues with parallel make.
62*62c56f98SSadaf EbrahimiRUN cd /tmp \
63*62c56f98SSadaf Ebrahimi    && wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1j.tar.gz -qO- | tar xz \
64*62c56f98SSadaf Ebrahimi    && cd openssl-1.0.1j \
65*62c56f98SSadaf Ebrahimi    && ./config --openssldir=/usr/local/openssl-1.0.1j no-shared \
66*62c56f98SSadaf Ebrahimi    && (make ${MAKEFLAGS_PARALLEL} || make -j 1) \
67*62c56f98SSadaf Ebrahimi    && make install_sw \
68*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/openssl*
69*62c56f98SSadaf EbrahimiENV OPENSSL_LEGACY=/usr/local/openssl-1.0.1j/bin/openssl
70*62c56f98SSadaf Ebrahimi
71*62c56f98SSadaf Ebrahimi# Build OPENSSL as 1.0.2g
72*62c56f98SSadaf EbrahimiRUN cd /tmp \
73*62c56f98SSadaf Ebrahimi    && wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2g.tar.gz -qO- | tar xz \
74*62c56f98SSadaf Ebrahimi    && cd openssl-1.0.2g \
75*62c56f98SSadaf Ebrahimi    && ./config --openssldir=/usr/local/openssl-1.0.2g no-shared \
76*62c56f98SSadaf Ebrahimi    && (make ${MAKEFLAGS_PARALLEL} || make -j 1) \
77*62c56f98SSadaf Ebrahimi    && make install_sw \
78*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/openssl*
79*62c56f98SSadaf EbrahimiENV OPENSSL=/usr/local/openssl-1.0.2g/bin/openssl
80*62c56f98SSadaf Ebrahimi
81*62c56f98SSadaf Ebrahimi# Build a new openssl binary for ARIA/CHACHA20 support
82*62c56f98SSadaf Ebrahimi# Based on https://gist.github.com/bmaupin/8caca3a1e8c3c5686141 (build-openssl.sh)
83*62c56f98SSadaf EbrahimiRUN cd /tmp \
84*62c56f98SSadaf Ebrahimi    && wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz -qO- | tar xz \
85*62c56f98SSadaf Ebrahimi    && cd openssl-1.1.1a \
86*62c56f98SSadaf Ebrahimi    && ./config --prefix=/usr/local/openssl-1.1.1a -Wl,--enable-new-dtags,-rpath,'${LIBRPATH}' no-shared \
87*62c56f98SSadaf Ebrahimi    && make ${MAKEFLAGS_PARALLEL} \
88*62c56f98SSadaf Ebrahimi    && make install_sw \
89*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/openssl*
90*62c56f98SSadaf EbrahimiENV OPENSSL_NEXT=/usr/local/openssl-1.1.1a/bin/openssl
91*62c56f98SSadaf Ebrahimi
92*62c56f98SSadaf Ebrahimi# Build libnettle 2.7.1 (needed by legacy gnutls)
93*62c56f98SSadaf EbrahimiRUN cd /tmp \
94*62c56f98SSadaf Ebrahimi    && wget https://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz -qO- | tar xz \
95*62c56f98SSadaf Ebrahimi    && cd nettle-2.7.1 \
96*62c56f98SSadaf Ebrahimi    && ./configure --disable-documentation \
97*62c56f98SSadaf Ebrahimi    && make ${MAKEFLAGS_PARALLEL} \
98*62c56f98SSadaf Ebrahimi    && make install \
99*62c56f98SSadaf Ebrahimi    && /sbin/ldconfig \
100*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/nettle*
101*62c56f98SSadaf Ebrahimi
102*62c56f98SSadaf Ebrahimi# Build legacy gnutls (3.3.8)
103*62c56f98SSadaf EbrahimiRUN cd /tmp \
104*62c56f98SSadaf Ebrahimi    && wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.3/gnutls-3.3.8.tar.xz -qO- | tar xJ \
105*62c56f98SSadaf Ebrahimi    && cd gnutls-3.3.8 \
106*62c56f98SSadaf Ebrahimi    && ./configure --prefix=/usr/local/gnutls-3.3.8 --exec_prefix=/usr/local/gnutls-3.3.8 --disable-shared --disable-guile --disable-doc \
107*62c56f98SSadaf Ebrahimi    && make ${MAKEFLAGS_PARALLEL} \
108*62c56f98SSadaf Ebrahimi    && make install \
109*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/gnutls*
110*62c56f98SSadaf EbrahimiENV GNUTLS_LEGACY_CLI=/usr/local/gnutls-3.3.8/bin/gnutls-cli
111*62c56f98SSadaf EbrahimiENV GNUTLS_LEGACY_SERV=/usr/local/gnutls-3.3.8/bin/gnutls-serv
112*62c56f98SSadaf Ebrahimi
113*62c56f98SSadaf Ebrahimi# Build libnettle 3.1 (needed by gnutls)
114*62c56f98SSadaf EbrahimiRUN cd /tmp \
115*62c56f98SSadaf Ebrahimi    && wget https://ftp.gnu.org/gnu/nettle/nettle-3.1.tar.gz -qO- | tar xz \
116*62c56f98SSadaf Ebrahimi    && cd nettle-3.1 \
117*62c56f98SSadaf Ebrahimi    && ./configure --disable-documentation \
118*62c56f98SSadaf Ebrahimi    && make ${MAKEFLAGS_PARALLEL} \
119*62c56f98SSadaf Ebrahimi    && make install \
120*62c56f98SSadaf Ebrahimi    && /sbin/ldconfig \
121*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/nettle*
122*62c56f98SSadaf Ebrahimi
123*62c56f98SSadaf Ebrahimi# Build gnutls (3.4.10)
124*62c56f98SSadaf EbrahimiRUN cd /tmp \
125*62c56f98SSadaf Ebrahimi    && wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.4/gnutls-3.4.10.tar.xz -qO- | tar xJ \
126*62c56f98SSadaf Ebrahimi    && cd gnutls-3.4.10 \
127*62c56f98SSadaf Ebrahimi    && ./configure --prefix=/usr/local/gnutls-3.4.10 --exec_prefix=/usr/local/gnutls-3.4.10 \
128*62c56f98SSadaf Ebrahimi        --with-included-libtasn1 --without-p11-kit \
129*62c56f98SSadaf Ebrahimi        --disable-shared --disable-guile --disable-doc \
130*62c56f98SSadaf Ebrahimi    && make ${MAKEFLAGS_PARALLEL} \
131*62c56f98SSadaf Ebrahimi    && make install \
132*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/gnutls*
133*62c56f98SSadaf EbrahimiENV GNUTLS_CLI=/usr/local/gnutls-3.4.10/bin/gnutls-cli
134*62c56f98SSadaf EbrahimiENV GNUTLS_SERV=/usr/local/gnutls-3.4.10/bin/gnutls-serv
135*62c56f98SSadaf Ebrahimi
136*62c56f98SSadaf Ebrahimi# Build libnettle 3.7.3 (needed by gnutls next)
137*62c56f98SSadaf EbrahimiRUN cd /tmp \
138*62c56f98SSadaf Ebrahimi    && wget https://ftp.gnu.org/gnu/nettle/nettle-3.7.3.tar.gz -qO- | tar xz \
139*62c56f98SSadaf Ebrahimi    && cd nettle-3.7.3 \
140*62c56f98SSadaf Ebrahimi    && ./configure --disable-documentation \
141*62c56f98SSadaf Ebrahimi    && make ${MAKEFLAGS_PARALLEL} \
142*62c56f98SSadaf Ebrahimi    && make install \
143*62c56f98SSadaf Ebrahimi    && /sbin/ldconfig \
144*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/nettle*
145*62c56f98SSadaf Ebrahimi
146*62c56f98SSadaf Ebrahimi# Build gnutls next (3.7.2)
147*62c56f98SSadaf EbrahimiRUN cd /tmp \
148*62c56f98SSadaf Ebrahimi    && wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.2.tar.xz -qO- | tar xJ \
149*62c56f98SSadaf Ebrahimi    && cd gnutls-3.7.2 \
150*62c56f98SSadaf Ebrahimi    && ./configure --prefix=/usr/local/gnutls-3.7.2 --exec_prefix=/usr/local/gnutls-3.7.2 \
151*62c56f98SSadaf Ebrahimi        --with-included-libtasn1 --with-included-unistring --without-p11-kit \
152*62c56f98SSadaf Ebrahimi        --disable-shared --disable-guile --disable-doc \
153*62c56f98SSadaf Ebrahimi    && make ${MAKEFLAGS_PARALLEL} \
154*62c56f98SSadaf Ebrahimi    && make install \
155*62c56f98SSadaf Ebrahimi    && rm -rf /tmp/gnutls*
156*62c56f98SSadaf Ebrahimi
157*62c56f98SSadaf EbrahimiENV GNUTLS_NEXT_CLI=/usr/local/gnutls-3.7.2/bin/gnutls-cli
158*62c56f98SSadaf EbrahimiENV GNUTLS_NEXT_SERV=/usr/local/gnutls-3.7.2/bin/gnutls-serv
159