diff --git a/autopackage.sh b/autopackage.sh index 9db885134..a391d292e 100755 --- a/autopackage.sh +++ b/autopackage.sh @@ -36,13 +36,20 @@ function build_rpms() ( # Separate run to see the final .spec in use GEN_SPEC=yes BUILDDIR=$builddir MAKEFLAGS="$MAKEFLAGS" SPDK_VERSION="$version" DEPS=no "$rootdir/rpmbuild/rpm.sh" "$@" # Actual build - BUILDDIR=$builddir MAKEFLAGS="$MAKEFLAGS" SPDK_VERSION="$version" DEPS=no "$rootdir/rpmbuild/rpm.sh" "$@" + BUILDDIR=$builddir MAKEFLAGS="$MAKEFLAGS" SPDK_VERSION="$version" DEPS=no "$rootdir/rpmbuild/rpm.sh" "$@" || return $? install_uninstall_rpms } build_rpm_with_rpmed_dpdk() { + local es=0 + sudo dnf install -y dpdk-devel - build_rpm --with-shared --with-dpdk + build_rpm --with-shared --with-dpdk || es=$? + + if ((es == 11)); then + echo "ERROR: Failed to resolve required build dependencies. Please review the build log." >&2 + fi + return "$es" } build_rpm_from_gen_spec() { diff --git a/rpmbuild/rpm.sh b/rpmbuild/rpm.sh index 7cc853a55..c42cfa6c5 100755 --- a/rpmbuild/rpm.sh +++ b/rpmbuild/rpm.sh @@ -95,8 +95,14 @@ build_macros() { # Don't build dpdk rpm rather define proper requirements for the spdk. macros+=(-D "dpdk 0") macros+=(-D "shared 1") - requirements=${requirements:+$requirements, }"dpdk-devel >= 19.11" - build_requirements=${build_requirements:+$build_requirements, }"dpdk-devel >= 19.11" + # This maps how Epoch is used inside dpdk packages across different distros. It's + # mainly relevant when comparing version of required packages. Default maps to 0. + local -A dpdk_rpm_epoch["fedora"]=2 + local dpdk_version_min=${dpdk_rpm_epoch["$ID"]:-0}:20.11 + local dpdk_req="dpdk-devel >= $dpdk_version_min" + + requirements=${requirements:+$requirements, }"$dpdk_req" + build_requirements=${build_requirements:+$build_requirements, }"$dpdk_req" else dpdk_build_path=$(get_config with-dpdk print) dpdk_path=$(dirname "$dpdk_build_path")