From 1f6e1a2d163e9b73ad5b487e30e0df2a14f00755 Mon Sep 17 00:00:00 2001 From: Vladimir Sokolovsky Date: Wed, 20 Sep 2017 20:05:09 +0300 Subject: [PATCH] Added support for rdma-core new packaging format Now rdma-core creates different binary RPMs per Distro Some RPMs have loop dependencies so, added workaround for this. Signed-off-by: Vladimir Sokolovsky --- install.pl | 67 +++++++++++++++++++++++++++++++++++++++++++++------- uninstall.sh | 6 ++--- 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/install.pl b/install.pl index ac2bf93..191cf6b 100755 --- a/install.pl +++ b/install.pl @@ -600,7 +600,7 @@ my @prev_ofed_packages = ( "libvmw_pvrdma", "libvmw_pvrdma-devel", "libqedr", "libbnxt_re", - "rdma-core", "rdma-core-compat", + "rdma-core", "rdma-core-devel", "rdma-core-compat", "mvapich", "openmpi", "mvapich2" ); @@ -610,7 +610,7 @@ my @distro_ofed_packages = ( "mvapich-devel", "libboost_mpi1_36_0", "boost-devel", "boost-doc", "libmthca-rdmav2", "libcxgb3-rdmav2", "libcxgb4-rdmav2", "libmlx4-rdmav2", "libnes-rdmav2", "libi40iw-rdmav2", "libqedr-rdmav2", "libbnxt_re-rdmav2", "libibverbs1", "libibmad1", "libibumad1", "libibcommon1", "ofed", "ofa", "libibdm1", "libibcm1", "libibnetdisc5", "scsi-target-utils", "rdma-ofa-agent", "libibumad3", "libibmad5", - "libibverbs-runtime", "librdmacm1" + "libibverbs-runtime", "librdmacm1", "libi40iw", ); my @mlnx_en_packages = ( @@ -648,8 +648,14 @@ my @misc_packages = ("ofed-docs", "ofed-scripts"); my @xeon_phi_user = ("ibpd", "libibscif"); my @non_xeon_phi_user = ("infinipath-psm", "infinipath-psm-devel"); - -my @user_packages = ("rdma-core", +my @rdma_core_packages = ("libibverbs", "libibverbs1", "libibverbs-utils", + "librdmacm", "librdmacm1", "librdmacm-utils", + "libmlx5-1", "libmlx4-1", + "libibumad", "libibumad3", "libibcm", "libibcm1", + "ibacm", "iwpmd", "srp_daemon", "rdma-ndd", "rsocket" + ); + +my @user_packages = ("rdma-core", "rdma-core-devel", @rdma_core_packages, "libibmad", "libibmad-devel", "libibmad-static", "libibmad-debuginfo", "ibsim", "ibsim-debuginfo", "opensm", "opensm-libs", "opensm-devel", "opensm-debuginfo", "opensm-static", @@ -664,7 +670,7 @@ my @user_packages = ("rdma-core", ); my @basic_kernel_packages = ("compat-rdma"); -my @basic_user_packages = ("rdma-core", +my @basic_user_packages = ("rdma-core", "rdma-core-devel", @rdma_core_packages, "libiwpm", "mstflint", @misc_packages); my @hpc_kernel_packages = ("compat-rdma", "ib-bonding"); @@ -825,6 +831,13 @@ my %packages_info = ( ofa_req_build => [], ofa_req_inst => ["ofed-scripts"], install32 => 1, exception => 0 }, + 'rdma-core-devel' => + { name => "rdma-core-devel", parent => "rdma-core", + selected => 0, installed => 0, rpm_exist => 0, rpm_exist32 => 0, + available => 1, mode => "user", dist_req_build => [], + dist_req_inst => [], ofa_req_build => [], + ofa_req_inst => ["rdma-core"], + install32 => 1, exception => 0, configure_options => '' }, 'libfabric' => { name => "libfabric", parent => "libfabric", selected => 0, installed => 0, rpm_exist => 0, rpm_exist32 => 0, @@ -955,7 +968,7 @@ my %packages_info = ( { name => "opensm", parent => "opensm", selected => 0, installed => 0, rpm_exist => 0, rpm_exist32 => 0, available => 1, mode => "user", dist_req_build => ["bison", "flex"], - dist_req_inst => [],ubuntu_dist_req_build => ["bison", "flex"],ubuntu_dist_req_inst => [], ofa_req_build => ["rdma-core"], + dist_req_inst => [],ubuntu_dist_req_build => ["bison", "flex"],ubuntu_dist_req_inst => [], ofa_req_build => ["rdma-core-devel"], ofa_req_inst => ["opensm-libs"], install32 => 0, exception => 0, configure_options => '' }, 'opensm-devel' => @@ -1213,6 +1226,23 @@ my %packages_info = ( ); +for my $rdma_core_p (@rdma_core_packages) { + $packages_info{$rdma_core_p}{'name'} = $rdma_core_p; + $packages_info{$rdma_core_p}{'parent'} = "rdma-core"; + $packages_info{$rdma_core_p}{'selected'} = 0; + $packages_info{$rdma_core_p}{'installed'} = 0; + $packages_info{$rdma_core_p}{'install32'} = 0; + $packages_info{$rdma_core_p}{'rpm_exist'} = 0; + $packages_info{$rdma_core_p}{'rpm_exist32'} = 0; + $packages_info{$rdma_core_p}{'mode'} = "user"; + $packages_info{$rdma_core_p}{'exception'} = 0; + $packages_info{$rdma_core_p}{'dist_req_build'} = []; + $packages_info{$rdma_core_p}{'dist_req_inst'} = []; + $packages_info{$rdma_core_p}{'ofa_req_build'} = []; + $packages_info{$rdma_core_p}{'ofa_req_inst'} = []; + $packages_info{$rdma_core_p}{'available'} = 1; +} + my @hidden_packages = ("ibvexdmtools", "qlgc_vnic_daemon"); my $TOPDIR = $builddir . '/' . $PACKAGE . "_topdir"; @@ -1386,6 +1416,21 @@ sub set_cfg # Set packages availability depending OS/Kernel/arch sub set_availability { + if ($DISTRO =~ /SLES/) { + $packages_info{'librdmacm'}{'available'} = 0; + $packages_info{'libibumad'}{'available'} = 0; + $packages_info{'libibcm'}{'available'} = 0; + } else { + $packages_info{'libibverbs1'}{'available'} = 0; + $packages_info{'libibcm1'}{'available'} = 0; + $packages_info{'libmlx4-1'}{'available'} = 0; + $packages_info{'libmlx5-1'}{'available'} = 0; + $packages_info{'librdmacm1'}{'available'} = 0; + $packages_info{'libibumad3'}{'available'} = 0; + $packages_info{'rsocket'}{'available'} = 0; + $packages_info{'rdma-ndd'}{'available'} = 0; + } + if ($kernel =~ m/^4\.8/) { $kernel_modules_info{'rds'}{'available'} = 1; $packages_info{'rds-tools'}{'available'} = 1; @@ -1827,12 +1872,12 @@ sub module_in_rpm } if ($module eq "nfsrdma") { - $module = "xprtrdma"; + $module = "rpcrdma"; } open(LIST, "rpm -qlp $package |") or die "Can't run 'rpm -qlp $package': $!\n"; while () { - if (/$module[a-z_]*.ko/) { + if (/$module[a-z_]*.ko/ or ($module =~ /firmware/ and /$module/)) { print "is_module_in_rpm: $module $_\n" if ($verbose3); $ret = 0; last; @@ -2644,7 +2689,11 @@ sub install_rpm } $cmd = "rpm -iv $rpminstall_flags"; - if ($name eq "rdma-core" and $DISTRO =~ m/SLES/) { + if ($name =~ /rdma-core/) { + $cmd .= " --nodeps"; + } + + if ($name ~~ @rdma_core_packages and $DISTRO =~ m/SLES/) { $cmd .= " --nodeps"; } diff --git a/uninstall.sh b/uninstall.sh index ef61c05..b6bb3bc 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -71,7 +71,7 @@ sub usage print "\n Usage: $0 [--unload-modules] [-v|--verbose] [-q|--quiet] [--dry-run]\n"; print "\n --unload-modules Run /etc/init.d/openibd stop before uninstall"; - print "\n --force Force uninstallation and remove packages that depends on MLNX_OFED"; + print "\n --force Force uninstallation and remove packages that depends on OFED"; print "\n -v|--verbose Increase verbosity level"; print "\n --dry-run Print the list of packages to be uninstalled without actually uninstalling them"; print "\n -q Set quiet - no messages will be printed"; @@ -173,7 +173,7 @@ sub uninstall my $sig = 0; my $cnt = 0; my @installed_rpms = `ofed_info | grep -A999 '^-' 2> /dev/null | grep -v '^-'`; - my @other_ofed_rpms = `rpm -qa 2> /dev/null | grep -wE "compat-rdma|libibverbs|rdma|ofed|openib|kernel-ib|rds|ib-bonding|infiniband|libfabric|fabtests|libvmw_pvrdma"`; + my @other_ofed_rpms = `rpm -qa 2> /dev/null | grep -E "libibverbs|libmlx|rdma|ofed|openib|kernel-ib|rds-tools|rds-devel|ib-bonding|infiniband|libfabric|fabtests|srp_daemon"`; my $cmd = "rpm -e --allmatches --nodeps $rpm_flags"; for my $package (@other_ofed_rpms) { @@ -205,7 +205,7 @@ sub uninstall } if (not $force and keys %non_ofed_for_uninstall) { - print "\nError: One or more packages depends on MLNX_OFED.\nThose packages should be removed before uninstalling MLNX_OFED:\n\n"; + print "\nError: One or more packages depends on OFED.\nThose packages should be removed before uninstalling OFED:\n\n"; print join(" ", (keys %non_ofed_for_uninstall)) . "\n\n"; print "To force uninstallation use '--force' flag.\n"; exit $NONOFEDRPMS; -- 2.46.0