From a7d6923c982b5e2da2a48dd1fab11dc4244e9830 Mon Sep 17 00:00:00 2001
From: Jens Georg <jens.georg@desy.de>
Date: Tue, 29 Sep 2020 18:18:23 +0200
Subject: [PATCH] Add Ubuntu 20.04 to the built distributions

For now run in parallel with bionic; We can drop bionic if focal builds
reasonably well
---
 dockerfiles/focal.docker           | 56 ++++++++++++++++++++++++++++++
 vars/buildDoocsLibrary.groovy      |  4 ++-
 vars/buildDoocsTargetConfig.groovy |  7 +++-
 vars/buildEpicsForDoocs.groovy     |  5 ++-
 vars/buildTestDeploy.groovy        |  2 ++
 5 files changed, 71 insertions(+), 3 deletions(-)
 create mode 100644 dockerfiles/focal.docker

diff --git a/dockerfiles/focal.docker b/dockerfiles/focal.docker
new file mode 100644
index 0000000..ecbaa63
--- /dev/null
+++ b/dockerfiles/focal.docker
@@ -0,0 +1,56 @@
+FROM ubuntu:focal
+ENV http_proxy http://xfelproxy.desy.de:3128
+ENV https_proxy http://xfelproxy.desy.de:3128
+ENV DEBIAN_FRONTEND noninteractive
+
+RUN apt-get update && \
+    apt-get install -y software-properties-common apt-utils && \
+    add-apt-repository -y universe && \
+    add-apt-repository -y ppa:git-core/ppa && \
+    apt-get update && \
+    apt-get upgrade -y && \
+    apt-get dist-upgrade -y && \
+    apt-get install -y sudo wget python3-pip locales \ 
+        g++ valgrind cppcheck lcov doxygen procmail make git gdb cmake ninja-build \
+        libboost-all-dev libxml++2.6-dev \
+        libldap2-dev libzmq3-dev rpcbind \
+        libreadline-dev \
+        qtbase5-dev \
+        python2.7-dev python-numpy python3-dev python3-numpy \
+        python-pytest \
+        libxmu6 csh libxrandr2 \
+        libncurses5-dev \
+        linux-headers-generic \
+        graphviz \
+        clang \
+        libhdf5-dev \
+        liblua5.3-dev \
+        python3-sphinx \
+        libgsl-dev \
+        libssl-dev \
+        libpqxx-dev \
+        libfftw3-dev \
+        subversion \
+        vim-common \
+        netcat-openbsd \
+        libarmadillo-dev \
+        libjsoncpp-dev \
+        python3-pytest \
+        libxerces-c-dev && \
+    useradd -u 30996 msk_jenkins && \
+    ln -sfn /usr/lib/x86_64-linux-gnu/libzmq.so.5 /usr/lib/x86_64-linux-gnu/libzmq.so.3 && \
+    pip3 install meson
+
+RUN echo "Defaults set_home" >> /etc/sudoers && \
+    echo 'Acquire::http::proxy "http://xfelproxy.desy.de:3128/";' > /etc/apt/apt.conf && \
+    echo 'http_proxy=http://xfelproxy.desy.de:3128' >> /etc/environment && \
+    echo 'https_proxy=https://xfelproxy.desy.de:3128' >> /etc/environment && \
+    git config --system http.proxy http://xfelproxy.desy.de:3128 && \
+    git config --system https.proxy http://xfelproxy.desy.de:3128
+   
+# NOTE: This last line (symlink for libzmq.so.3) is a hack for a bug in DOOCS serverlib, which has the version number hardcoded.
+   
+ADD lcov-to-cobertura-xml /common/lcov_cobertura-1.6
+
+# Start rpcbind at launch of the container, required for DOOCS
+ENTRYPOINT ["bash", "-c", "rpcbind -f -w ; bash"]
diff --git a/vars/buildDoocsLibrary.groovy b/vars/buildDoocsLibrary.groovy
index cd1882d..6ed218c 100644
--- a/vars/buildDoocsLibrary.groovy
+++ b/vars/buildDoocsLibrary.groovy
@@ -14,7 +14,9 @@ def call(String libraryName, ArrayList<String> dependencyList) {
                  'xenial-tsan',
                  'xenial-asan',
                  'bionic-Debug',
-                 'bionic-Release' ]
+                 'bionic-Release',
+                 'focal-Debug',
+                 'focal-Release']
 
   script {
     node('Docker') {
diff --git a/vars/buildDoocsTargetConfig.groovy b/vars/buildDoocsTargetConfig.groovy
index fc5bf35..4da509a 100644
--- a/vars/buildDoocsTargetConfig.groovy
+++ b/vars/buildDoocsTargetConfig.groovy
@@ -13,7 +13,9 @@ def call() {
                  'xenial-tsan',
                  'xenial-asan',
                  'bionic-Debug',
-                 'bionic-Release' ]
+                 'bionic-Release',
+                 'focal-Debug',
+                 'focal-Release']
 
   pipeline {
     agent none
@@ -55,6 +57,9 @@ def transformIntoStep(String buildName) {
               if [ "${label}" == "bionic" ]; then
                 DOOCSARCH=Ubuntu-18.04-x86_64
               fi
+              if [ "${label]" == "focal" ]; then
+                DOOCSARCH=Ubuntu-20.04-x86_64
+              fi
               echo "export DOOCSARCH=\${DOOCSARCH}" > /export/doocs/doocsarch.env
               sudo -H -u msk_jenkins git clone http://doocs-git.desy.de/cgit/doocs/\${DOOCSARCH}.git
               mkdir -p /export/doocs/\${DOOCSARCH}/lib/pkgconfig
diff --git a/vars/buildEpicsForDoocs.groovy b/vars/buildEpicsForDoocs.groovy
index 8d46983..a284680 100644
--- a/vars/buildEpicsForDoocs.groovy
+++ b/vars/buildEpicsForDoocs.groovy
@@ -13,7 +13,10 @@ def call() {
                  'xenial-tsan',
                  'xenial-asan',
                  'bionic-Debug',
-                 'bionic-Release' ]
+                 'bionic-Release',
+                 'focal-Debug',
+                 'focal-Release' ]
+
 
   pipeline {
     agent none
diff --git a/vars/buildTestDeploy.groovy b/vars/buildTestDeploy.groovy
index 751f0f4..ca6e685 100644
--- a/vars/buildTestDeploy.groovy
+++ b/vars/buildTestDeploy.groovy
@@ -13,6 +13,8 @@ def call(ArrayList<String> dependencyList, String gitUrl='',
                                    'xenial-asan',
                                    'bionic-Debug',
                                    'bionic-Release',
+                                   'focal-Debug',
+                                   'focal-Release',
                                    'tumbleweed-Debug',
                                    'tumbleweed-Release']) {
 
-- 
GitLab