<p>osmith <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ci/+/15761">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  osmith: Looks good to me, approved; Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, but someone else must approve

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

<div style="display:none"> Gerrit-Project: osmo-ci </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I190e62dd39533b284c93107607dac24ece6d7be6 </div>
<div style="display:none"> Gerrit-Change-Number: 15761 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>