From b9d8f2506238bfe9291ee535b18901d9e41894ba Mon Sep 17 00:00:00 2001
From: Martin Hierholzer <martin.hierholzer@desy.de>
Date: Tue, 8 Feb 2022 16:47:07 +0100
Subject: [PATCH] use pigz instead of gzip to compress artefacts

---
 dockerfiles/focal.docker      |  2 +-
 dockerfiles/tumbleweed.docker |  2 +-
 vars/buildDoocsLibrary.groovy |  2 +-
 vars/helper.groovy            | 10 +++++-----
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/dockerfiles/focal.docker b/dockerfiles/focal.docker
index fed6282..7355fb0 100644
--- a/dockerfiles/focal.docker
+++ b/dockerfiles/focal.docker
@@ -10,7 +10,7 @@ RUN apt-get update && \
     apt-get update && \
     apt-get upgrade -y && \
     apt-get dist-upgrade -y && \
-    apt-get install -y sudo wget python3-pip locales \ 
+    apt-get install -y sudo wget python3-pip locales pigz \ 
         g++ valgrind cppcheck lcov doxygen procmail make git gdb cmake ninja-build \
         libboost-all-dev libxml++2.6-dev \
         libldap2-dev libzmq3-dev rpcbind \
diff --git a/dockerfiles/tumbleweed.docker b/dockerfiles/tumbleweed.docker
index e44655d..fccfde2 100644
--- a/dockerfiles/tumbleweed.docker
+++ b/dockerfiles/tumbleweed.docker
@@ -5,7 +5,7 @@ ENV https_proxy http://xfelproxy.desy.de:3128
 RUN zypper refresh && \
     zypper up -y && \
     zypper dup -y --force-resolution --allow-vendor-change && \
-    zypper install -y lsb-release wget sudo tar gzip && \
+    zypper install -y lsb-release wget sudo tar gzip pigz && \
     zypper install -y gcc-c++ cmake valgrind cppcheck lcov doxygen procmail make  gdb meson ninja && \
     zypper install -y libxml++26-devel && \
     zypper install -y python3-devel python3-numpy-devel && \
diff --git a/vars/buildDoocsLibrary.groovy b/vars/buildDoocsLibrary.groovy
index a543d20..dfd75b1 100644
--- a/vars/buildDoocsLibrary.groovy
+++ b/vars/buildDoocsLibrary.groovy
@@ -144,7 +144,7 @@ def transformIntoStep(String libraryName, ArrayList<String> dependencyList, Stri
               touch mv /scratch/artefact.list
               mv /scratch/artefact.list /scratch/dependencies.${JOBNAME_CLEANED}.list
               echo /scratch/dependencies.${JOBNAME_CLEANED}.list >> export.list.installed
-              sudo -H -u msk_jenkins tar zcf install-${JOBNAME_CLEANED}-${label}-${buildType}.tgz --files-from export.list.installed
+              sudo -H -u msk_jenkins tar cf install-${JOBNAME_CLEANED}-${label}-${buildType}.tgz --files-from export.list.installed --use-compress-program="pigz -9 -p32"
             """
             archiveArtifacts artifacts: "install-${JOBNAME_CLEANED}-${label}-${buildType}.tgz", onlyIfSuccessful: false
           }
diff --git a/vars/helper.groovy b/vars/helper.groovy
index fb4bb2d..b55675c 100644
--- a/vars/helper.groovy
+++ b/vars/helper.groovy
@@ -179,7 +179,7 @@ def doDependencyArtefacts(ArrayList<String> dependencyList, String label, String
 
       // unpack artefact
       sh """
-        tar zxf \"artefacts/install-${dependency_cleaned}-${label}-${buildType}.tgz\" -C / --keep-directory-symlink
+        tar xf \"artefacts/install-${dependency_cleaned}-${label}-${buildType}.tgz\" -C / --keep-directory-symlink --use-compress-program="pigz -9 -p32"
       """
 
       // keep track of dependencies to download - used when dependees need to resolve our dependencies
@@ -218,7 +218,7 @@ def doBuilddirArtefact(String label, String buildType) {
     // Then obtain artefacts of dependencies (from /scratch/artefact.list)
     sh """
       for a in artefacts/build-*-${label}-${buildType}.tgz ; do
-        sudo -H -E -u msk_jenkins tar zxf \"\${a}\" -C /
+        sudo -H -E -u msk_jenkins tar xf \"\${a}\" -C / --use-compress-program="pigz -9 -p32"
       done
 
       touch /scratch/artefact.list
@@ -236,7 +236,7 @@ def doBuilddirArtefact(String label, String buildType) {
   sh """
     if ls artefacts/install-*-${label}-${buildType}.tgz 1>/dev/null 2>&1; then
       for a in artefacts/install-*-${label}-${buildType}.tgz ; do
-        tar zxf \"\${a}\" -C /
+        tar xf \"\${a}\" -C / --use-compress-program="pigz -9 -p32"
       done
     fi
   """
@@ -287,7 +287,7 @@ EOF
   script {
     // generate and archive artefact from build directory (used for the analysis job)
     sh """
-      sudo -H -E -u msk_jenkins tar zcf build-${JOBNAME_CLEANED}-${label}-${buildType}.tgz /scratch
+      sudo -H -E -u msk_jenkins tar cf build-${JOBNAME_CLEANED}-${label}-${buildType}.tgz /scratch --use-compress-program="pigz -9 -p32"
     """
     archiveArtifacts artifacts: "build-${JOBNAME_CLEANED}-${label}-${buildType}.tgz", onlyIfSuccessful: false
   }
@@ -470,7 +470,7 @@ def doInstall(String label, String buildType) {
     if [ -e /scratch/artefact.list ]; then
       cp /scratch/artefact.list scratch/dependencies.${JOBNAME_CLEANED}.list
     fi
-    sudo -H -E -u msk_jenkins tar zcf ${WORKSPACE}/install-${JOBNAME_CLEANED}-${label}-${buildType}.tgz .
+    sudo -H -E -u msk_jenkins tar cf ${WORKSPACE}/install-${JOBNAME_CLEANED}-${label}-${buildType}.tgz . --use-compress-program="pigz -9 -p32"
   """
   
   // Archive the artefact tar ball (even if other branches of this build failed - TODO: do we really want to do that?)
-- 
GitLab