Merge branch '8784-dir-listings'
[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 target=$(basename "$0" | grep -Eo '\bcentos[[:digit:]]+\b')
9
10 yum -q clean all
11 touch /var/lib/rpm/*
12
13 export ARV_PACKAGES_DIR="/arvados/packages/$target"
14
15 rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.before"
16
17 yum install --assumeyes $1
18
19 rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.after"
20
21 diff "$ARV_PACKAGES_DIR/$1".{before,after} >"$ARV_PACKAGES_DIR/$1.diff" || true
22
23 # Enable any Software Collections that the package depended on.
24 if [[ -d /opt/rh ]]; then
25     # We have to stage the list to a file, because `ls | while read` would
26     # make a subshell, causing the `source` lines to have no effect.
27     scl_list=$(mktemp)
28     ls /opt/rh >"$scl_list"
29
30     # SCL scripts aren't designed to run with -eu.
31     set +eu
32     while read scl; do
33         source scl_source enable "$scl"
34     done <"$scl_list"
35     set -eu
36     rm "$scl_list"
37 fi
38
39 mkdir -p /tmp/opts
40 cd /tmp/opts
41
42 rpm2cpio $(ls -t "$ARV_PACKAGES_DIR/$1"-*.rpm | head -n1) | cpio -idm 2>/dev/null
43
44 find -name '*.so' | while read so; do
45     echo -e "\n== Packages dependencies for $so =="
46     ldd "$so" \
47         | awk '($3 ~ /^\//){print $3}' | sort -u | xargs rpm -qf | sort -u
48 done
49
50 exec /jenkins/package-testing/common-test-packages.sh "$1"