docker-playground/debian-bookworm-build/Dockerfile

219 lines
5.5 KiB
Docker

# Image for building all Osmocom projects in master/gerrit/ttcn3 jenkins jobs
ARG REGISTRY=docker.io
ARG UPSTREAM_DISTRO=debian:bookworm
FROM ${REGISTRY}/${UPSTREAM_DISTRO}
# Arguments used after FROM must be specified again
ARG OSMOCOM_REPO_MIRROR="https://downloads.osmocom.org"
ARG OSMOCOM_REPO_PATH="packages/osmocom:"
ARG OSMOCOM_REPO="$OSMOCOM_REPO_MIRROR/${OSMOCOM_REPO_PATH}/nightly/Debian_12/"
ARG UID
ARG LLVM_VERSION="14.0.0"
# Copy from common dir
COPY .common/respawn.sh /usr/local/bin/respawn.sh
COPY .common/Release.key /etc/apt/trusted.gpg.d/obs.osmocom.org.asc
# Configure build user, disable installing man pages
# * /usr/local: osmo-python-tests's contrib/jenkins.sh writes there
# * man pages: without them we avoid waiting for "generating manpages"
RUN set -x && \
useradd --uid=${UID} build && \
mkdir /build && \
chown -R build:build /build /usr/local && \
\
echo "path-exclude=/usr/share/man/*" \
> /etc/dpkg/dpkg.cfg.d/exclude-man-pages && \
rm -rf /usr/share/man/
# Install LLVM-embedded-toolchain-for-Arm
RUN if [ "$(arch)" != "x86_64" ]; then \
echo "ERROR: use debian-bookworm-build-arm instead"; \
exit 1; \
fi && \
set -x && \
apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
libtinfo5 \
wget \
&& \
apt-get clean && \
wget https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-${LLVM_VERSION}/LLVMEmbeddedToolchainForArm-${LLVM_VERSION}-linux.tar.gz && \
tar -xf LLVMEmbeddedToolchainForArm-${LLVM_VERSION}-linux.tar.gz && \
rm LLVMEmbeddedToolchainForArm-${LLVM_VERSION}-linux.tar.gz && \
mv LLVMEmbeddedToolchainForArm-${LLVM_VERSION} /opt/llvm-arm && \
/opt/llvm-arm/bin/clang --version && \
/opt/llvm-arm/bin/clang --print-targets
# Install packages from Debian repositories (alphabetic order)
RUN set -x && \
apt-get update && \
apt-get install -y --no-install-recommends \
asciidoc \
asciidoc-dblatex \
autoconf \
autoconf-archive \
autogen \
automake \
bc \
bison \
build-essential \
bzip2 \
ca-certificates \
ccache \
cmake \
coccinelle \
cppcheck \
curl \
dahdi-source \
dblatex \
dbus \
debhelper \
devscripts \
dh-autoreconf \
docbook5-xml \
doxygen \
equivs \
flex \
g++ \
gawk \
gcc \
gcc-arm-none-eabi \
ghostscript \
git \
gnupg \
graphviz \
htop \
iproute2 \
latexmk \
lcov \
libaio-dev \
libasound2-dev \
libboost-all-dev \
libc-ares-dev \
libcdk5-dev \
libcsv-dev \
libdbd-sqlite3 \
libdbi-dev \
libelf-dev \
libffi-dev \
libfftw3-dev \
libgmp-dev \
libgnutls28-dev \
libgps-dev \
libgsm1-dev \
libjansson-dev \
liblua5.3-dev \
libmnl-dev \
libncurses5-dev \
libnewlib-arm-none-eabi \
libnftables-dev \
libnl-3-dev \
libnl-route-3-dev \
liboping-dev \
libortp-dev \
libpcap-dev \
libpcsclite-dev \
libreadline-dev \
librsvg2-bin \
libsctp-dev \
libsigsegv-dev \
libsnmp-dev \
libsofia-sip-ua-glib-dev \
libsqlite3-dev \
libssl-dev \
libtalloc-dev \
libtinfo5 \
libtool \
liburing-dev \
libusb-1.0-0-dev \
libusb-dev \
libxml2-utils \
libzmq3-dev \
locales \
lua-socket \
make \
mscgen \
ofono \
openssh-client \
patchelf \
picolibc-arm-none-eabi \
pkg-config \
python3 \
python3-gi \
python3-mako \
python3-nwdiag \
python3-pip \
python3-pyflakes \
python3-setuptools \
python3-usb \
python3-yaml \
rsync \
sdcc \
source-highlight \
sqlite3 \
stow \
sudo \
swig \
systemd \
tcpdump \
telnet \
tex-gyre \
texinfo \
unzip \
xsltproc \
&& \
apt-get clean
# Install pip dependencies (alphabetic order)
# break-system-packages: inside docker it's fine to install pkgs system-wide
ADD https://gitea.osmocom.org/sim-card/pysim/raw/branch/master/requirements.txt /tmp/pysim_requirements.txt
RUN set -x && \
cat /tmp/pysim_requirements.txt && \
pip3 install --break-system-packages \
'git+https://github.com/eriwen/lcov-to-cobertura-xml.git' \
'git+https://github.com/osmocom/sphinx-argparse@master#egg=sphinx-argparse' \
'git+https://github.com/podshumok/python-smpplib.git' \
'pydbus' \
'pylint' \
'pysispm' \
'sphinx' \
'sphinxcontrib-napoleon' \
-r /tmp/pysim_requirements.txt
# Install osmo-python-tests
ADD https://gerrit.osmocom.org/plugins/gitiles/python/osmo-python-tests/+/master?format=TEXT /tmp/osmo-python-tests-commit
RUN set -x && \
git clone --depth=1 https://gerrit.osmocom.org/python/osmo-python-tests osmo-python-tests && \
cd osmo-python-tests && \
python3 setup.py clean build install && \
cd .. && \
rm -rf osmo-python-tests
# Install osmo-ci.git/scripts to /usr/local/bin
ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-ci/+/master?format=TEXT /tmp/osmo-ci-commit
RUN set -x && \
git clone --depth=1 https://gerrit.osmocom.org/osmo-ci osmo-ci && \
su build -c "cd osmo-ci/scripts && cp -v *.sh *.py /usr/local/bin" && \
rm -rf osmo-ci
# Install osmo-gsm-manuals to /opt/osmo-gsm-manuals
ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-gsm-manuals/+/master?format=TEXT /tmp/osmo-gsm-manuals-commit
RUN git -C /opt clone --depth=1 https://gerrit.osmocom.org/osmo-gsm-manuals
# Install packages from Osmocom OBS nightly repository
# * osmo-remsim: libulfius
# * osmo-trx: liblimesuite-dev, libuhd-dev
ADD $OSMOCOM_REPO/Release /tmp/Release
RUN set -x && \
echo "deb [signed-by=/etc/apt/trusted.gpg.d/obs.osmocom.org.asc] $OSMOCOM_REPO ./" \
> /etc/apt/sources.list.d/osmocom-nightly.list && \
apt-get update && \
apt-get install -y --no-install-recommends \
liblimesuite-dev \
libuhd-dev \
libulfius-dev \
&& \
apt-get clean