From 23ed60ea31186d2c3b67f5fb2c81b6a3f74052a0 Mon Sep 17 00:00:00 2001 From: Michal Berger Date: Sat, 24 Sep 2022 22:36:25 +0200 Subject: [PATCH] rpmbuild: Fix dpdk version check and bump it to 20.11 dpdk packages are versioned differently across different distros. In particular, packages under fedora use Epoch in the spec. This requires the condition to include this value, otherwise rpmbuild assumes it's 0 failing the check. Also, add extra log to build_rpm_with_rpmed_dpdk test to indicate when rpmbuild fails due to not resolved build dependencies. Signed-off-by: Michal Berger Change-Id: Ia4bab6e6486e20c24f7386a085b499462fe5fe0d Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14662 Reviewed-by: Pawel Piatek Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Konrad Sztyber Tested-by: SPDK CI Jenkins --- autopackage.sh | 11 +++++++++-- rpmbuild/rpm.sh | 10 ++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) 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")