6 # -o pipefail: Fail on errors in scripts this calls, give stacktrace
9 # Verify exactly 1 RPM is in the path we expect
10 set -- $HOME/rpmbuild/RPMS/noarch/*.rpm
12 echo "Found one RPM in build out dir, as expected"
14 echo "Expected 1 RPM, found $#"
18 # If path is globbed (/path/to/*.rpm), expand it
19 path=$(sudo find / -wholename $HOME/rpmbuild/RPMS/noarch/*.rpm)
21 # If no RPM found, fail clearly
28 if [ -f /usr/bin/yum ]; then
29 # Requirements for package where SRPM was built into noarch on CentOS CBS
30 # rpm -qp opendaylight-8.0.0-0.1.20171125rel2049.el7.noarch.rpm --requires
31 # shellcheck disable=SC2034
32 declare -a expected_deps=( "/bin/bash"
35 "rpmlib(CompressedFileNames) <= 3.0.4-1"
36 "rpmlib(FileDigests) <= 4.6.0-1"
37 "rpmlib(PartialHardlinkSets) <= 4.0.4-1"
38 "rpmlib(PayloadFilesHavePrefix) <= 4.0-1"
40 "rpmlib(PayloadIsXz) <= 5.2-1" )
42 elif [ -f /usr/bin/zypper ]; then
43 declare -a expected_deps=( "/bin/bash"
46 "rpmlib(CompressedFileNames) <= 3.0.4-1"
47 "rpmlib(PayloadFilesHavePrefix) <= 4.0-1"
49 "rpmlib(PayloadIsLzma) <= 4.4.6-1" )
53 # Karaf 4 distros also have a /usr/bin/env requirement INTPAK-120
54 if [[ ! $path == *opendaylight-6* ]]; then
55 expected_deps+=( "/usr/bin/env" )
58 # shellcheck disable=SC2034
59 mapfile -t actual_deps < <( rpm -qp $HOME/rpmbuild/RPMS/noarch/*.rpm --requires )
60 # shellcheck disable=SC2154 disable=SC2145
61 printf 'Dependency found: %s\n' "${actual_deps[@]}"
63 # shellcheck disable=SC2154,SC2145,SC2034,SC2207
64 diff_deps=(`echo "${expected_deps[@]}" "${actual_deps[@]}" | tr ' ' '\n' | sort | uniq -u`)
66 # shellcheck disable=SC2154 disable=SC2145 disable=SC2068 disable=SC2170 disable=SC1083
67 if [ ${#diff_deps[*]} -eq 0 ]; then
68 echo "RPM requirements are as expected"
70 echo "RPM requirements don't match the expected requirements"
71 # shellcheck disable=SC2154 disable=SC2145
72 printf 'Dependency mismatch: %s\n' ${diff_deps[@]}