Merge "Add test for RPM requirements"
[releng/builder.git] / jjb / packaging / test-rpm-deps.sh
1 #!/bin/bash
2
3 # Options:
4 #   -x: Echo commands
5 #   -e: Fail on errors
6 #   -o pipefail: Fail on errors in scripts this calls, give stacktrace
7 set -ex -o pipefail
8
9 # Requirements for package where SRPM was built into noarch on CentOS CBS
10 # rpm -qp opendaylight-8.0.0-0.1.20171125rel2049.el7.noarch.rpm --requires
11 # shellcheck disable=SC2034
12 declare -a expected_deps=( "/bin/bash"
13                            "/bin/sh"
14                            "/usr/bin/env"
15                            "java >= 1:1.8.0"
16                            "rpmlib(CompressedFileNames) <= 3.0.4-1"
17                            "rpmlib(FileDigests) <= 4.6.0-1"
18                            "rpmlib(PartialHardlinkSets) <= 4.0.4-1"
19                            "rpmlib(PayloadFilesHavePrefix) <= 4.0-1"
20                            "shadow-utils"
21                            "rpmlib(PayloadIsXz) <= 5.2-1" )
22
23 # shellcheck disable=SC2034
24 mapfile -t actual_deps < <( rpm -qp /home/$USER/rpmbuild/RPMS/noarch/*.rpm --requires )
25 # shellcheck disable=SC2154 disable=SC2145
26 printf '%s\n' "${{actual_deps[@]}}"
27
28 # shellcheck disable=SC2154 disable=SC2145 disable=SC2034
29 diff_deps=(`echo "${{expected_deps[@]}}" "${{actual_deps[@]}}" | tr ' ' '\n' | sort | uniq -u `)
30 # shellcheck disable=SC2154 disable=SC2145 disable=SC2068 disable=SC2170 disable=SC1083
31 if [ ${{#diff_deps[*]}} -eq 0 ]; then
32     echo "RPM requirements are as expected"
33 else
34     echo "RPM requirements don't match the expected requirements"
35     # shellcheck disable=SC2154 disable=SC2145
36     printf '%s\n' "${{diff_deps[@]}}"
37     exit 1
38 fi