diff --git a/.gitignore b/.gitignore index e69de29..225c2bc 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,8 @@ +/libpsm2-10.2.1.tar.gz +/libpsm2-10.2.2.tar.gz +/libpsm2-10.2.103_1.tar.gz +/libpsm2-10.3.8.tar.gz +/libpsm2-10.3.58.tar.gz +/libpsm2-11.2.23.tar.gz +/libpsm2-11.2.78.tar.gz +/libpsm2-11.2.86.tar.gz diff --git a/0001-Fix-multiple-definition-issues.patch b/0001-Fix-multiple-definition-issues.patch new file mode 100644 index 0000000..f3a1582 --- /dev/null +++ b/0001-Fix-multiple-definition-issues.patch @@ -0,0 +1,112 @@ +From d91fc0569da44e7b9ebb6883974703b8e982098b Mon Sep 17 00:00:00 2001 +From: Honggang Li +Date: Mon, 10 Feb 2020 04:59:36 -0500 +Subject: [PATCH] Fix multiple definition issues + +Signed-off-by: Honggang Li +--- + psm_error.h | 2 +- + psm_utils.c | 6 ++++++ + psm_utils.h | 7 ++----- + ptl_am/ptl_fwd.h | 2 +- + ptl_ips/ptl_fwd.h | 4 ++-- + ptl_self/ptl_fwd.h | 2 +- + 6 files changed, 13 insertions(+), 10 deletions(-) + +diff --git a/psm_error.h b/psm_error.h +index f335382..cb1b4ba 100644 +--- a/psm_error.h ++++ b/psm_error.h +@@ -65,7 +65,7 @@ + #define PSMI_EP_NORETURN ((psm2_ep_t) -2) + #define PSMI_EP_LOGEVENT ((psm2_ep_t) -3) + +-psm2_ep_errhandler_t psmi_errhandler_global; ++extern psm2_ep_errhandler_t psmi_errhandler_global; + + psm2_error_t MOCKABLE(psmi_handle_error)(psm2_ep_t ep, psm2_error_t error, + const char *buf, ...) +diff --git a/psm_utils.c b/psm_utils.c +index 521467f..7787f53 100644 +--- a/psm_utils.c ++++ b/psm_utils.c +@@ -62,6 +62,12 @@ int psmi_ep_device_is_enabled(const psm2_ep_t ep, int devid); + + struct psmi_epid_table psmi_epid_table; + ++/* ++ * Global model so we can tune defaults better for specific cpu's ++ */ ++uint32_t psmi_cpu_model; ++ ++ + /* Iterator to access the epid table. + * 'ep' can be NULL if remote endpoints from all endpoint handles are requested + */ +diff --git a/psm_utils.h b/psm_utils.h +index fc38153..b94443d 100644 +--- a/psm_utils.h ++++ b/psm_utils.h +@@ -317,10 +317,7 @@ uint32_t psmi_crc(unsigned char *buf, int len); + #define CPUID_GENUINE_INTEL 0xf0000000 + #define CPUID_MODEL_UNDEFINED -1 + +-/* +- * Global model so we can tune defaults better for specific cpu's +- */ +-uint32_t psmi_cpu_model; ++extern uint32_t psmi_cpu_model; + + /* + * Diagnostics, all in psm_diags.c +@@ -337,7 +334,7 @@ void psmi_multi_ep_init(); + * Fault injection + */ + struct psmi_faultinj_spec; +-int psmi_faultinj_enabled; /* use macro to test */ ++extern int psmi_faultinj_enabled; /* use macro to test */ + #if 1 /* possible to disable at compile time */ + #define PSMI_FAULTINJ_ENABLED() (!!psmi_faultinj_enabled) + #else +diff --git a/ptl_am/ptl_fwd.h b/ptl_am/ptl_fwd.h +index e1bd064..1d0fec4 100644 +--- a/ptl_am/ptl_fwd.h ++++ b/ptl_am/ptl_fwd.h +@@ -57,7 +57,7 @@ + #define _PTL_FWD_AMSH_H + + /* Symbol in am ptl */ +-struct ptl_ctl_init psmi_ptl_amsh; ++extern struct ptl_ctl_init psmi_ptl_amsh; + + extern int psmi_shm_mq_rv_thresh; + +diff --git a/ptl_ips/ptl_fwd.h b/ptl_ips/ptl_fwd.h +index 3702fba..b774260 100644 +--- a/ptl_ips/ptl_fwd.h ++++ b/ptl_ips/ptl_fwd.h +@@ -61,7 +61,7 @@ typedef struct ips_epaddr ips_epaddr_t; + typedef struct ips_msgctl ips_msgctl_t; + + /* Symbol in ips ptl */ +-struct ptl_ctl_init psmi_ptl_ips; ++extern struct ptl_ctl_init psmi_ptl_ips; + +-struct ptl_ctl_rcvthread psmi_ptl_ips_rcvthread; ++extern struct ptl_ctl_rcvthread psmi_ptl_ips_rcvthread; + #endif /* _PTL_FWD_IPS_H */ +diff --git a/ptl_self/ptl_fwd.h b/ptl_self/ptl_fwd.h +index 77ee7f9..7ee6b73 100644 +--- a/ptl_self/ptl_fwd.h ++++ b/ptl_self/ptl_fwd.h +@@ -57,6 +57,6 @@ + #define _PTL_FWD_SELF_H + + /* Symbol in am ptl */ +-struct ptl_ctl_init psmi_ptl_self; ++extern struct ptl_ctl_init psmi_ptl_self; + + #endif +-- +2.25.0 + diff --git a/libpsm2.spec b/libpsm2.spec new file mode 100644 index 0000000..fa46426 --- /dev/null +++ b/libpsm2.spec @@ -0,0 +1,236 @@ +# +# This file is provided under a dual BSD/GPLv2 license. When using or +# redistributing this file, you may do so under either license. +# +# GPL LICENSE SUMMARY +# +# Copyright(c) 2015 Intel Corporation. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of version 2 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Contact Information: +# Intel Corporation, www.intel.com +# +# BSD LICENSE +# +# Copyright(c) 2015 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. +# +# Copyright (c) 2014-2015 Intel Corporation. All rights reserved. +# +Summary: Intel PSM Libraries +Name: libpsm2 +Version: 11.2.86 +Release: 6%{?dist} +License: BSD or GPLv2 +URL: https://github.com/01org/opa-psm2/ + +# The tarball can be created by: +# git clone https://github.com/01org/opa-psm2 +# cd opa-psm2 +# git checkout 4f0ad8cf4d6b44fcce5f745e946a056659ba54c0 +# make dist +Source0: %{name}-%{version}.tar.gz +Patch0: 0001-Fix-multiple-definition-issues.patch +Patch1: makefile-distro-from-environment.patch + +# The OPA product is supported on x86 64 only: +ExclusiveArch: x86_64 +BuildRequires: libuuid-devel +BuildRequires: numactl-devel +BuildRequires: systemd +BuildRequires: gcc +Obsoletes: hfi1-psm < 1.0.0 + +%package devel +Summary: Development files for Intel PSM +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libuuid-devel + +%package compat +Summary: Compat library for Intel PSM +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: systemd-udev + +%global _privatelibs libpsm_infinipath[.]so[.]1.* +%global __provides_exclude ^(%{_privatelibs})$ +%global __requires_exclude ^(%{_privatelibs})$ + +%description +The PSM Messaging API, or PSM API, is the low-level +user-level communications interface for the Intel OPA +family of products. PSM users are enabled with mechanisms +necessary to implement higher level communications +interfaces in parallel environments. + +%description devel +Development files for the Intel PSM library + +%description compat +Support for MPIs linked with PSM versions < 2 + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 + +%build +%{set_build_flags} +%{make_build} + +%install +%if 0%{?fedora} +export DISTRO=fedora +%endif +%if 0%{?rhel} +export DISTRO=rhel +%endif +%make_install +rm -f %{buildroot}%{_libdir}/*.a + +%ldconfig_scriptlets + +%files +%license COPYING +%{_libdir}/libpsm2.so.2.1 +%{_libdir}/libpsm2.so.2 +%if 0%{?rhel} >= 8 +%{_udevrulesdir}/40-psm.rules +%endif + + +%files devel +%{_libdir}/libpsm2.so +%{_includedir}/psm2.h +%{_includedir}/psm2_mq.h +%{_includedir}/psm2_am.h +%{_includedir}/hfi1diag + +%files compat +%{_libdir}/psm2-compat +%{_udevrulesdir}/40-psm-compat.rules +%{_prefix}/lib/libpsm2 +%if 0%{?fedora} +%{_prefix}/lib/modprobe.d/libpsm2-compat.conf +%endif +%if 0%{?rhel} >= 8 +%{_sysconfdir}/modprobe.d/libpsm2-compat.conf +%endif + +%changelog +* Tue Jul 28 2020 Fedora Release Engineering - 11.2.86-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Merlin Mathesius - 11.2.86-5 +- Minor updates to enable building for ELN + +* Mon Feb 10 2020 Honggang Li - 11.2.86-4 +- Fix FTBFS in Fedora rawhide/f32 +- Resolves: bz1799597 + +* Wed Jan 29 2020 Fedora Release Engineering - 11.2.86-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jan 17 2020 Tom Stellard - 11.2.86-2 +- Use make_build macro + +* Thu Oct 03 2019 Honggang Li - 11.2.86-1 +- Rebase to latest upstream release PSM2_11.2.86 +- Resolves: bz1758390 + +* Thu Jul 25 2019 Fedora Release Engineering - 11.2.78-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 11.2.78-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jan 31 2019 Honggang Li - 11.2.78-1 +- Rebase to latest upstream release PSM2_11.2.77 +- Resolves: bz1671190 + +* Mon Oct 8 2018 Honggang Li - 11.2.23-1 +- Rebase to latest upstream release 11.2.23 +- Resolves: bz1637273 + +* Fri Jul 13 2018 Fedora Release Engineering - 10.3.58-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 22 2018 Honggang Li - 10.3.58-1 +- Rebase to latest upstream release 10.3.58. +- Resolves: bz1594073 + +* Thu Mar 15 2018 - 10.3.8-5 +- Fix partial injection of Fedora build flags. +- Double the sizeof array fdesc to fix a gcc compiling issue. +- Resolves: bz1556062 + +* Wed Feb 07 2018 Fedora Release Engineering - 10.3.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 4 2018 Honggang Li - 10.3.8-3 +- Filter PSM1 library as private library +- Resolves: bz1530979 + +* Fri Dec 15 2017 Honggang Li - 10.3.8-2 +- Minor enhancement +- Resolves: bz1526261 + +* Tue Dec 12 2017 Honggang Li - 10.3.8-1 +- Rebase to latest upstream release +- Resolves: bz1524846 + +* Thu Aug 03 2017 Fedora Release Engineering - 10.2.103_1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 10.2.103_1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Apr 13 2017 Honggang Li - 10.2.103_1-1 +- Rebase to latest upstream master branch. +- Fix build failures caught by gcc 7.x. +- Resolves: bz1423872 + +* Fri Feb 10 2017 Fedora Release Engineering - 10.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jun 13 2016 Michal Schmidt - 10.2.2-2 +- Remove redundant %%setup -n argument. +- Packaging Guidelines: Never use "(R)" in description. + +* Tue Jun 07 2016 Paul Reger - 10.2.2-1 +- Fix build failures only. + +* Tue Apr 05 2016 Paul Reger - 10.2.1-1 +- Upstream PSM2 source code for Fedora. diff --git a/makefile-distro-from-environment.patch b/makefile-distro-from-environment.patch new file mode 100644 index 0000000..2ce7330 --- /dev/null +++ b/makefile-distro-from-environment.patch @@ -0,0 +1,13 @@ +diff -ru ../libpsm2-11.2.86.orig/Makefile ./Makefile +--- ../libpsm2-11.2.86.orig/Makefile 2019-10-03 21:00:29.000000000 -0500 ++++ ./Makefile 2020-07-13 13:55:53.994452919 -0500 +@@ -164,7 +164,8 @@ + # The DISTRO variable is used subsequently for variable + # behaviors of the 3 distros. + +-DISTRO := $(shell . /etc/os-release; echo $$ID) ++# Use DISTRO from the environment ++# DISTRO := $(shell . /etc/os-release; echo $$ID) + + # By default the following two variables have the following values: + LIBPSM2_COMPAT_CONF_DIR := /etc diff --git a/sources b/sources new file mode 100644 index 0000000..747e923 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (libpsm2-11.2.86.tar.gz) = d4e6c8b20e94c236dd773a54c61ddef1456774b3671c481c1af7c78328fc20747935a68cabbb379798605a13edccbeb0bcd55b216885ca0e4f8cba7cae99002a