18253: Merge branch 'main' into 18253-doc-gpg-key-updates
[arvados.git] / build / package-testing / rpm-common-test-packages.sh
1 #!/bin/bash
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 set -eu
7
8 # Set up
9 DEBUG=${ARVADOS_DEBUG:-0}
10 STDOUT_IF_DEBUG=/dev/null
11 STDERR_IF_DEBUG=/dev/null
12 if [[ "$DEBUG" != "0" ]]; then
13   STDOUT_IF_DEBUG=/dev/stdout
14   STDERR_IF_DEBUG=/dev/stderr
15 fi
16
17 target=$(basename "$0" | grep -Eo '\bcentos[[:digit:]]+\b')
18
19 yum -q clean all
20 touch /var/lib/rpm/*
21
22 export ARV_PACKAGES_DIR="/arvados/packages/$target"
23
24 rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.before"
25
26 yum install --assumeyes -e 0 $1
27
28 rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.after"
29
30 diff "$ARV_PACKAGES_DIR/$1".{before,after} >"$ARV_PACKAGES_DIR/$1.diff" || true
31
32 # Enable any Software Collections that the package depended on.
33 if [[ -d /opt/rh ]]; then
34     # We have to stage the list to a file, because `ls | while read` would
35     # make a subshell, causing the `source` lines to have no effect.
36     scl_list=$(mktemp)
37     ls /opt/rh >"$scl_list"
38
39     # SCL scripts aren't designed to run with -eu.
40     set +eu
41     while read scl; do
42         source scl_source enable "$scl"
43     done <"$scl_list"
44     set -eu
45     rm "$scl_list"
46 fi
47
48 mkdir -p /tmp/opts
49 cd /tmp/opts
50
51 rpm2cpio $(ls -t "$ARV_PACKAGES_DIR/$1"-*.rpm | head -n1) | cpio -idm 2>/dev/null
52
53 if [[ "$DEBUG" != "0" ]]; then
54   find -name '*.so' | while read so; do
55       echo -e "\n== Packages dependencies for $so =="
56       ldd "$so" \
57           | awk '($3 ~ /^\//){print $3}' | sort -u | xargs rpm -qf | sort -u
58   done
59 fi
60
61 exec /jenkins/package-testing/common-test-packages.sh "$1"