diff --git a/CommonInstall/Makefile b/CommonInstall/Makefile index 31fb1a3..3526e51 100644 --- a/CommonInstall/Makefile +++ b/CommonInstall/Makefile @@ -128,11 +128,13 @@ INCLUDE_SUBDIR = LOCALDEPLIBS = FF_FILES = comp_ff_of_prereq_RHEL72.pl comp_ff_of_prereq_RHEL73.pl comp_ff_of_prereq_RHEL74.pl \ - comp_ff_of_prereq_RHEL75.pl comp_ff_of_prereq_RHEL76.pl comp_ff_of_prereq_RHEL77.pl comp_ff_of_prereq_RHEL8.pl comp_ff_of_prereq_RHEL81.pl \ + comp_ff_of_prereq_RHEL75.pl comp_ff_of_prereq_RHEL76.pl comp_ff_of_prereq_RHEL77.pl comp_ff_of_prereq_RHEL78.pl \ + comp_ff_of_prereq_RHEL8.pl comp_ff_of_prereq_RHEL81.pl \ comp_ff_of_prereq_SLES122.pl comp_ff_of_prereq_SLES123.pl comp_ff_of_prereq_SLES124.pl \ comp_ff_of_prereq_SLES15.pl comp_ff_of_prereq_SLES151.pl FM_FILES = comp_fm_prereq_RHEL72.pl comp_fm_prereq_RHEL73.pl comp_fm_prereq_RHEL74.pl \ - comp_fm_prereq_RHEL75.pl comp_fm_prereq_RHEL76.pl comp_fm_prereq_RHEL77.pl comp_fm_prereq_RHEL8.pl comp_fm_prereq_RHEL81.pl \ + comp_fm_prereq_RHEL75.pl comp_fm_prereq_RHEL76.pl comp_fm_prereq_RHEL77.pl comp_fm_prereq_RHEL78.pl \ + comp_fm_prereq_RHEL8.pl comp_fm_prereq_RHEL81.pl \ comp_fm_prereq_SLES122.pl comp_fm_prereq_SLES123.pl comp_fm_prereq_SLES124.pl \ comp_fm_prereq_SLES15.pl comp_fm_prereq_SLES151.pl diff --git a/CommonInstall/comp_delta.pl b/CommonInstall/comp_delta.pl index 5e280e8..6839bcc 100755 --- a/CommonInstall/comp_delta.pl +++ b/CommonInstall/comp_delta.pl @@ -81,6 +81,7 @@ my @delta_kernel_srpms_rhel75 = ( 'kmod-ifs-kernel-updates' ); my @delta_kernel_srpms_rhel76 = ( 'kmod-ifs-kernel-updates' ); my @delta_kernel_srpms_rhel77 = ( 'kmod-ifs-kernel-updates' ); +my @delta_kernel_srpms_rhel78 = ( 'kmod-ifs-kernel-updates' ); my @delta_kernel_srpms_rhel8 = ( 'kmod-ifs-kernel-updates' ); my @delta_kernel_srpms_rhel81 = ( 'kmod-ifs-kernel-updates' ); my @delta_kernel_srpms = ( ); @@ -167,6 +168,8 @@ ($) @delta_kernel_srpms = ( @delta_kernel_srpms_rhel81 ); } elsif ( "$CUR_VENDOR_VER" eq "ES8" ) { @delta_kernel_srpms = ( @delta_kernel_srpms_rhel8 ); + } elsif ( "$CUR_VENDOR_VER" eq "ES78" ) { + @delta_kernel_srpms = ( @delta_kernel_srpms_rhel78 ); } elsif ( "$CUR_VENDOR_VER" eq "ES77" ) { @delta_kernel_srpms = ( @delta_kernel_srpms_rhel77 ); } elsif ( "$CUR_VENDOR_VER" eq "ES76" ) { @@ -226,7 +229,7 @@ ($$) $result = file_glob("$srcdir/$SRPMS_SUBDIR/CUDA/$globname"); } else { NormalPrint("CUDA specific SRPMs do not exist\n"); - exit 0; + exit 1; } } else { $result = file_glob("$srcdir/$SRPMS_SUBDIR/$globname"); @@ -265,7 +268,7 @@ ($) $rpmsdir=$rpmsdir."/CUDA"; } else { NormalPrint("CUDA specific packages do not exist\n"); - exit 0; + exit 1; } } return $rpmsdir; @@ -802,6 +805,9 @@ () } elsif ( "$CUR_VENDOR_VER" eq "ES8" ) { return ( has_version_delta() && rpm_is_installed("kmod-ifs-kernel-updates", $CUR_OS_VER)); + } elsif ( "$CUR_VENDOR_VER" eq "ES78" ) { + return ( has_version_delta() + && rpm_is_installed("kmod-ifs-kernel-updates", $CUR_OS_VER)); } elsif ( "$CUR_VENDOR_VER" eq "ES77" ) { return ( has_version_delta() && rpm_is_installed("kmod-ifs-kernel-updates", $CUR_OS_VER)); @@ -1120,6 +1126,9 @@ () } elsif ( "$CUR_VENDOR_VER" eq "ES77" ) { return (has_version_delta() && rpm_is_installed("kmod-ifs-kernel-updates", $CUR_OS_VER)); + } elsif ( "$CUR_VENDOR_VER" eq "ES78" ) { + return (has_version_delta() + && rpm_is_installed("kmod-ifs-kernel-updates", $CUR_OS_VER)); } elsif ( "$CUR_VENDOR_VER" eq "ES8" ) { return (has_version_delta() && rpm_is_installed("kmod-ifs-kernel-updates", $CUR_OS_VER)); diff --git a/CommonInstall/comp_delta_prereq_RHEL78.pl b/CommonInstall/comp_delta_prereq_RHEL78.pl new file mode 100644 index 0000000..8125735 --- /dev/null +++ b/CommonInstall/comp_delta_prereq_RHEL78.pl @@ -0,0 +1,138 @@ +#!/usr/bin/perl +## BEGIN_ICS_COPYRIGHT8 **************************************** +# +# Copyright (c) 2015-2018, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +## END_ICS_COPYRIGHT8 **************************************** +# +## [ICS VERSION STRING: unknown] +#use strict; +##use Term::ANSIColor; +##use Term::ANSIColor qw(:constants); +##use File::Basename; +##use Math::BigInt; +# +## ========================================================================== +# +#Installation Prequisites array for delta components +my @opa_stack_prereq = ( + "bash", + "kernel", + "kmod", + "rdma-core", + "systemd", + "glibc", + "pciutils", + "opensm-libs", + "libibumad", + "rdma-core-devel", +); +$comp_prereq_hash{'opa_stack_prereq'} = \@opa_stack_prereq; + +my @mpi_selector_prereq = ( + "bash", + "coreutils", + "perl", + "perl-Getopt-Long", + "tcsh", +); +$comp_prereq_hash{'mpi_selector_prereq'} = \@mpi_selector_prereq; + +my @intel_hfi_prereq = ( + "bash", + "glibc", + "libgcc", + "python", + "systemd", + "numactl-libs", + "irqbalance", + "libatomic", +); +$comp_prereq_hash{'intel_hfi_prereq'} = \@intel_hfi_prereq; + +my @mvapich2_prereq = ( + "bash", + "libibverbs", + "librdmacm", + "glibc", + "zlib", + "sysfsutils", +); +$comp_prereq_hash{'mvapich2_prereq'} = \@mvapich2_prereq; + +my @openmpi_prereq = ( + "bash", + "glibc", + "libgcc", + "libgfortran", + "gcc-gfortran", + "libgomp", + "libibverbs", + "libquadmath", + "librdmacm", + "libstdc++", + "libstdc++-devel", + "opensm-libs", + "pkgconfig", + "zlib", +); +$comp_prereq_hash{'openmpi_prereq'} = \@openmpi_prereq; + +my @mvapich2_gcc_hfi_prereq = ( + "bash", + "zlib", + "glibc", +); +$comp_prereq_hash{'mvapich2_gcc_hfi_prereq'} = \@mvapich2_gcc_hfi_prereq; + +my @mvapich2_intel_hfi_prereq = ( + "bash", +); +$comp_prereq_hash{'mvapich2_intel_hfi_prereq'} = \@mvapich2_intel_hfi_prereq; + +my @openmpi_gcc_hfi_prereq = ( + "bash", + "glibc", + "infinipath-psm", + "libgcc", + "libgfortran", + "gcc-gfortran", + "libgomp", + "libibverbs", + "libquadmath", + "librdmacm", + "libstdc++", + "libstdc++-devel", + "opensm-libs", + "pkgconfig", + "zlib", +); +$comp_prereq_hash{'openmpi_gcc_hfi_prereq'} = \@openmpi_gcc_hfi_prereq; + +my @openmpi_intel_hfi_prereq = ( + "bash", +); +$comp_prereq_hash{'openmpi_intel_hfi_prereq'} = \@openmpi_intel_hfi_prereq; diff --git a/CommonInstall/comp_ff_of_prereq_RHEL78.pl b/CommonInstall/comp_ff_of_prereq_RHEL78.pl new file mode 100644 index 0000000..af44df6 --- /dev/null +++ b/CommonInstall/comp_ff_of_prereq_RHEL78.pl @@ -0,0 +1,87 @@ +#!/usr/bin/perl +## BEGIN_ICS_COPYRIGHT8 **************************************** +# +# Copyright (c) 2015-2018, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +## END_ICS_COPYRIGHT8 **************************************** +# +## [ICS VERSION STRING: unknown] +#use strict; +##use Term::ANSIColor; +##use Term::ANSIColor qw(:constants); +##use File::Basename; +##use Math::BigInt; +# +## ========================================================================== +# +#Installation Prequisites array for fast fabric +#and of tools component +my @oftools_prereq = ( + "glibc", + "libgcc", + "libibumad", + "libibverbs", + "libstdc++", + "ibacm", + "rdma-core", +); +$comp_prereq_hash{'oftools_prereq'} = \@oftools_prereq; + +my @fastfabric_prereq = ( + "atlas", + "bash", + "bc", + "expat", + "expect", + "glibc", + "libgcc", + "libibumad", + "libibverbs", + "libstdc++", + "ncurses-libs", + "openssl-libs", + "perl", + "perl-Getopt-Long", + "perl-Socket", + "rdma-core", + "tcl", + "zlib", +); +$comp_prereq_hash{'fastfabric_prereq'} = \@fastfabric_prereq; + +my @opamgt_sdk_prereq = ( + "bash", + "glibc", + "libgcc", + "libibumad", + "libibverbs", + "libstdc++", + "openssl", + "openssl-devel", + "openssl-libs", + "rdma-core-devel", +); +$comp_prereq_hash{'opamgt_sdk_prereq'} = \@opamgt_sdk_prereq; diff --git a/CommonInstall/comp_ff_of_prereq_RHEL78.pl.base b/CommonInstall/comp_ff_of_prereq_RHEL78.pl.base new file mode 100644 index 0000000..af44df6 --- /dev/null +++ b/CommonInstall/comp_ff_of_prereq_RHEL78.pl.base @@ -0,0 +1,87 @@ +#!/usr/bin/perl +## BEGIN_ICS_COPYRIGHT8 **************************************** +# +# Copyright (c) 2015-2018, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +## END_ICS_COPYRIGHT8 **************************************** +# +## [ICS VERSION STRING: unknown] +#use strict; +##use Term::ANSIColor; +##use Term::ANSIColor qw(:constants); +##use File::Basename; +##use Math::BigInt; +# +## ========================================================================== +# +#Installation Prequisites array for fast fabric +#and of tools component +my @oftools_prereq = ( + "glibc", + "libgcc", + "libibumad", + "libibverbs", + "libstdc++", + "ibacm", + "rdma-core", +); +$comp_prereq_hash{'oftools_prereq'} = \@oftools_prereq; + +my @fastfabric_prereq = ( + "atlas", + "bash", + "bc", + "expat", + "expect", + "glibc", + "libgcc", + "libibumad", + "libibverbs", + "libstdc++", + "ncurses-libs", + "openssl-libs", + "perl", + "perl-Getopt-Long", + "perl-Socket", + "rdma-core", + "tcl", + "zlib", +); +$comp_prereq_hash{'fastfabric_prereq'} = \@fastfabric_prereq; + +my @opamgt_sdk_prereq = ( + "bash", + "glibc", + "libgcc", + "libibumad", + "libibverbs", + "libstdc++", + "openssl", + "openssl-devel", + "openssl-libs", + "rdma-core-devel", +); +$comp_prereq_hash{'opamgt_sdk_prereq'} = \@opamgt_sdk_prereq; diff --git a/CommonInstall/comp_fm_prereq_RHEL78.pl b/CommonInstall/comp_fm_prereq_RHEL78.pl new file mode 100644 index 0000000..a166489 --- /dev/null +++ b/CommonInstall/comp_fm_prereq_RHEL78.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl +## BEGIN_ICS_COPYRIGHT8 **************************************** +# +# Copyright (c) 2015-2018, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +## END_ICS_COPYRIGHT8 **************************************** +# +## [ICS VERSION STRING: unknown] +#use strict; +##use Term::ANSIColor; +##use Term::ANSIColor qw(:constants); +##use File::Basename; +##use Math::BigInt; +# +## ========================================================================== +# +#Installation Prequisites array for opafm +my @opafm_prereq = ( + "bash", + "expat", + "glibc", + "libibumad", + "libibverbs", + "openssl-libs", + "rdma-core", + "systemd", + "zlib", +); +$comp_prereq_hash{'opafm_prereq'} = \@opafm_prereq; + diff --git a/CommonInstall/comp_fm_prereq_RHEL78.pl.base b/CommonInstall/comp_fm_prereq_RHEL78.pl.base new file mode 100644 index 0000000..a166489 --- /dev/null +++ b/CommonInstall/comp_fm_prereq_RHEL78.pl.base @@ -0,0 +1,53 @@ +#!/usr/bin/perl +## BEGIN_ICS_COPYRIGHT8 **************************************** +# +# Copyright (c) 2015-2018, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +## END_ICS_COPYRIGHT8 **************************************** +# +## [ICS VERSION STRING: unknown] +#use strict; +##use Term::ANSIColor; +##use Term::ANSIColor qw(:constants); +##use File::Basename; +##use Math::BigInt; +# +## ========================================================================== +# +#Installation Prequisites array for opafm +my @opafm_prereq = ( + "bash", + "expat", + "glibc", + "libibumad", + "libibverbs", + "openssl-libs", + "rdma-core", + "systemd", + "zlib", +); +$comp_prereq_hash{'opafm_prereq'} = \@opafm_prereq; + diff --git a/CommonInstall/comp_omnipath.pl b/CommonInstall/comp_omnipath.pl index 3f137c3..db95710 100644 --- a/CommonInstall/comp_omnipath.pl +++ b/CommonInstall/comp_omnipath.pl @@ -1193,7 +1193,7 @@ () sub installed_mpisrc() { - my $srcdir = "/usr/src/opa/MPI"; + my $srcdir = $ExtraMpisrcInfo{'Dest'}; my $old_srcdir = "/usr/lib/opa/src/MPI"; return (has_mpisrc($srcdir) || has_mpisrc($old_srcdir)); } @@ -1201,15 +1201,18 @@ () sub has_mpisrc($) { my $srcdir = shift(); - return (file_glob("$srcdir/mvapich*.src.rpm") ne "" - && file_glob("$srcdir/openmpi*.src.rpm") ne "" - && file_glob("$srcdir/mpitests*.src.rpm") ne ""); + foreach my $srpm (@{$ExtraMpisrcInfo{'SrcRpms'}}) { + if (file_glob("$srcdir/${srpm}*.src.rpm") eq "") { + return 0; + } + } + return 1; } # only called if installed_mpisrc is true sub installed_version_mpisrc() { - return `cat /usr/src/opa/MPI/.version`; + return `cat $ExtraMpisrcInfo{'Dest'}/.version`; } # only called if available_mpisrc is true @@ -1255,36 +1258,41 @@ ($$) my $installing_list = shift(); # what items are being installed/reinstalled my $srcdir=$ComponentInfo{'mpisrc'}{'SrcDir'}; - my $version = media_version_mpisrc(); - chomp $version; + my $version = media_version_mpisrc(); + chomp $version; - printf ("Installing $ComponentInfo{'mpisrc'}{'Name'} $version...\n"); - LogPrint ("Installing $ComponentInfo{'mpisrc'}{'Name'} $version for $CUR_OS_VER\n"); + printf ("Installing $ComponentInfo{'mpisrc'}{'Name'} $version...\n"); + LogPrint ("Installing $ComponentInfo{'mpisrc'}{'Name'} $version for $CUR_OS_VER\n"); - check_dir("/usr/src/opa"); - check_dir("/usr/src/opa/MPI"); + my $destdir = $ExtraMpisrcInfo{'Dest'}; + check_dir($destdir); # remove old versions (.src.rpm and built .rpm files too) - system "rm -rf /usr/src/opa/MPI/mvapich[-_]*.rpm 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/mvapich2[-_]*.rpm 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/openmpi[-_]*.rpm 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/mpitests[-_]*.rpm 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/make.*.res 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/make.*.err 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/make.*.warn 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/.mpiinfo 2>/dev/null"; + system "rm -f $destdir/mvapich[-_]*.rpm 2>/dev/null"; + foreach my $srpm (@{$ExtraMpisrcInfo{'SrcRpms'}}) + { + system "rm -f $destdir/$srpm-*.rpm 2>/dev/null"; + } + foreach my $file (@{$ExtraMpisrcInfo{'DirtyFiles'}}) + { + system "rm -f $destdir/$file 2>/dev/null"; + } # install new versions - foreach my $srpm ( "mvapich2", "openmpi", "mpitests" ) { + foreach my $srpm (@{$ExtraMpisrcInfo{'SrcRpms'}}) { my $srpmfile = file_glob("$srcdir/${srpm}-*.src.rpm"); if ( "$srpmfile" ne "" ) { my $file = my_basename($srpmfile); - copy_data_file($srpmfile, "/usr/src/opa/MPI/$file"); + copy_data_file($srpmfile, "$destdir/$file"); } } - copy_systool_file("$srcdir/do_build", "/usr/src/opa/MPI/do_build"); - copy_systool_file("$srcdir/do_mvapich2_build", "/usr/src/opa/MPI/do_mvapich2_build"); - copy_systool_file("$srcdir/do_openmpi_build", "/usr/src/opa/MPI/do_openmpi_build"); - copy_data_file("$srcdir/version", "/usr/src/opa/MPI/.version"); + foreach my $script (@{$ExtraMpisrcInfo{'BuildScripts'}}) { + copy_systool_file("$srcdir/$script", "$destdir/$script"); + } + foreach my $file (@{$ExtraMpisrcInfo{'MiscFiles'}}) { + my $src = ${$file}{'Src'}; + my $dest = ${$file}{'Dest'}; + copy_data_file("$srcdir/$src", "$destdir/$dest"); + } $ComponentWasInstalled{'mpisrc'}=1; } @@ -1307,21 +1315,23 @@ ($$) rpm_is_installed("opameta_mpisrc_userspace", "any")) { rpm_uninstall_matches("opameta_mpisrc", "opameta_mpisrc", "", ""); } else { + my $destdir = $ExtraMpisrcInfo{'Dest'}; # remove old versions (.src.rpm and built .rpm files too) - system "rm -rf /usr/src/opa/MPI/.version 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/mvapich2[-_]*.rpm 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/openmpi[-_]*.rpm 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/mpitests[-_]*.rpm 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/make.*.res 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/make.*.err 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/make.*.warn 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/.mpiinfo 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/do_build 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/do_mvapich2_build 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/do_openmpi_build 2>/dev/null"; - system "rm -rf /usr/src/opa/MPI/.mpiinfo 2>/dev/null"; - - system "rmdir /usr/src/opa/MPI 2>/dev/null"; # remove only if empty + foreach my $srpm (@{$ExtraMpisrcInfo{'SrcRpms'}}) { + system "rm -f $destdir/$srpm-*.rpm 2>/dev/null"; + } + foreach my $script (@{$ExtraMpisrcInfo{'BuildScripts'}}) { + system "rm -f $destdir/$script 2>/dev/null"; + } + foreach my $file (@{$ExtraMpisrcInfo{'MiscFiles'}}) { + my $destfile = ${$file}{'Dest'}; + system "rm -f $destdir/$destfile 2>/dev/null"; + } + foreach my $file (@{$ExtraMpisrcInfo{'DirtyFiles'}}) { + system "rm -f $destdir/$file 2>/dev/null"; + } + + system "rmdir $destdir 2>/dev/null"; # remove only if empty system "rmdir /usr/src/opa 2>/dev/null"; # remove only if empty } diff --git a/CommonInstall/do_mvapich2_build.sh b/CommonInstall/do_mvapich2_build.sh index 4cc34b1..ba0abfc 100755 --- a/CommonInstall/do_mvapich2_build.sh +++ b/CommonInstall/do_mvapich2_build.sh @@ -65,6 +65,9 @@ VERSION_ID="" if [ -e /etc/os-release ]; then . /etc/os-release + if [[ "$ID" == "sle_hpc" ]]; then + ID="sles" + fi else echo /etc/os-release is not available !!! fi diff --git a/CommonInstall/do_openmpi_build.sh b/CommonInstall/do_openmpi_build.sh index fad9e14..1f91ea0 100755 --- a/CommonInstall/do_openmpi_build.sh +++ b/CommonInstall/do_openmpi_build.sh @@ -1,7 +1,7 @@ #!/bin/bash # BEGIN_ICS_COPYRIGHT8 **************************************** # -# Copyright (c) 2015-2018, Intel Corporation +# Copyright (c) 2015-2020, Intel Corporation # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -65,16 +65,14 @@ VERSION_ID="" if [ -e /etc/os-release ]; then . /etc/os-release + if [[ "$ID" == "sle_hpc" ]]; then + ID="sles" + fi else echo /etc/os-release is not available !!! fi -if [[ ( "$ID" == "rhel" && $(echo "$VERSION_ID > 7.3" | bc -l) == 1 ) || \ - ( "$ID" == "sles" && $(echo "$VERSION_ID > 12.2" | bc -l) == 1 ) ]]; then - PREREQ=("rdma-core-devel" "mpi-selector") -else - PREREQ=("libibverbs-devel" "librdmacm-devel" "mpi-selector") -fi +PREREQ=( "mpi-selector" ) CheckPreReqs() { @@ -137,27 +135,11 @@ Usage() unset MAKEFLAGS -ARCH=$(uname -m | sed -e s/ppc/PPC/ -e s/powerpc/PPC/ -e s/i.86/IA32/ -e s/ia64/IA64/ -e s/x86_64/X86_64/) +# Convert the architecture to all-caps to simplify comparisons. +ARCH=$(uname -m | tr "[:lower:]" "[:upper:]") target_cpu=$(rpm --eval '%{_target_cpu}') dist_rpm_rel_int=0 -if [ "$ARCH" = "PPC64" -a -f /etc/issue -a -f /etc/SuSE-release ] -then - # needed to test for SLES 10 SP1 on PPC64 below - dist_rpm_rel=$(rpm --queryformat "[%{RELEASE}]\n" -q $(rpm -qf /etc/issue)|uniq) - dist_rpm_rel_major="$(echo $dist_rpm_rel|cut -f1 -d.)" - dist_rpm_rel_minor="$(echo $dist_rpm_rel|cut -f2 -d.)" - # convert version to a 4 digit integer - if [ $dist_rpm_rel_major -lt 10 ] - then - dist_rpm_rel_major="0$dist_rpm_rel_major"; - fi - if [ $dist_rpm_rel_minor -lt 10 ] - then - dist_rpm_rel_minor="0$dist_rpm_rel_minor"; - fi - dist_rpm_rel_int="$dist_rpm_rel_major$dist_rpm_rel_minor" -fi nocomp() { @@ -198,15 +180,13 @@ iflag=n # undocumented option, build in context of install Qflag=n Oflag=n Cflag=n -Vflag=n # undocumented option, build verbs only transport -while getopts "idQOCV" o +while getopts "idQOC" o do case "$o" in i) iflag=y;; Q) Qflag=y;; O) Oflag=y;; C) Cflag=y;; - V) Vflag=y;; d) skip_prompt=y;; *) Usage;; esac @@ -217,12 +197,6 @@ then Usage fi -if [[ "$Vflag" == "y" && \ - ( "$Qflag" == "y" || "$Oflag" == "y" || "$Cflag" == "y" ) ]]; then - echo "ERROR: Option -V cannot be used with any other" >&2 - exit 1 -fi - if [ "$(/usr/bin/id -u)" != 0 ] then echo "ERROR: You must be 'root' to run this program" >&2 @@ -291,117 +265,94 @@ then fi # now get openmpi options. -if [ "$Vflag" != y ] +if [ "$skip_prompt" != y -a "$Qflag" != y ] then - if [ "$skip_prompt" != y -a "$Qflag" != y ] + if rpm -qa|grep infinipath-psm-devel >/dev/null 2>&1 then - if rpm -qa|grep infinipath-psm-devel >/dev/null 2>&1 + echo + get_yes_no "Build for True Scale HCA PSM" "y" + if [ "$ans" = 1 ] then - echo - get_yes_no "Build for True Scale HCA PSM" "y" - if [ "$ans" = 1 ] - then - Qflag=y - fi + Qflag=y fi fi +fi - if [ "$skip_prompt" != y -a "$Oflag" != y ] +if [ "$skip_prompt" != y -a "$Oflag" != y ] +then + if rpm -qa|grep libpsm2-devel >/dev/null 2>&1 && + rpm -qa|grep libfabric-devel >/dev/null 2>&1 then - if rpm -qa|grep libpsm2-devel >/dev/null 2>&1 && - rpm -qa|grep libfabric-devel >/dev/null 2>&1 + echo + get_yes_no "Build for Omnipath HFI PSM2 and OFI" "y" + if [ "$ans" = 1 ] then - echo - get_yes_no "Build for Omnipath HFI PSM2 and OFI" "y" - if [ "$ans" = 1 ] - then - Oflag=y - fi + Oflag=y fi fi +fi - if [ "$skip_prompt" != y -a "$Cflag" != y ] +if [ "$skip_prompt" != y -a "$Cflag" != y ] +then + if rpm -qa|grep libpsm2-devel >/dev/null 2>&1 && + rpm -qa|grep cuda-cudart-dev >/dev/null 2>&1 then - if rpm -qa|grep libpsm2-devel >/dev/null 2>&1 && - rpm -qa|grep cuda-cudart-dev >/dev/null 2>&1 + echo + get_yes_no "Build for Omnipath HFI PSM2 with Cuda" "y" + if [ "$ans" = 1 ] then - echo - get_yes_no "Build for Omnipath HFI PSM2 with Cuda" "y" - if [ "$ans" = 1 ] - then - Cflag=y - fi + Cflag=y fi - fi + fi fi # if -d (skip_prompt) the only option provided, ./configure will run with # no paramters and build what is auto-detected openmpi_conf_psm='' -if [ "$Vflag" = y ] +# we no longer supports verbs. +openmpi_verbs='--enable-mca-no-build=btl-openib --without-verbs' + +if [ "$Qflag" = y ] then - # The openmpi configure script complains about enable-mca-no-build - # not being a supported option, but then actually executes it correctly. - #openmpi_conf_psm='--enable-mca-no-build=mtl-psm' - openmpi_conf_psm='--with-psm=no --with-psm2=no --with-libfabric=no --enable-mca-no-build=mtl-psm ' - openmpi_path_suffix= - openmpi_rpm_suffix= - interface=verbs -else - if [ "$Qflag" = y ] - then - PREREQ+=('infinipath-psm-devel') - openmpi_conf_psm='--with-psm=/usr ' - # PSM indicated by qlc suffix so user can ID PSM vs verbs or PSM2 MPIs - openmpi_path_suffix="-qlc" - openmpi_rpm_suffix="_qlc" - interface=psm - fi + PREREQ+=('infinipath-psm-devel') + openmpi_conf_psm='--with-psm=/usr ' + # PSM indicated by qlc suffix so user can ID PSM vs OFI or PSM2 MPIs + openmpi_path_suffix="-qlc" + openmpi_rpm_suffix="_qlc" + interface=psm +fi - if [ "$Oflag" = y ] - then - PREREQ+=('libpsm2-devel' 'libfabric-devel') - openmpi_conf_psm=" $openmpi_conf_psm --with-psm2=/usr --with-libfabric=/usr " - # PSM2 indicated by hfi suffix so user can ID from PSM or verbs MPIs - openmpi_path_suffix="-hfi" - openmpi_rpm_suffix="_hfi" - interface=psm - fi +if [ "$Oflag" = y ] +then + PREREQ+=('libpsm2-devel' 'libfabric-devel') + openmpi_conf_psm=" $openmpi_conf_psm --with-psm2=/usr --with-libfabric=/usr " + # PSM2 indicated by hfi suffix so user can ID from PSM or OFI MPIs + openmpi_path_suffix="-hfi" + openmpi_rpm_suffix="_hfi" + interface=psm +fi - if [ "$Cflag" = y ] - then - PREREQ+=('libpsm2-devel' 'cuda-cudart-dev') - openmpi_conf_psm=" $openmpi_conf_psm --with-psm2=/usr --with-cuda=/usr/local/cuda " - # CUDA indicated by -cuda suffix so user can ID from PSM2 without cuda, PSM or verbs MPIs - openmpi_path_suffix="-cuda-hfi" - openmpi_rpm_suffix="_cuda_hfi" - interface=psm - fi +if [ "$Cflag" = y ] +then + PREREQ+=('libpsm2-devel' 'cuda-cudart-dev') + openmpi_conf_psm=" $openmpi_conf_psm --with-psm2=/usr --with-cuda=/usr/local/cuda " + # CUDA indicated by -cuda suffix so user can ID from PSM2 without cuda, PSM or OFI MPIs + openmpi_path_suffix="-cuda-hfi" + openmpi_rpm_suffix="_cuda_hfi" + interface=psm fi CheckPreReqs -if [ "$ARCH" = "PPC64" -a \ - \( ! -f /etc/SuSE-release -o "$dist_rpm_rel_int" -le "1502" \) ] # eg. 15.2 -then - export LDFLAGS="-m64 -g -O2 -L/usr/lib64 -L/usr/X11R6/lib64" - export CFLAGS="-m64 -g -O2" - export CPPFLAGS="-m64 -g -O2" - export CXXFLAGS="-m64 -g -O2" - export FFLAGS="-m64 -g -O2" - export F90FLAGS="-m64 -g -O2" - export LDLIBS="-m64 -g -O2 -L/usr/lib64 -L/usr/X11R6/lib64" -else - # just to be safe - unset LDFLAGS - unset CFLAGS - unset CPPFLAGS - unset CXXFLAGS - unset FFLAGS - unset F90FLAGS - unset LDLIBS -fi +# just to be safe +unset LDFLAGS +unset CFLAGS +unset CPPFLAGS +unset CXXFLAGS +unset FFLAGS +unset F90FLAGS +unset LDLIBS logfile=make.openmpi.$interface.$compiler ( @@ -469,7 +420,7 @@ logfile=make.openmpi.$interface.$compiler echo "Building OpenMPI MPI $openmpi_version Library/Tools..." mkdir -p $BUILD_ROOT $RPM_DIR/BUILD $RPM_DIR/RPMS $RPM_DIR/SOURCES $RPM_DIR/SPECS $RPM_DIR/SRPMS - if [ "$ARCH" = "PPC64" -o "$ARCH" = "X86_64" ] + if [ "$ARCH" = "X86_64" ] then openmpi_lib="lib64" else @@ -482,18 +433,12 @@ logfile=make.openmpi.$interface.$compiler openmpi_wrapper_cxx_flags="" # need to create proper openmpi_comp_env value for OpenMPI builds - if [ "$ARCH" = "PPC64" -a \ - \( -f /etc/SuSE-release -a "$dist_rpm_rel_int" -gt "1502" \) ] # eg. 15.2 - then - openmpi_comp_env='LDFLAGS="-m64 -O2 -L/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"' - else - openmpi_comp_env="" - fi + openmpi_comp_env="" case "$compiler" in gcc) if [[ ( "$ID" == "rhel" && $(echo "$VERSION_ID >= 8.0" | bc -l) == 1 ) ]]; then - openmpi_comp_env="$openmpi_comp_env CC=gcc CFLAGS="-O3 -fPIC"" + openmpi_comp_env="$openmpi_comp_env CC=gcc CFLAGS=\"-O3 -fPIC\"" else openmpi_comp_env="$openmpi_comp_env CC=gcc CFLAGS=-O3" fi @@ -581,21 +526,6 @@ logfile=make.openmpi.$interface.$compiler exit 1;; esac - if [ "$ARCH" = "PPC64" ] - then - openmpi_comp_env="$openmpi_comp_env --disable-mpi-f77 --disable-mpi-f90" - # In the ppc64 case, add -m64 to all the relevant - # flags because it's not the default. Also - # unconditionally add $OMPI_RPATH because even if - # it's blank, it's ok because there are other - # options added into the ldflags so the overall - # string won't be blank. - openmpi_comp_env="$openmpi_comp_env CFLAGS=\"-m64 -O2\" CXXFLAGS=\"-m64 -O2\" FCFLAGS=\"-m64 -O2\" FFLAGS=\"-m64 -O2\"" - openmpi_comp_env="$openmpi_comp_env --with-wrapper-ldflags=\"-g -O2 -m64 -L/usr/lib64\" --with-wrapper-cflags=-m64" - openmpi_comp_env="$openmpi_comp_env --with-wrapper-cxxflags=-m64 --with-wrapper-fflags=-m64 --with-wrapper-fcflags=-m64" - openmpi_wrapper_cxx_flags="$openmpi_wrapper_cxx_flags -m64"; - fi - openmpi_comp_env="$openmpi_comp_env --enable-mpirun-prefix-by-default" if [ x"$openmpi_wrapper_cxx_flags" != x ] then @@ -635,7 +565,7 @@ logfile=make.openmpi.$interface.$compiler --define '_defaultdocdir $MPICH_PREFIX/doc/..' \ --define '_mandir %{_prefix}/share/man' \ --define 'mflags -j 4' \ - --define 'configure_options $CONFIG_OPTIONS $openmpi_ldflags --with-verbs=$STACK_PREFIX --with-verbs-libdir=$STACK_PREFIX/$openmpi_lib $openmpi_comp_env $openmpi_conf_psm --with-devel-headers --disable-oshmem' \ + --define 'configure_options $CONFIG_OPTIONS $openmpi_ldflags $openmpi_comp_env $openmpi_conf_psm --with-devel-headers --disable-oshmem $openmpi_verbs' \ --define 'use_default_rpm_opt_flags $use_default_rpm_opt_flags' \ $disable_auto_requires" cmd="$cmd \ @@ -732,7 +662,7 @@ egrep 'warning:' $logfile.res |sort -u | #egrep 'error:|Error | Stop' $logfile.res| sort -u | # egrep -v 'error: this file was generated for autoconf 2.61.' > $logfile.err egrep 'error:|Error | Stop' $logfile.res| sort -u | - egrep -v 'configure: error: no BPatch.h found; check path for Dyninst package|configure: error: no vtf3.h found; check path for VTF3 package|configure: error: MPI Correctness Checking support cannot be built inside Open MPI|configure: error: no bmi.h found; check path for BMI package first...|configure: error: no ctool/ctool.h found; check path for CTool package first...|configure: error: no cuda.h found; check path for CUDA Toolkit first...|configure: error: no cuda_runtime_api.h found; check path for CUDA Toolkit first...|configure: error: no cupti.h found; check path for CUPTI package first...|configure: error: no f2c.h found; check path for CLAPACK package first...|configure: error: no jvmti.h found; check path for JVMTI package first...|configure: error: no libcpc.h found; check path for CPC package first...|configure: error: no tau_instrumentor found; check path for PDToolkit first...|configure: error: no unimci-config found; check path for UniMCI package first...|"Error code:|"Unknown error:|strerror_r|configure: error: CUPTI API version could not be determined...|asprintf(&msg, "Unexpected sendto() error: errno=%d (%s)",' > $logfile.err + egrep -v 'configure: error: no BPatch.h found; check path for Dyninst package|configure: error: no vtf3.h found; check path for VTF3 package|configure: error: MPI Correctness Checking support cannot be built inside Open MPI|configure: error: no bmi.h found; check path for BMI package first...|configure: error: no ctool/ctool.h found; check path for CTool package first...|configure: error: no cuda.h found; check path for CUDA Toolkit first...|configure: error: no cuda_runtime_api.h found; check path for CUDA Toolkit first...|configure: error: no cupti.h found; check path for CUPTI package first...|configure: error: no f2c.h found; check path for CLAPACK package first...|configure: error: no jvmti.h found; check path for JVMTI package first...|configure: error: no libcpc.h found; check path for CPC package first...|configure: error: no tau_instrumentor found; check path for PDToolkit first...|configure: error: no unimci-config found; check path for UniMCI package first...|"Error code:|"Unknown error:|strerror_r|configure: error: CUPTI API version could not be determined...|asprintf\(&msg, "Unexpected sendto\(\) error: errno=%d \(%s\)",' > $logfile.err if [ -s $logfile.err ] then diff --git a/CommonInstall/main_omnipathwrap_delta.pl b/CommonInstall/main_omnipathwrap_delta.pl index 90f93a0..c32475d 100644 --- a/CommonInstall/main_omnipathwrap_delta.pl +++ b/CommonInstall/main_omnipathwrap_delta.pl @@ -44,6 +44,7 @@ my $Build_Temp=""; # temp area to use for build my $Default_Build = 0; # -B option used to select build my $Build_Force = 0;# rebuild option used to force full rebuild +my $To_Show_Comps = 0; # indicate whether we need to show components or not $FirstIPoIBInterface=0; # first device is ib0 @@ -84,6 +85,8 @@ @OmniPathAllComponents ); my @Components_rhel77 = ( "opa_stack", "mpi_selector", @OmniPathAllComponents ); +my @Components_rhel78 = ( "opa_stack", "mpi_selector", + @OmniPathAllComponents ); my @Components_rhel8 = ( "opa_stack", "mpi_selector", @OmniPathAllComponents ); my @Components_rhel81 = ( "opa_stack", "mpi_selector", @@ -292,7 +295,7 @@ DefaultInstall => $State_Install, SrcDir => file_glob ("./OFA_MPIS.*"), PreReq => " opa_stack intel_hfi mpi_selector ", CoReq => "", - Hidden => 0, Disabled => 0, IsOFA => 0, + Hidden => 1, Disabled => 1, IsOFA => 0, KernelRpms => [ ], FirmwareRpms => [ ], UserRpms => [ "openmpi_gcc_cuda_hfi", "mpitests_openmpi_gcc_cuda_hfi" ], @@ -501,6 +504,29 @@ }, ); +# We can improve ComponentInfo to include the following. But since they are used +# for mpisrc only, extending ComponentInfo doesn't benefit other components. +# We directly define them here where +# Dest => installation location +# SrcRpms => src rpms to install +# BuildScripts => build script to install +# MiscFiles => misc files, such as version file. This field includes 'Dest' +# and 'Src' to define the installed file name and source file +# name. For SrcRpms and BuildScript fields, the installed file +# name will be the same name as source file. +# DirtyFiles => dirty files will be cleared during install/uninstall, such +# as the build generated files. +%ExtraMpisrcInfo = ( + Dest => "/usr/src/opa/MPI", + SrcRpms => ["mvapich2", "openmpi", "mpitests"], + BuildScripts => ["do_build", "do_mvapich2_build", "do_openmpi_build"], + MiscFiles => [{ + Dest => ".version", + Src => "version"}], + DirtyFiles => [ "{mvapich2,openmpi,mpitests}_*.rpm", + "make.*.{res,err,warn}", ".mpiinfo"] +); + # one of these opa_stack comp_info gets appended to ComponentInfo # for RHEL72 my %opa_stack_rhel72_comp_info = ( @@ -1220,6 +1246,14 @@ sub init_components %opa_stack_dev_comp_info, %opa_stack_rhel_comp_info, ); + } elsif ( "$CUR_VENDOR_VER" eq "ES78" ) { + @Components = ( @Components_rhel78 ); + @SubComponents = ( @SubComponents_newer ); + %ComponentInfo = ( %ComponentInfo, %ibacm_comp_info, + %intel_hfi_comp_info, + %opa_stack_dev_comp_info, + %opa_stack_rhel_comp_info, + ); } elsif ( "$CUR_VENDOR_VER" eq "ES8" ) { @Components = ( @Components_rhel8 ); @SubComponents = ( @SubComponents_newer ); @@ -1691,10 +1725,11 @@ sub process_args Usage; } else { $GPU_Install=1; + $ComponentInfo{"openmpi_gcc_cuda_hfi"}{'Hidden'} = 0; + $ComponentInfo{"openmpi_gcc_cuda_hfi"}{'Disabled'} = 0; } } elsif ( "$arg" eq "-C" ) { - ShowComponents; - exit(0); + $To_Show_Comps = 1; } elsif ( "$arg" eq "-c" ) { # undocumented option to output detailed information on a component $Default_ShowCompInfo=1; @@ -1782,6 +1817,11 @@ sub process_args $last_arg=$arg; } } + + if ($To_Show_Comps == 1) { + ShowComponents; + exit(0); + } if ( $setcomp || $setenabled || $setdisabled || $setosver || $setbuildtemp || $setfwmode || $setanswer) { printf STDERR "Missing argument for option: $last_arg\n"; Usage; diff --git a/CommonInstall/overrides_delta.pl b/CommonInstall/overrides_delta.pl index 4426c0f..89e8109 100644 --- a/CommonInstall/overrides_delta.pl +++ b/CommonInstall/overrides_delta.pl @@ -78,6 +78,10 @@ "opa_stack_dev", "delta_ipoib", "delta_debug", ); +my @delta_Components_rhel78 = ( "opa_stack", "mpi_selector", "intel_hfi", + "opa_stack_dev", + "delta_ipoib", + "delta_debug", ); my @delta_Components_rhel8 = ( "opa_stack", "mpi_selector", "intel_hfi", "opa_stack_dev", "delta_ipoib", @@ -126,6 +130,8 @@ () @Components = ( @delta_Components_rhel76 ); } elsif ( "$CUR_VENDOR_VER" eq "ES77" ) { @Components = ( @delta_Components_rhel77 ); + } elsif ( "$CUR_VENDOR_VER" eq "ES78" ) { + @Components = ( @delta_Components_rhel78 ); } elsif ( "$CUR_VENDOR_VER" eq "ES8" ) { @Components = ( @delta_Components_rhel8 ); } elsif ( "$CUR_VENDOR_VER" eq "ES81" ) { diff --git a/CommonInstall/util_components.pl b/CommonInstall/util_components.pl index d0da409..4e6021e 100755 --- a/CommonInstall/util_components.pl +++ b/CommonInstall/util_components.pl @@ -332,6 +332,8 @@ ($$$$$$) # has component been installed since last configured autostart my %ComponentWasInstalled = (); +my %ExtraMpisrcInfo = (); + # constants for autostart functions $configure argument my $Start_Unspecified=0; my $Start_NoStart=1; @@ -364,24 +366,24 @@ (;$) } else { print $print_param ",\n {\n"; } - print $print_param " \"id\": \"$comp\",\n"; - my $description = $ComponentInfo{$comp}{'Name'}; - print $print_param " \"description\": \"$description\",\n"; + print $print_param " \"ID\": \"$comp\",\n"; + my $name = $ComponentInfo{$comp}{'Name'}; + print $print_param " \"Name\": \"$name\",\n"; if ( $comp eq "delta_debug" ) { print $print_param " \"error\": \"Not apply. We ship debug rpms in meta pkg _debuginfo.\"\n"; print $print_param " },\n"; next; } if (comp_is_available($comp)) { - print $print_param " \"available\": \"yes\",\n"; + print $print_param " \"Available\": \"yes\",\n"; } else { - print $print_param " \"available\": \"no\",\n"; + print $print_param " \"Available\": \"no\",\n"; } my $full_ver = comp_media_version($comp); my ($version, $release) = GetVerRel($full_ver); - print $print_param " \"version\": \"$version\",\n"; - print $print_param " \"release\": \"$release\",\n"; - print $print_param " \"prereqs\": [\n"; + print $print_param " \"Version\": \"$version\",\n"; + print $print_param " \"Release\": \"$release\",\n"; + print $print_param " \"PreReq\": [\n"; $first_item = 1; my @reqs = split(/ /, $ComponentInfo{$comp}{'PreReq'}); foreach my $req (@reqs) { @@ -393,15 +395,15 @@ (;$) $reqver = "$version-$release"; if ($first_item == 1) { $first_item = 0; - print $print_param " {\"id\": \"$req\", \"version\": \"$reqver\"}"; + print $print_param " {\"ID\": \"$req\", \"Version\": \"$reqver\"}"; } else { - print $print_param ",\n {\"id\": \"$req\", \"version\": \"$reqver\"}"; + print $print_param ",\n {\"ID\": \"$req\", \"Version\": \"$reqver\"}"; } } } print $print_param "\n ],\n"; @reqs = split(/ /, $ComponentInfo{$comp}{'CoReq'}); - print $print_param " \"coreqs\": [\n"; + print $print_param " \"CoReq\": [\n"; $first_item = 1; foreach my $req (@reqs) { # ignore req that is not a component. This is for the case we do not @@ -412,21 +414,22 @@ (;$) $reqver = "$version-$release"; if ($first_item == 1) { $first_item = 0; - print $print_param " {\"id\": \"$req\", \"version\": \"$reqver\"}"; + print $print_param " {\"ID\": \"$req\", \"Version\": \"$reqver\"}"; } else { - print $print_param ",\n {\"id\": \"$req\", \"version\": \"$reqver\"}"; + print $print_param ",\n {\"ID\": \"$req\", \"Version\": \"$reqver\"}"; } } } print $print_param "\n ],\n"; if ( $comp eq "mpisrc" ) { - print $print_param " \"srcrpms\": {\n"; - print $print_param " \"dest\": \"/usr/src/opa/MPI/\",\n"; + print $print_param " \"SrcRpms\": {\n"; + my $destdir = $ExtraMpisrcInfo{'Dest'}; + print $print_param " \"Dest\": \"$destdir\",\n"; my $srcdir=$ComponentInfo{'mpisrc'}{'SrcDir'}; - print $print_param " \"source\": \"$srcdir\",\n"; - print $print_param " \"resources\": [\n"; + print $print_param " \"Source\": \"$srcdir\",\n"; + print $print_param " \"Resources\": [\n"; $first_item = 1; - foreach my $srpm ( "mvapich2", "openmpi", "mpitests" ) { + foreach my $srpm (@{$ExtraMpisrcInfo{'SrcRpms'}}) { my $srpmfile = file_glob("$srcdir/${srpm}-*.src.rpm"); if ( "$srpmfile" ne "" ) { my $file = my_basename($srpmfile); @@ -440,29 +443,60 @@ (;$) } print $print_param "\n ]\n"; print $print_param " },\n"; - print $print_param " \"tools\": {\n"; - print $print_param " \"dest\": \"/usr/src/opa/MPI/\",\n"; - print $print_param " \"source\": \"$srcdir\",\n"; - print $print_param " \"resources\": [\n"; - print $print_param " \"do_build\",\n"; - print $print_param " \"do_mvapich2_build\",\n"; - print $print_param " \"do_openmpi_build\"\n"; - print $print_param " ]\n"; + print $print_param " \"BuildScripts\": {\n"; + print $print_param " \"Dest\": \"$destdir\",\n"; + print $print_param " \"Source\": \"$srcdir\",\n"; + print $print_param " \"Resources\": [\n"; + $first_item = 1; + foreach my $script (@{$ExtraMpisrcInfo{'BuildScripts'}}) { + if ($first_item == 1) { + $first_item = 0; + print $print_param " \"$script\""; + } else { + print $print_param ",\n \"$script\""; + } + } + print $print_param "\n ]\n"; print $print_param " },\n"; - print $print_param " \"misc\": [\n"; - print $print_param " {\"dest\": \"/usr/src/opa/MPI/.version\", \"source\": \"$srcdir\", \"resource\": \"version\"}\n"; - print $print_param " ]\n"; + print $print_param " \"MiscFiles\": [\n"; + $first_item = 1; + foreach my $file (@{$ExtraMpisrcInfo{'MiscFiles'}}) { + my $src = ${$file}{'Src'}; + my $dest = ${$file}{'Dest'}; + if ($first_item == 1) { + $first_item = 0; + } else { + print $print_param ",\n"; + } + print $print_param " {\"Dest\": \"$destdir/$dest\", \"Src\": \"$srcdir/$src\"}"; + } + print $print_param "\n ],\n"; + print $print_param " \"DirtyFiles\": {\n"; + print $print_param " \"Dest\": \"$destdir\",\n"; + print $print_param " \"Source\": \"\",\n"; + print $print_param " \"Resources\": [\n"; + $first_item = 1; + foreach my $file (@{$ExtraMpisrcInfo{'DirtyFiles'}}) { + if ($first_item == 1) { + $first_item = 0; + print $print_param " \"$file\""; + } else { + print $print_param ",\n \"$file\""; + } + } + print $print_param "\n ]\n"; + print $print_param " }\n"; } else { - print $print_param " \"userrpms\": [\n"; + print $print_param " \"UserRpms\": [\n"; ShowRpmList($print_param, " ", "user", @{$ComponentInfo{$comp}{'UserRpms'}}); print $print_param "\n ],\n"; - print $print_param " \"kernelrpms\": [\n"; + print $print_param " \"KernelRpms\": [\n"; ShowRpmList($print_param, " ", $CUR_OS_VER, @{$ComponentInfo{$comp}{'KernelRpms'}}); print $print_param "\n ],\n"; - print $print_param " \"firmwarerpms\": [\n"; + print $print_param " \"FirmwareRpms\": [\n"; ShowRpmList($print_param, " ", "firmware", @{$ComponentInfo{$comp}{'FirmwareRpms'}}); print $print_param "\n ],\n"; - print $print_param " \"debugrpms\": [\n"; + print $print_param " \"DebugTpms\": [\n"; ShowRpmList($print_param, " ", "any", @{$ComponentInfo{$comp}{'DebugRpms'}}); print $print_param "\n ]\n"; } @@ -510,9 +544,9 @@ ($$$$@) } if ($first_item == 1) { $first_item = 0; - print $print_param "$prefix\{\"id\": \"$rpm\", \"version\": \"$version\"}"; + print $print_param "$prefix\{\"ID\": \"$rpm\", \"Version\": \"$version\"}"; } else { - print $print_param ",\n$prefix\{\"id\": \"$rpm\", \"version\": \"$version\"}"; + print $print_param ",\n$prefix\{\"ID\": \"$rpm\", \"Version\": \"$version\"}"; } } else { DebugPrint "Not found $rpm"; diff --git a/CommonInstall/util_init.pl b/CommonInstall/util_init.pl index 7768ac4..623961e 100755 --- a/CommonInstall/util_init.pl +++ b/CommonInstall/util_init.pl @@ -321,12 +321,14 @@ () my %distroVendor = ( "rhel" => "redhat", "centos" => "redhat", - "sles" => "SuSE" + "sles" => "SuSE", + "sle_hpc" => "SuSE" ); my %network_conf_dir = ( "rhel" => $NETWORK_CONF_DIR, "centos" => $NETWORK_CONF_DIR, - "sles" => "/etc/sysconfig/network" + "sles" => "/etc/sysconfig/network", + "sle_hpc" => "/etc/sysconfig/network" ); my $os_id = `cat $os_release_file | grep '^ID=' | cut -d'=' -f2 | tr -d [\\"\\.0] | tr -d ["\n"]`; $CUR_DISTRO_VENDOR = $distroVendor{$os_id}; diff --git a/IbaTools/man/opafmconfigpp.manPage b/IbaTools/man/opafmconfigpp.manPage deleted file mode 100644 index 68ab5cf..0000000 --- a/IbaTools/man/opafmconfigpp.manPage +++ /dev/null @@ -1,90 +0,0 @@ -.\" .\" ********************************************************************* -.\" .\" * * -.\" .\" * Copyright 2015-2019, Intel Corporation * -.\" .\" * * -.\" .\" * All Rights Reserved. * -.\" .\" * * -.\" .\" ********************************************************************* - -.TH opafmconfigpp 8 "Intel Corporation" "Copyright(C) 2015\-2019" "IFSFFCLIRG (Man Page)" -.SH NAME -opafmconfigpp - - -.PP -Merges opafm.xml pre-process file with set of VirtualFabric and DeviceGroup XML files. -.SH Syntax -opafmconfigpp [-p \fIppfile\fR] [-o \fIoutput\fR] [-b] [-s] [-f] [-h] -.SH Options - -.TP 10 --h - -Produces full help text. - -.TP 10 --p \fIppfile\fR - -Specifies the file to preprocess. Default is /etc/opa-fm/opafm\(ulpp.xml. - -.TP 10 --o \fIoutput\fR - -Specifies the output XML file. Default is /etc/opa-fm/opafm.xml. - -.TP 10 --b - -Backs up the old output file if one exists. Default is 0. - -.TP 10 --s - -Skips running Config Check on output. Default is 0. - -.TP 10 --f - -Forces overwrite of old output file. Default is 0. - -.SH Notes - -.PP -The output file will contain two comments at the top, along with the local time it was generated. -.PP -The special INCLUDE comments follow this style: -.PP - -.br - -.br - - - -.br - -.PP -Examples: -.PP - -.br - -.br - - -.br - - -.br - - - -.br - -.PP -INCLUDE comments will be replaced with contents of the given directories. -.SH Example -opafmconfigpp -.br - -opafmconfigpp -b -s diff --git a/IbaTools/opagenswitches/opagenswitches.sh b/IbaTools/opagenswitches/opagenswitches.sh index bbef890..ae3976a 100644 --- a/IbaTools/opagenswitches/opagenswitches.sh +++ b/IbaTools/opagenswitches/opagenswitches.sh @@ -280,7 +280,7 @@ gen_switches() fi # valid names for switches start with a non-numeric and are alpha numeric - if [[ $nodedesc =~ ^[a-zA-Z_][a-zA-Z_0-9]*$ ]] + if [[ $nodedesc =~ ^[a-zA-Z_\-][a-zA-Z_0-9\-]*$ ]] then echo "$nodeguid$suffix,$nodedesc$comma$distance" >> $file_switches else diff --git a/IbaTools/opareport/opareport.c b/IbaTools/opareport/opareport.c index 3cc5134..40c07a8 100644 --- a/IbaTools/opareport/opareport.c +++ b/IbaTools/opareport/opareport.c @@ -12395,6 +12395,16 @@ void Usage_full(void) fprintf(stderr, " route:point1:point2 - all ports along the routes between the 2 given\n"); fprintf(stderr, " points\n"); fprintf(stderr, " led:value - value is either 'on' or 'off' for LED port beacon\n"); + fprintf(stderr, " linkcrc:value - ports with an active link CRC equal to value\n"); + fprintf(stderr, " value can be: 14-bit, 16-bit, 48-bit or\n"); + fprintf(stderr, " 12-16/lane\n"); + fprintf(stderr, " or their aliases: 14b, 16b, 48b or per_lane\n"); + fprintf(stderr, " omits switch mgmt port 0\n"); + fprintf(stderr, " linkcrcNE:value - ports with an active link CRC not equal to value\n"); + fprintf(stderr, " value can be: 14-bit, 16-bit, 48-bit or\n"); + fprintf(stderr, " 12-16/lane\n"); + fprintf(stderr, " or their aliases: 14b, 16b, 48b or per_lane\n"); + fprintf(stderr, " omits switch mgmt port 0\n"); fprintf(stderr, " linkqual:value - ports with a link quality equal to value\n"); fprintf(stderr, " linkqualLE:value - ports with a link quality less than or equal to\n"); fprintf(stderr, " value\n"); diff --git a/MakeTools/funcs-ext.sh b/MakeTools/funcs-ext.sh index 9aa4cd2..f6f6b7b 100755 --- a/MakeTools/funcs-ext.sh +++ b/MakeTools/funcs-ext.sh @@ -719,6 +719,9 @@ function os_vendor() sles) rval=SuSE ;; + sle_hpc) + rval=SuSE + ;; centos) rval=redhat ;; diff --git a/OpenIb_Host/LINUX/Makefile b/OpenIb_Host/LINUX/Makefile index 482917d..bbaa13f 100644 --- a/OpenIb_Host/LINUX/Makefile +++ b/OpenIb_Host/LINUX/Makefile @@ -108,6 +108,12 @@ endif ifeq "$(BUILD_TARGET_OS_VENDOR_VERSION)" "ES76" PREREQ_SOURCE= $(TL_DIR)/CommonInstall/comp_ff_of_prereq_RHEL76.pl endif +ifeq "$(BUILD_TARGET_OS_VENDOR_VERSION)" "ES77" + PREREQ_SOURCE= $(TL_DIR)/CommonInstall/comp_ff_of_prereq_RHEL77.pl +endif +ifeq "$(BUILD_TARGET_OS_VENDOR_VERSION)" "ES78" + PREREQ_SOURCE= $(TL_DIR)/CommonInstall/comp_ff_of_prereq_RHEL78.pl +endif ifeq "$(BUILD_TARGET_OS_VENDOR_VERSION)" "ES8" PREREQ_SOURCE= $(TL_DIR)/CommonInstall/comp_ff_of_prereq_RHEL8.pl endif diff --git a/OpenIb_Host/build.env b/OpenIb_Host/build.env index 999040f..d957571 100644 --- a/OpenIb_Host/build.env +++ b/OpenIb_Host/build.env @@ -1,6 +1,6 @@ # Adjust the environment variables if necessary export PRODUCT=OPENIB_FF -export RELEASE_TAG=10_10_1_0_35 +export RELEASE_TAG=10_10_2_0_45 export BUILD_CONFIG=${BUILD_CONFIG:-"release"} export BUILD_WITH_STACK=OPENIB export LDENVFS= diff --git a/OpenIb_Host/build_label b/OpenIb_Host/build_label index faf816d..0659e12 100644 --- a/OpenIb_Host/build_label +++ b/OpenIb_Host/build_label @@ -1 +1 @@ -Build of OPENIB_FF 12/26/19 23:51 Tag: OPENIB_FF_LINUX_opa-10_10_10_10_1_0_35 +Build of OPENIB_FF 03/18/20 23:45 Tag: OPENIB_FF_LINUX_opa-10_10_10_10_2_0_45 diff --git a/Topology/focus.c b/Topology/focus.c index d992fdd..1206909 100644 --- a/Topology/focus.c +++ b/Topology/focus.c @@ -1704,9 +1704,60 @@ static FSTATUS ParseSmDetailsPatPoint(FabricData_t *fabricp, char *arg, Point *p return FindSmDetailsPatPoint(fabricp, arg, pPoint, find_flag); } +static FSTATUS ParseLinkCRCPoint(FabricData_t *fabricp, char *arg, Point *pPoint, uint8 find_flag, char **pp) +{ + LinkCRCCompare comp = CRC_EQ; + uint16 crc; + char *next; + + ASSERT(! PointValid(pPoint)); + *pp = arg; + if (NULL != (next = ComparePrefix(arg, "NE:"))) { + comp = CRC_NE; // not equal + } else if (NULL != (next = ComparePrefix(arg, ":"))) { + comp = CRC_EQ; // equal + } else { + fprintf(stderr, "%s: Invalid Link CRC format: '%s'\n", + g_Top_cmdname, arg); + return FINVALID_PARAMETER; + } + + *pp = next; + if (NULL != (next = ComparePrefix(*pp, "14b"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_14; + } else if (NULL != (next = ComparePrefix(*pp, "14-bit"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_14; + } else if (NULL != (next = ComparePrefix(*pp, "16b"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_16; + } else if (NULL != (next = ComparePrefix(*pp, "16-bit"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_16; + } else if (NULL != (next = ComparePrefix(*pp, "48b"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_48; + } else if (NULL != (next = ComparePrefix(*pp, "48-bit"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_48; + } else if (NULL != (next = ComparePrefix(*pp, "per_lane"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_12_16_PER_LANE; + } else if (NULL != (next = ComparePrefix(*pp, "12-16/lane"))) { + *pp = next; + crc = STL_PORT_LTP_CRC_MODE_12_16_PER_LANE; + } else { + fprintf(stderr, "%s: Invalid Link CRC format: '%s'\n", g_Top_cmdname, arg); + return FINVALID_PARAMETER; + } + + return FindLinkCRCPoint(fabricp, crc, comp, pPoint, find_flag); +} + static FSTATUS ParseLinkQualityPoint(FabricData_t *fabricp, char *arg, Point *pPoint, uint8 find_flag, char **pp) { - LinkQualityCompare comp; + LinkQualityCompare comp = QUAL_EQ; uint16 quality; char *Quality; @@ -1748,7 +1799,7 @@ static FSTATUS ParseLinkDownReasonPoint(FabricData_t *fabricp, char *arg, Point if (NULL != (ldrp = ComparePrefix(arg, ":"))) { *pp = ldrp; if (FSUCCESS != StringToUint8(&ldr, ldrp, pp, 0, TRUE)) { - fprintf(stderr, "%s: Invalid Link Quality format: '%s'\n", g_Top_cmdname, arg); + fprintf(stderr, "%s: Invalid Link Down Reason format: '%s'\n", g_Top_cmdname, arg); return FINVALID_PARAMETER; } } @@ -1884,6 +1935,8 @@ FSTATUS ParsePoint(FabricData_t *fabricp, char* arg, Point* pPoint, uint8 find_f status = ParseSmDetailsPatPoint(fabricp, param, pPoint, find_flag, pp); } else if (NULL != (param = ComparePrefix(arg, "sm"))) { status = ParseSmPoint(fabricp, param, pPoint, find_flag, pp); + } else if (NULL != (param = ComparePrefix(arg, "linkcrc"))) { + status = ParseLinkCRCPoint(fabricp, param, pPoint, find_flag, pp); } else if (NULL != (param = ComparePrefix(arg, "linkqual"))) { status = ParseLinkQualityPoint(fabricp, param, pPoint, find_flag, pp); } else if (NULL != (param = ComparePrefix(arg, "ldr"))) { diff --git a/Topology/search.c b/Topology/search.c index d0c43dc..1f1cc61 100644 --- a/Topology/search.c +++ b/Topology/search.c @@ -2106,6 +2106,59 @@ ExpectedLink* FindExpectedLinkByOneSide(const FabricData_t *fabricp, EUI64 nodeG } +// FNOT_FOUND - no instances found +// FINVALID_OPERATION - find_flag contains no applicable searches +// other - error allocating memory or initializing structures +FSTATUS FindLinkCRCPoint(FabricData_t *fabricp, uint16 crc, LinkCRCCompare comp, Point *pPoint, uint8 find_flag) +{ + FSTATUS status; + + ASSERT(! PointValid(pPoint)); + if (0 == (find_flag & FIND_FLAG_FABRIC)) + return FINVALID_OPERATION; + if (find_flag & FIND_FLAG_FABRIC) { + LIST_ITEM *p; + for (p=QListHead(&fabricp->AllPorts); p != NULL; p = QListNext(&fabricp->AllPorts, p)) { + PortData *portp = (PortData *)QListObj(p); + + boolean match = FALSE; + /* omit switch port 0, CRC is often odd and N/A */ + if (portp->PortNum == 0) + continue; + switch (comp) { + case CRC_EQ: + match = (portp->PortInfo.PortLTPCRCMode.s.Active == crc ); + break; + case CRC_NE: + match = (portp->PortInfo.PortLTPCRCMode.s.Active != crc ); + break; + default: + break; + } + if (match) { + status = PointListAppend(pPoint, POINT_TYPE_PORT_LIST, portp); + if (FSUCCESS != status) + return status; + } + } + } + + // N/A for FIND_FLAG_ENODE, FIND_FLAG_ESM and FIND_FLAG_ELINK + + if (! PointValid(pPoint)) { + char tempbuf[20]; + fprintf(stderr, "%s: Link CRC Not Found: %s %s\n", + g_Top_cmdname, + (comp == CRC_EQ)? "EQ" + : (comp == CRC_NE) ? "NE" + : "", /* should not happen */ + StlPortLtpCrcModeToText(crc, tempbuf, sizeof(tempbuf))); + return FNOT_FOUND; + } + PointCompress(pPoint); + return FSUCCESS; +} + // FNOT_FOUND - no instances found // FINVALID_OPERATION - find_flag contains no applicable searches // other - error allocating memory or initializing structures @@ -2148,8 +2201,13 @@ FSTATUS FindLinkQualityPoint(FabricData_t *fabricp, uint16 quality, LinkQualityC // N/A for FIND_FLAG_ENODE, FIND_FLAG_ESM and FIND_FLAG_ELINK if (! PointValid(pPoint)) { - fprintf(stderr, "%s: Link Quality Not Found: %d\n", - g_Top_cmdname, quality); + fprintf(stderr, "%s: Link Quality Not Found: %s %d\n", + g_Top_cmdname, + (comp == QUAL_EQ)? "EQ" + : (comp == QUAL_GE) ? "GE" + : (comp == QUAL_LE) ? "LE" + : "", /* should not happen */ + quality); return FNOT_FOUND; } PointCompress(pPoint); diff --git a/Topology/topology.h b/Topology/topology.h index 38d8449..fefa979 100644 --- a/Topology/topology.h +++ b/Topology/topology.h @@ -791,6 +791,11 @@ typedef enum { QUAL_LE } LinkQualityCompare; +typedef enum { + CRC_EQ, + CRC_NE +} LinkCRCCompare; + // simple way to convert time_t to a localtime date string in dest // (from Topology/getdate.c) extern void Top_formattime(char *dest, size_t max, time_t t); @@ -1032,6 +1037,7 @@ extern PortData * FindNodeGuidPort(FabricData_t *fabricp,EUI64 nodeguid, uint8 p extern ExpectedNode* FindExpectedNodeByNodeGuid(const FabricData_t* fabricp, EUI64 nodeGuid); extern ExpectedNode* FindExpectedNodeByNodeDesc(const FabricData_t* fabricp, const char* nodeDesc, uint8 NodeType); extern ExpectedLink* FindExpectedLinkByOneSide(const FabricData_t* fabricp, EUI64 nodeGuid, uint8 portNum, uint8* side); +extern FSTATUS FindLinkCRCPoint(FabricData_t *fabricp, uint16 crc, LinkCRCCompare comp, Point *pPoint, uint8 find_flag); extern FSTATUS FindLinkQualityPoint(FabricData_t *fabricp, uint16 quality, LinkQualityCompare comp, Point *pPoint, uint8 find_flag); extern FSTATUS FindLinkDownReasonPoint(FabricData_t *fabricp, uint8 ldr, Point *pPoint, uint8 find_flag); extern FSTATUS FindExpectedSMByPortGuid(FabricData_t *fabricp, EUI64 portGuid); diff --git a/get_id_and_versionid.sh b/get_id_and_versionid.sh index 81d2c51..e3ad998 100755 --- a/get_id_and_versionid.sh +++ b/get_id_and_versionid.sh @@ -3,6 +3,9 @@ if [ -f /etc/os-release ] then id=$(grep ^ID= /etc/os-release | cut -f2 -d= | cut -f2 -d\") + if [[ "$id" == "sle_hpc" ]]; then + id="sles" + fi versionid=$(grep ^VERSION_ID= /etc/os-release | cut -f2 -d\") else if [ `uname -s` == "Darwin" ] diff --git a/opa-ff.spec.in b/opa-ff.spec.in index 381b9e0..6bf3f1a 100644 --- a/opa-ff.spec.in +++ b/opa-ff.spec.in @@ -1,6 +1,6 @@ Name: opa -Version: 10.10.1.0 -Release: 35%{?dist} +Version: 10.10.2.0 +Release: 45%{?dist} Summary: Intel Omni-Path basic tools and libraries for fabric managment. Group: System Environment/Libraries @@ -18,7 +18,7 @@ __RPM_DEBUG_PKG %description This package contains the tools necessary to manage an Intel(R) Omni-Path Architecture fabric. -IFSComponent: Tools_FF 10.10.1.0.35%{?dist} +IFSComponent: Tools_FF 10.10.2.0.45%{?dist} %package basic-tools Summary: Managment level tools and scripts. @@ -35,7 +35,7 @@ Epoch: 1 %description basic-tools Contains basic tools for fabric managment necessary on all compute nodes. -IFSComponent: Tools_FF 10.10.1.0.35%{?dist} +IFSComponent: Tools_FF 10.10.2.0.45%{?dist} %package fastfabric Summary: Management level tools and scripts. @@ -48,7 +48,7 @@ Epoch: 1 %description fastfabric Contains tools for managing fabric on a managment node. -IFSComponent: Tools_FF 10.10.1.0.35%{?dist} +IFSComponent: Tools_FF 10.10.2.0.45%{?dist} %package address-resolution Summary: Contains Address Resolution manager @@ -62,7 +62,7 @@ Epoch: 1 %description address-resolution This package contains the ibacm distributed SA provider (dsap) for name and address resolution on OPA platform. It also contains the library and tools to access the shared memory database exported by dsap. -IFSComponent: Tools_FF 10.10.1.0.35%{?dist} +IFSComponent: Tools_FF 10.10.2.0.45%{?dist} %package libopamgt Summary: Omni-Path management API library @@ -71,7 +71,7 @@ Requires: __RPM_REQ_OPAMGT %description libopamgt This package contains the library necessary to build applications that interface with an Omni-Path FM. -IFSComponent: Tools_FF 10.10.1.0.35%{?dist} +IFSComponent: Tools_FF 10.10.2.0.45%{?dist} %package libopamgt-devel @@ -81,7 +81,7 @@ Requires: __RPM_REQ_OPAMGT_DEV %description libopamgt-devel This package contains the necessary headers for opamgt development. -IFSComponent: Tools_FF 10.10.1.0.35%{?dist} +IFSComponent: Tools_FF 10.10.2.0.45%{?dist} %prep #rm -rf %{_builddir}/*