diff --git a/pmix.spec b/pmix.spec new file mode 100644 index 0000000..7c59628 --- /dev/null +++ b/pmix.spec @@ -0,0 +1,137 @@ +%global name_version %{name}-%{version} + +Name: pmix +Version: 3.1.6 +Release: %{?dist} +Summary: Process Management Interface Exascale (PMIx) +License: BSD +URL: https://pmix.org/ +Source0: https://github.com/pmix/%{name}/releases/download/v%{version}/%{name_version}.tar.bz2 + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: flex +BuildRequires: gcc +BuildRequires: hwloc-devel +BuildRequires: libevent-devel +BuildRequires: libtool +BuildRequires: munge-devel +BuildRequires: perl-interpreter + +%description +The Process Management Interface (PMI) has been used for quite some time as +a means of exchanging wireup information needed for interprocess +communication. Two versions (PMI-1 and PMI-2) have been released as part of +the MPICH effort. While PMI-2 demonstrates better scaling properties than its +PMI-1 predecessor, attaining rapid launch and wireup of the roughly 1M +processes executing across 100k nodes expected for exascale operations remains +challenging. + +PMI Exascale (PMIx) represents an attempt to resolve these questions by +providing an extended version of the PMI standard specifically designed to +support clusters up to and including exascale sizes. The overall objective of +the project is not to branch the existing pseudo-standard definitions - in +fact, PMIx fully supports both of the existing PMI-1 and PMI-2 APIs - but +rather to (a) augment and extend those APIs to eliminate some current +restrictions that impact scalability, and (b) provide a reference +implementation of the PMI-server that demonstrates the desired level of +scalability. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package pmi +Summary: The %{name} implementation of libpmi and libpmi2 +Requires: %{name}%{?_isa} = %{version}-%{release} +Conflicts: slurm-pmi +%description pmi +The %{name}-pmi package contains the %{name} implementation of +the libpmi and libpmi2 backward-compatibility libraries. + +%package pmi-devel +Summary: Development files for %{name}-pmi +Requires: %{name}-pmi%{?_isa} = %{version}-%{release} +Conflicts: slurm-pmi-devel +%description pmi-devel +The %{name}-pmi-devel package contains the development files for +the libpmi and libpmi2 backward-compatibility libraries. + +%package tools +Summary: Tools for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +%description tools +The %{name}-tools package contains for use with PMIx-based RMs and language- +based starters (e.g., mpirun). + +* pinfo - show MCA params, build info, etc. +* pps - get list of active nspaces, retrieve status of jobs/nodes/procs +* pevent - inject an event into the system + +%prep +%setup -q -n %{name_version} + +# touch lexer sources to recompile them +find src -name \*.l -print -exec touch --no-create {} \; + +%build +%{_builddir}/%{name_version}/autogen.pl +%configure \ + --prefix=%{_prefix} \ + --sysconfdir=%{_sysconfdir}/%{name} \ + --disable-static \ + --disable-silent-rules \ + --enable-shared \ + --enable-pmi-backward-compatibility \ + --with-munge + +%make_build + +%check +%make_build check + +%install +%make_install + +# remove libtool archives +find %{buildroot} -name '*.la' | xargs rm -f + +%ldconfig_scriptlets +%ldconfig_scriptlets devel + +%files +%license LICENSE +%doc README +%dir %{_datadir}/%{name} +%dir %{_libdir}/%{name} +%dir %{_sysconfdir}/%{name} +%config(noreplace) %{_sysconfdir}/%{name}/*.conf +%{_datadir}/%{name}/*.txt +%{_libdir}/libmca_common_dstore.so.1* +%{_libdir}/libpmix.so.2* +%{_libdir}/%{name}/*.so + +%files devel +%{_datadir}/%{name}/*.supp +%{_includedir}/pmix*.h +%{_libdir}/libmca_common_dstore.so +%{_libdir}/libpmix.so + +%files pmi +%{_libdir}/libpmi.so.1* +%{_libdir}/libpmi2.so.1* + +%files pmi-devel +%{_includedir}/{pmi,pmi2}.h +%{_libdir}/libpmi.so +%{_libdir}/libpmi2.so + +%files tools +%{_bindir}/* + +%changelog +* Mon Feb 01 2021 Antonio J. Russo - 3.1.6 +- Initial version