f0b05dd384
As per os-release(5), if $ID is not recognised, $ID_LIKE can be used to identify similar systems in preference order. Modify the script to try both variables. Also do the same for the RPM build scripts. Signed-off-by: John Levon <john.levon@nutanix.com> Change-Id: I4ed924df01ec678aab232e114d8c9980463c38e0 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9260 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Dong Yi <dongx.yi@intel.com>
59 lines
1.1 KiB
Bash
Executable File
59 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# This script simply iterates over all libs SPDK binaries link
|
|
# to and returns a list of .rpm packages SPDK may depend on. At
|
|
# the end, the list strictly relates to how the SPDK build was
|
|
# ./configure'ed.
|
|
|
|
shopt -s nullglob
|
|
|
|
rpmdir=$(readlink -f "$(dirname "$0")")
|
|
rootdir=$(readlink -f "$rpmdir/../")
|
|
rc=0
|
|
|
|
bins=("$rootdir/"build/{bin,examples}/*)
|
|
(($#)) && bins=("$@")
|
|
|
|
((${#bins[@]} > 0)) || exit 0
|
|
|
|
source /etc/os-release
|
|
|
|
id_ok=no
|
|
|
|
for id in $ID $ID_LIKE; do
|
|
[[ "$id" =~ ^(fedora|centos|rhel) ]] && id_ok=yes
|
|
done
|
|
|
|
if [[ "$id_ok" != "yes" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
declare -A deps=()
|
|
for bin in "${bins[@]}"; do
|
|
if ! type -P "$bin"; then
|
|
printf '%s is missing\n' "$bin" >&2
|
|
rc=1
|
|
continue
|
|
fi
|
|
while read -r name _ lib _; do
|
|
[[ -n $lib ]] || continue
|
|
[[ -z ${deps["$lib"]} ]] || continue
|
|
if [[ ! -e $lib ]]; then
|
|
lib=$name pkg="missing"
|
|
rc=1
|
|
elif ! pkg=$(rpm -qf "$lib"); then
|
|
pkg=${lib##*/}
|
|
fi
|
|
deps["$lib"]=$pkg
|
|
done < <(LD_TRACE_LOADED_OBJECTS=1 "$bin")
|
|
done
|
|
|
|
if [[ -n $LIST_LIBS ]]; then
|
|
for lib in "${!deps[@]}"; do
|
|
echo "$lib:${deps["$lib"]}"
|
|
done
|
|
else
|
|
printf '%s\n' "${deps[@]}"
|
|
fi | sort -u
|
|
|
|
((rc == 0))
|