blob: 9223a4fa8c8421f2acffed9297b19f6f7bc0b090 [file] [log] [blame]
Benjamin Copelande2772152020-06-17 11:54:56 +01001FROM ubuntu:bionic
2
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -05003ARG TOOLS_DIR=/home/buildslave/tools
4
5ENV ARMLMD_LICENSE_FILE=27000@ci.trustedfirmware.org
Benjamin Copelande2772152020-06-17 11:54:56 +01006ENV DEBIAN_FRONTEND=noninteractive
Riku Voipio7c8dbb02020-10-19 08:57:08 +00007ENV PATH=$TOOLS_DIR/bin:${PATH}
Benjamin Copelande2772152020-06-17 11:54:56 +01008ENV PLANTUML_JAR_PATH=/usr/share/plantuml/plantuml.jar
9ENV PKG_DEPS="\
Mate Toth-Pal4e6f1012020-07-07 10:13:07 +020010 bison \
Benjamin Copelande2772152020-06-17 11:54:56 +010011 build-essential \
Leonardo Sandoval23c34d12020-10-15 12:20:59 -050012 clang-tools-6.0 \
Benjamin Copelande2772152020-06-17 11:54:56 +010013 curl \
14 default-jre \
15 device-tree-compiler \
16 doxygen \
Karl Zhangedefe662020-09-15 18:12:19 +080017 exuberant-ctags \
Mate Toth-Pal4e6f1012020-07-07 10:13:07 +020018 flex \
Benjamin Copeland08f7e242020-06-30 13:38:41 +010019 g++-multilib \
20 gcc-multilib \
Benjamin Copelande2772152020-06-17 11:54:56 +010021 git \
22 graphviz \
23 jq \
Karl Zhangedefe662020-09-15 18:12:19 +080024 lcov \
Benjamin Copelande2772152020-06-17 11:54:56 +010025 libffi-dev \
26 libssl-dev \
Leonardo Sandoval04851952020-10-15 12:05:12 -050027 libxml-libxml-perl \
Benjamin Copelande2772152020-06-17 11:54:56 +010028 openjdk-8-jdk \
29 openssh-server \
30 perl \
31 python \
32 python-psutil \
33 python3 \
34 python3-crypto \
35 python3-dev \
36 python3-psutil \
37 python3-pyasn1 \
38 srecord \
39 sudo \
40 tree \
41 unzip \
42 virtualenv \
43 wget \
44 zip \
45"
46
47# Can be overriden at build time
48ARG BUILDSLAVE_PASSWORD=buildslave
Benjamin Copelande2772152020-06-17 11:54:56 +010049
50COPY requirements_*.txt /opt/
Benjamin Copelandf7991f22020-07-30 14:01:21 +010051COPY setup-sshd /usr/sbin/setup-sshd
Benjamin Copelande2772152020-06-17 11:54:56 +010052
Leonardo Sandoval0460f542020-10-29 17:25:52 -060053RUN set -e \
54 && apt update -q=2 \
55 && apt dist-upgrade -q=2 --yes \
56 && apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} \
57 && curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash \
58 && apt update -q=2 \
59 && apt install -q=2 --yes --no-install-recommends git-lfs \
60 && curl -s https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py \
61 && python2 /tmp/get-pip.py \
62 && pip2 install --no-cache-dir -r /opt/requirements_python2.txt \
63 && python3 /tmp/get-pip.py \
64 && pip3 install --no-cache-dir -r /opt/requirements_python3.txt \
65 && ln -s -f /usr/bin/python3 /usr/bin/python \
66 && useradd -m -s /bin/bash buildslave \
67 && echo "buildslave:$BUILDSLAVE_PASSWORD" | chpasswd \
68 && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \
69 && chmod 0440 /etc/sudoers.d/jenkins \
70 && mkdir -p /var/run/sshd /home/buildslave/tools \
71 && wget -q http://github.com/danmar/cppcheck/releases/download/1.81/cppcheck-1.81.tar.gz -O /tmp/cppcheck.tar.gz \
72 && tar -xf /tmp/cppcheck.tar.gz -C /opt \
73 && (cd /opt/cppcheck-*; make CFGDIR=/opt/cppcheck-1.81/cfg; make install; make clean) \
74 && curl --create-dirs -fsSLo ${PLANTUML_JAR_PATH} https://repo1.maven.org/maven2/net/sourceforge/plantuml/plantuml/1.2019.6/plantuml-1.2019.6.jar \
Leonardo Sandoval0460f542020-10-29 17:25:52 -060075 && curl --create-dirs -fsSLo /tmp/cmake-Linux-x86_64.tar.gz https://cmake.org/files/v3.15/cmake-3.15.0-Linux-x86_64.tar.gz \
76 && tar -xf /tmp/cmake-Linux-x86_64.tar.gz -C /home/buildslave/tools --strip-components=1 \
Leonardo Sandoval0460f542020-10-29 17:25:52 -060077 && chown -R buildslave:buildslave /home/buildslave/tools /usr/share/plantuml \
78 && apt clean \
79 && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Benjamin Copelande2772152020-06-17 11:54:56 +010080
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -050081## Latest toolchains, available in $PATH. There can be newer versions of toolchains at
82## upstream projects but these are latest for the docker image
83
84### Install GNU toolchain (arm-none-eabi)
85ARG GNU_GCC_ARM_VERSION="7-2018-q2-update"
86ARG GNU_GCC_ARM_TAR="gcc-arm-none-eabi-${GNU_GCC_ARM_VERSION}-linux.tar.bz2"
87ARG GNU_GCC_ARM_URL='https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2\
88?revision=bc2c96c0-14b5-4bb4-9f18-bceb4050fee7?product=GNU%20Arm%20Embedded%20Toolchain%20Downloads,64-bit,,Linux,7-2018-q2-update'
89
Leonardo Sandoval0460f542020-10-29 17:25:52 -060090RUN curl --create-dirs -fsSLo /tmp/${GNU_GCC_ARM_TAR} ${GNU_GCC_ARM_URL} \
91 && tar -xf /tmp/${GNU_GCC_ARM_TAR} -C ${TOOLS_DIR} --strip-components=1 \
92 && rm /tmp/${GNU_GCC_ARM_TAR}
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -050093
94### Install GNU toolchain (aarch64-none-elf)
95ARG GNU_GCC_AARCH64_VERSION="9.2-2019.12"
96ARG GNU_GCC_AARCH64_TAR="gcc-arm-${GNU_GCC_AARCH64_VERSION}-x86_64-aarch64-none-elf.tar.xz"
97ARG GNU_GCC_AARCH64_URL="https://developer.arm.com/-/media/Files/downloads/gnu-a/$GNU_GCC_AARCH64_VERSION/binrel/${GNU_GCC_AARCH64_TAR}"
98
Leonardo Sandoval0460f542020-10-29 17:25:52 -060099RUN curl --create-dirs -fsSLo /tmp/${GNU_GCC_AARCH64_TAR} ${GNU_GCC_AARCH64_URL} \
100 && tar -Jxf /tmp/${GNU_GCC_AARCH64_TAR} -C ${TOOLS_DIR} --strip-components=1 \
101 && rm /tmp/${GNU_GCC_AARCH64_TAR}
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -0500102
103### Install Arm Clang (armclang)
104ARG ARM_CLANG_VERSION="6.13"
105ARG ARM_CLANG_TAR="DS500-BN-00026-r5p0-15rel0.tgz"
106ARG ARM_CLANG_URL="https://developer.arm.com/-/media/Files/downloads/compiler/DS500-BN-00026-r5p0-15rel0.tgz\
107?revision=6a961cf7-1d9a-4664-900b-11d20552dbc7?product=Download%20Arm%20Compiler,64-bit,,Linux,6.13"
108ARG ARM_CLANG_INSTALL_DIR="${TOOLS_DIR}/armclang"
109
Leonardo Sandoval0460f542020-10-29 17:25:52 -0600110RUN curl --create-dirs -fsSLo /tmp/${ARM_CLANG_TAR} ${ARM_CLANG_URL} \
111 && mkdir -p ${ARM_CLANG_INSTALL_DIR} \
112 && tar -xzf /tmp/${ARM_CLANG_TAR} -C ${ARM_CLANG_INSTALL_DIR} \
113 && ${ARM_CLANG_INSTALL_DIR}/install_x86_64.sh \
114 --no-interactive \
115 --i-agree-to-the-contained-eula \
116 -d ${TOOLS_DIR} \
117 && rm -rf ${ARM_CLANG_INSTALL_DIR} /tmp/${ARM_CLANG_TAR}
Leonardo Sandoval7c2a7f42020-08-27 11:31:34 -0500118
Benjamin Copelandf7991f22020-07-30 14:01:21 +0100119EXPOSE 22
120ENTRYPOINT ["/usr/sbin/setup-sshd"]