numam-spdk/rpmbuild/rpm-deps.sh
Michal Berger 7a5cc6cad5 rpmbuild: Add script for building .rpm packages out of the SPDK repo
For now this is kept at its very basics. Dependencies are handled
via pgkdep, they are not explicitly defined by the .rpm itself.
Currently, up to four .rpm packages are being built:

spdk
spdk-devel
spdk-libs
spdk-dpdk-lib

Together they include all binaries|libs|header files + some setup
scripts which are commonly used throughout the repo. Installation
paths are hardcoded to:

/usr/local/{bin,lib{,/dpdk},include}:
  - binaries
  - libraries
  - header files
/usr/libexec/spdk:
  - scripts
/etc:
  - configuration files

Signed-off-by: Michal Berger <michalx.berger@intel.com>
Change-Id: Ic5f067c4e7b8da3d697ee469bc9c794d5a0a035b
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6436
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2021-04-15 11:24:57 +00:00

50 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 == fedora || $ID == centos || $ID == rhel ]] || exit 0
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))