diff options
author | Oliver Smith <osmith@sysmocom.de> | 2019-10-11 09:40:08 +0200 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2019-10-18 10:44:11 +0200 |
commit | 7c987a83b36c05e0cb4fde4c57cb7b0d558e7c88 (patch) | |
tree | 14bfedf7b3271005523027435ba44462b963d17b | |
parent | f58d2231a9604080a55328e802881804fe329b5b (diff) |
docker: only one apt/pip cmd for installing deps
Make the retry logic in rebuild_osmocom_jenkins_image.sh obsolete by
merging all apt commands for installing dependencies into one. This
makes development easier, because the docker image will not get rebuilt
again when any error happens (whether that error was related to the apt
cache or not, during development it is mostly not related to the apt
cache).
This also makes it easier to read through the list of dependencies, and
removes duplicate (or even conflicting, pkg-config vs pkgconf) entries.
While at it, also merge the pip commands into one.
Change-Id: I190e62dd39533b284c93107607dac24ece6d7be6
-rw-r--r-- | docker/Dockerfile_osmocom_jenkins.amd64 | 161 | ||||
-rwxr-xr-x | docker/rebuild_osmocom_jenkins_image.sh | 6 |
2 files changed, 111 insertions, 56 deletions
diff --git a/docker/Dockerfile_osmocom_jenkins.amd64 b/docker/Dockerfile_osmocom_jenkins.amd64 index 6b43911..1ff2d0b 100644 --- a/docker/Dockerfile_osmocom_jenkins.amd64 +++ b/docker/Dockerfile_osmocom_jenkins.amd64 @@ -5,15 +5,115 @@ FROM debian:${DEBIAN_VERSION} # https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact ARG DEBIAN_VERSION +# Install apt dependencies (keep in alphabetic order) RUN \ - dpkg --add-architecture i386 && \ - DEBIAN_FRONTEND=noninteractive apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends wget make - -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gcc g++ make git -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends sudo -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends unzip bzip2 python + dpkg --add-architecture i386 && \ + DEBIAN_FRONTEND=noninteractive apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + asciidoc \ + asciidoc-dblatex \ + autoconf \ + autoconf-archive \ + automake \ + bc \ + bison \ + bzip2 \ + coccinelle \ + cppcheck \ + dblatex \ + dbus \ + debhelper \ + devscripts \ + dh-autoreconf \ + dh-systemd \ + docbook5-xml \ + doxygen \ + flex \ + g++ \ + gawk \ + gcc \ + gcc-arm-none-eabi \ + git \ + git-buildpackage \ + graphviz \ + htop \ + lcov \ + libaio-dev \ + libasound2-dev \ + libboost-all-dev \ + libc-ares-dev \ + libcsv-dev \ + libdbd-sqlite3 \ + libdbi-dev \ + libffi-dev \ + libfftw3-dev \ + libgmp-dev \ + libgnutls28-dev \ + libgps-dev \ + libgsm1-dev \ + liblua5.3-dev \ + libmnl-dev \ + libncurses5-dev \ + libnewlib-arm-none-eabi \ + liboping-dev \ + libortp-dev \ + libpcap-dev \ + libpcsclite-dev \ + libreadline-dev \ + libsctp-dev \ + libsigsegv-dev \ + libsnmp-dev \ + libsofia-sip-ua-glib-dev \ + libsqlite3-dev \ + libssl-dev \ + libtalloc-dev \ + libtool \ + libusb-1.0-0-dev \ + libusb-dev \ + libxml2-utils \ + libzmq3-dev \ + locales \ + lua-socket \ + make \ + mscgen \ + ofono \ + openssh-client \ + osc \ + patchelf \ + pkg-config \ + python \ + python3 \ + python3-gi \ + python3-mako \ + python3-pip \ + python3-pyflakes \ + python3-setuptools \ + python3-usb \ + python3-yaml \ + python-minimal \ + python-nwdiag \ + python-pip \ + python-pychart \ + python-setuptools \ + rsync \ + sdcc \ + sqlite3 \ + stow \ + sudo \ + systemd \ + tcpdump \ + texinfo \ + unzip \ + wget \ + xsltproc + +# Install pip dependencies (keep in alphabetic order) +RUN pip3 install \ + git+https://github.com/podshumok/python-smpplib.git \ + git+https://github.com/eriwen/lcov-to-cobertura-xml.git \ + pydbus \ + pysispm # match the outside user RUN useradd --uid=1000 build @@ -22,58 +122,16 @@ RUN useradd --uid=1000 build RUN mkdir /build RUN chown build:build /build -# still generic -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends doxygen git asciidoc rsync coccinelle - -# for GNU smalltalk -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends flex bison libsigsegv-dev libffi-dev texinfo - -# libosmo-sccp/abis/etc -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends libortp-dev libpcsclite-dev libsctp-dev libfftw3-dev libsnmp-dev libusb-1.0-0-dev libtalloc-dev libgnutls28-dev - -# OsmocomBB -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gcc-arm-none-eabi liblua5.3-dev - -# building -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends libtool pkg-config automake autoconf - -# for osmo-python-tests -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends python3-setuptools python-setuptools python3-pip python-pip - -# for osmo-gsm-manuals -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends xsltproc dblatex docbook5-xml graphviz python-pychart python-nwdiag libxml2-utils asciidoc-dblatex - -# Linux kernel -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y bc - -# and all -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y doxygen g++ libtalloc-dev libpcsclite-dev make gcc pkgconf libtool autoconf autoconf-archive automake libortp-dev asciidoc mscgen git libsctp-dev libpcap-dev osc libc-ares-dev libgps-dev libsofia-sip-ua-glib-dev libssl-dev libsqlite3-dev libusb-dev libffi-dev libfftw3-dev flex bison libdbi-dev libsnmp-dev libncurses5-dev libgsm1-dev python-minimal python3 libdbd-sqlite3 cppcheck htop libgmp-dev gawk texinfo flex bison bc libsigsegv-dev libffi-dev libusb-1.0-0-dev libreadline-dev debhelper devscripts gcc-arm-none-eabi git-buildpackage dh-systemd dh-autoreconf bc openssh-client stow libnewlib-arm-none-eabi libaio-dev libasound2-dev libzmq3-dev libmnl-dev libboost-all-dev sdcc liboping-dev libcsv-dev systemd - -# Add rpath to binaries -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y patchelf - -# Be able to run the osmo-gsm-tester -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y dbus tcpdump sqlite3 python3 python3-yaml python3-mako python3-gi ofono python3-pip python3-usb lua-socket -RUN pip3 install git+git://github.com/podshumok/python-smpplib.git -RUN pip3 install pydbus -RUN pip3 install pysispm -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pyflakes - +# Install osmo-python-tests ADD http://git.osmocom.org/python/osmo-python-tests/patch /tmp/commit RUN git clone git://git.osmocom.org/python/osmo-python-tests && cd osmo-python-tests && ./contrib/jenkins.sh # Set a UTF-8 locale -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y locales - RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ dpkg-reconfigure --frontend=noninteractive locales && \ update-locale LANG=en_US.UTF-8 ENV LANG en_US.UTF-8 -# Code coverage tools -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y lcov -RUN pip3 install git+https://github.com/eriwen/lcov-to-cobertura-xml/ - # osmo-remsim needs libulfius (which indirectly depends on systemd, installed above) ARG LIBULFIUS_VER="2.6.4" ARG LIBULFIUS_PATH="https://github.com/babelouest/ulfius/releases/download/v${LIBULFIUS_VER}" @@ -81,6 +139,7 @@ ADD ${LIBULFIUS_PATH}/libulfius-dev_${LIBULFIUS_VER}_debian_${DEBIAN_VERSION}_x8 ADD ${LIBULFIUS_PATH}/ulfius-dev-full_${LIBULFIUS_VER}_debian_${DEBIAN_VERSION}_x86_64.tar.gz /tmp/ulfius/all.tar.gz RUN cd /tmp/ulfius && \ tar -xvf all.tar.gz && \ + DEBIAN_FRONTEND=noninteractive apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y /tmp/ulfius/*.deb && \ cd ~ && \ rm -r /tmp/ulfius diff --git a/docker/rebuild_osmocom_jenkins_image.sh b/docker/rebuild_osmocom_jenkins_image.sh index 60c516b..5d14d83 100755 --- a/docker/rebuild_osmocom_jenkins_image.sh +++ b/docker/rebuild_osmocom_jenkins_image.sh @@ -2,12 +2,8 @@ # Executes docker build with the given parameters and retry in case of error. function build_once() { - # In case the debian apt archive has become out of sync, try a - # --no-cache build if it fails. - # shellcheck disable=SC2068 - docker build $@ -f Dockerfile_osmocom_jenkins.amd64 . \ - || docker build --no-cache $@ -f Dockerfile_osmocom_jenkins.amd64 . + docker build $@ -f Dockerfile_osmocom_jenkins.amd64 . } # Builds a container with a debian version and tag name as parameter. |