Compare commits

..

No commits in common. "c8" and "c10s" have entirely different histories.
c8 ... c10s

12 changed files with 680 additions and 373 deletions

4
.gitignore vendored
View File

@ -1 +1,3 @@
SOURCES/pmix-2.2.5.tar.bz2
/pmix-*.tar.bz2
/pmix-*.src.rpm

5
.rpmlintrc Normal file
View File

@ -0,0 +1,5 @@
from Config import *
addFilter("W: no-documentation")
addFilter("W: no-manual-page-for-binary")
addFilter("W: shared-lib-calls-exit")
addFilter("W: spelling-error")

42
3245.patch Normal file
View File

@ -0,0 +1,42 @@
From 83dc94bf8da119057f543a12e4432aa48cd44e20 Mon Sep 17 00:00:00 2001
From: Ralph Castain <rhc@pmix.org>
Date: Tue, 19 Dec 2023 15:11:21 -0700
Subject: [PATCH] Cast a few parameters when translating macros to functions
When we made the transition from macros to functions, we
were forced to move things that went on the left side of
an `=` sign to being addresses of params to the function
call. Compilers are getting increasinly picky about matching
parameter types, so cast a few that might cause trouble.
Signed-off-by: Ralph Castain <rhc@pmix.org>
---
include/pmix_deprecated.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/pmix_deprecated.h b/include/pmix_deprecated.h
index 0530123309..6ec00ac310 100644
--- a/include/pmix_deprecated.h
+++ b/include/pmix_deprecated.h
@@ -520,10 +520,10 @@ PMIX_EXPORT pmix_info_t* PMIx_Info_list_get_info(void *ptr, void *prev, void **n
(r) = PMIx_Argv_count(a)
#define PMIX_ARGV_APPEND(r, a, b) \
- (r) = PMIx_Argv_append_nosize(&(a), (b))
+ (r) = PMIx_Argv_append_nosize((char***)&(a), (b))
#define PMIX_ARGV_PREPEND(r, a, b) \
- (r) = PMIx_Argv_prepend_nosize(&(a), b)
+ (r) = PMIx_Argv_prepend_nosize((char***)&(a), b)
#define PMIX_ARGV_APPEND_UNIQUE(r, a, b) \
(r) = PMIx_Argv_append_unique_nosize(a, b)
@@ -892,7 +892,7 @@ PMIX_EXPORT pmix_info_t* PMIx_Info_list_get_info(void *ptr, void *prev, void **n
PMIx_Data_buffer_load(b, d, s)
#define PMIX_DATA_BUFFER_UNLOAD(b, d, s) \
- PMIx_Data_buffer_unload(b, &(d), &(s))
+ PMIx_Data_buffer_unload(b, (char**)&(d), (size_t*)&(s))
#define PMIX_PROC_CREATE(m, n) \
(m) = PMIx_Proc_create(n)

View File

@ -1,119 +0,0 @@
From 085f1d8ec56b3fe81ef3a0994d156ddf83342f49 Mon Sep 17 00:00:00 2001
From: Ralph Castain <rhc@pmix.org>
Date: Thu, 7 Sep 2023 07:59:57 -0600
Subject: [PATCH] Do not follow links when doing "chown"
There is a potential issue with allowing a "chown" operation
to follow user-created links, so let's limit any use of that
function to "lchown" - which directs the "chown" operation to
NOT follow a link.
Signed-off-by: Ralph Castain <rhc@pmix.org>
(cherry picked from commit ae62cdf67b19e80fd821420816f09bf0a56a8166)
(cherry picked from commit da036933c2795c1f40d0835e15f17e204e4daf0f)
Signed-off-by: Kamal Heib <kheib@redhat.com>
---
src/mca/common/dstore/dstore_base.c | 4 ++--
src/mca/common/dstore/dstore_segment.c | 4 ++--
src/mca/gds/ds12/gds_ds12_lock_fcntl.c | 2 +-
src/mca/gds/ds12/gds_ds12_lock_pthread.c | 2 +-
src/mca/ptl/usock/ptl_usock_component.c | 6 +++---
5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/mca/common/dstore/dstore_base.c b/src/mca/common/dstore/dstore_base.c
index 5568c9434778..68eeabdbc4d7 100644
--- a/src/mca/common/dstore/dstore_base.c
+++ b/src/mca/common/dstore/dstore_base.c
@@ -525,7 +525,7 @@ static int _esh_session_init(pmix_common_dstore_ctx_t *ds_ctx, size_t idx, ns_ma
}
}
if (s->setjobuid > 0){
- if (0 > chown(s->nspace_path, (uid_t) s->jobuid, (gid_t) -1)){
+ if (0 > lchown(s->nspace_path, (uid_t) s->jobuid, (gid_t) -1)){
rc = PMIX_ERROR;
PMIX_ERROR_LOG(rc);
return rc;
@@ -1661,7 +1661,7 @@ pmix_common_dstore_ctx_t *pmix_common_dstor_init(const char *ds_name, pmix_info_
}
}
if (ds_ctx->setjobuid > 0) {
- if (chown(ds_ctx->base_path, (uid_t) ds_ctx->jobuid, (gid_t) -1) < 0){
+ if (lchown(ds_ctx->base_path, (uid_t) ds_ctx->jobuid, (gid_t) -1) < 0){
rc = PMIX_ERR_NO_PERMISSIONS;
PMIX_ERROR_LOG(rc);
goto err_exit;
diff --git a/src/mca/common/dstore/dstore_segment.c b/src/mca/common/dstore/dstore_segment.c
index a219bed9c0bf..4a7c55ea9c8f 100644
--- a/src/mca/common/dstore/dstore_segment.c
+++ b/src/mca/common/dstore/dstore_segment.c
@@ -109,7 +109,7 @@ PMIX_EXPORT pmix_dstore_seg_desc_t *pmix_common_dstor_create_new_lock_seg(const
if (setuid > 0){
rc = PMIX_ERR_PERM;
- if (0 > chown(file_name, (uid_t) uid, (gid_t) -1)){
+ if (0 > lchown(file_name, (uid_t) uid, (gid_t) -1)){
PMIX_ERROR_LOG(rc);
goto err_exit;
}
@@ -200,7 +200,7 @@ PMIX_EXPORT pmix_dstore_seg_desc_t *pmix_common_dstor_create_new_segment(pmix_ds
if (setuid > 0){
rc = PMIX_ERR_PERM;
- if (0 > chown(file_name, (uid_t) uid, (gid_t) -1)){
+ if (0 > lchown(file_name, (uid_t) uid, (gid_t) -1)){
PMIX_ERROR_LOG(rc);
goto err_exit;
}
diff --git a/src/mca/gds/ds12/gds_ds12_lock_fcntl.c b/src/mca/gds/ds12/gds_ds12_lock_fcntl.c
index 759bf4093747..515b3298136f 100644
--- a/src/mca/gds/ds12/gds_ds12_lock_fcntl.c
+++ b/src/mca/gds/ds12/gds_ds12_lock_fcntl.c
@@ -127,7 +127,7 @@ pmix_status_t pmix_gds_ds12_lock_init(pmix_common_dstor_lock_ctx_t *ctx, const c
}
}
if (0 != setuid) {
- if (0 > chown(lock_ctx->lockfile, uid, (gid_t) -1)) {
+ if (0 > lchown(lock_ctx->lockfile, uid, (gid_t) -1)) {
rc = PMIX_ERROR;
PMIX_ERROR_LOG(rc);
goto error;
diff --git a/src/mca/gds/ds12/gds_ds12_lock_pthread.c b/src/mca/gds/ds12/gds_ds12_lock_pthread.c
index 1c9e9b79bb3e..fe7e64be4194 100644
--- a/src/mca/gds/ds12/gds_ds12_lock_pthread.c
+++ b/src/mca/gds/ds12/gds_ds12_lock_pthread.c
@@ -113,7 +113,7 @@ pmix_status_t pmix_gds_ds12_lock_init(pmix_common_dstor_lock_ctx_t *ctx, const c
}
memset(lock_ctx->segment->seg_base_addr, 0, size);
if (0 != setuid) {
- if (0 > chown(lock_ctx->lockfile, (uid_t) uid, (gid_t) -1)){
+ if (0 > lchown(lock_ctx->lockfile, (uid_t) uid, (gid_t) -1)){
rc = PMIX_ERROR;
PMIX_ERROR_LOG(rc);
goto error;
diff --git a/src/mca/ptl/usock/ptl_usock_component.c b/src/mca/ptl/usock/ptl_usock_component.c
index f65d49ffde79..a6c1fdb496b3 100644
--- a/src/mca/ptl/usock/ptl_usock_component.c
+++ b/src/mca/ptl/usock/ptl_usock_component.c
@@ -276,16 +276,16 @@ static pmix_status_t setup_listener(pmix_info_t info[], size_t ninfo,
CLOSE_THE_SOCKET(lt->socket);
goto sockerror;
}
- /* chown as required */
+ /* lchown as required */
if (lt->owner_given) {
- if (0 != chown(address->sun_path, lt->owner, -1)) {
+ if (0 != lchown(address->sun_path, lt->owner, -1)) {
pmix_output(0, "CANNOT CHOWN socket %s: %s", address->sun_path, strerror (errno));
CLOSE_THE_SOCKET(lt->socket);
goto sockerror;
}
}
if (lt->group_given) {
- if (0 != chown(address->sun_path, -1, lt->group)) {
+ if (0 != lchown(address->sun_path, -1, lt->group)) {
pmix_output(0, "CANNOT CHOWN socket %s: %s", address->sun_path, strerror (errno));
CLOSE_THE_SOCKET(lt->socket);
goto sockerror;
--
2.41.0

View File

@ -1,253 +0,0 @@
Name: pmix
Version: 2.2.5
Release: 3%{?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
Patch1: 0001-Do-not-follow-links-when-doing-chown.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: environment(modules)
BuildRequires: flex
BuildRequires: gcc
BuildRequires: libevent-devel
BuildRequires: libtool
BuildRequires: perl-interpreter
BuildRequires: pkgconf
BuildRequires: pkgconfig(hwloc)
BuildRequires: pkgconfig(munge)
Provides: pmi
Requires: environment(modules)
%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}.
%prep
%setup -q -n %{name}-%{version}
%patch1 -p1
echo touching 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-pmix-binaries \
--with-tests-examples \
--enable-shared \
--enable-pmi-backward-compatibility \
--with-munge
%make_build V=1
%check
%{__make} check
%install
%make_install
# remove libtool archives
find %{buildroot} -name '*.la' | xargs rm -f
# move libpmi/libpmi2 for environment module usage
install -d -m 0755 %{buildroot}%{_libdir}/%{name}/lib
mv %{buildroot}%{_libdir}/libpmi.so* %{buildroot}%{_libdir}/%{name}/lib
mv %{buildroot}%{_libdir}/libpmi2.so* %{buildroot}%{_libdir}/%{name}/lib
# set up pmix self-test infra for install
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/test
for f in pmix_client pmix_regex
do
mv test/.libs/$f %{buildroot}%{_datadir}/%{name}/$f
done
mv test/.libs/pmix_test %{buildroot}%{_datadir}/%{name}/test/pmix_test
# install pmi/pmix environment module file
install -d -m 0755 %{buildroot}%{_modulesdir}/pmi
cat >%{buildroot}%{_modulesdir}/pmi/%{name}-%{_arch} <<EOF
#%%Module 1.0
#
# pmi/pmix module for use with 'environment-modules' package:
#
conflict pmi
prepend-path LD_LIBRARY_PATH %{_libdir}/%{name}/lib
prepend-path PKG_CONFIG_PATH %{_libdir}/%{name}/lib/pkgconfig
EOF
# install pkgconfig file pmix.pc
install -d -m 0755 %{buildroot}%{_libdir}/pkgconfig
cat >%{buildroot}%{_libdir}/pkgconfig/%{name}.pc <<EOF
includedir=%{_includedir}
libdir=%{_libdir}
Name: %{name}
Version: %{version}
Description: PMI Exascale (PMIx) library
Cflags: -I\${includedir}
Libs: -L\${libdir} -lpmix
EOF
# install pkgconfig file pmi.pc for environment module usage
install -d -m 0755 %{buildroot}%{_libdir}/%{name}/lib/pkgconfig
cat >%{buildroot}%{_libdir}/%{name}/lib/pkgconfig/pmi.pc <<EOF
includedir=%{_includedir}
libdir=%{_libdir}/%{name}/lib
Name: pmi
Version: %{version}
Description: (PMIx) PMI compatibility library
Cflags: -I\${includedir}
Libs: -L\${libdir} -lpmi
EOF
# install pkgconfig file pmi2.pc for environment module usage
install -d -m 0755 %{buildroot}%{_libdir}/%{name}/lib/pkgconfig
cat >%{buildroot}%{_libdir}/%{name}/lib/pkgconfig/pmi2.pc <<EOF
includedir=%{_includedir}
libdir=%{_libdir}/%{name}/lib
Name: pmi2
Version: %{version}
Description: (PMIx) PMI2 compatibility library
Cflags: -I\${includedir}
Libs: -L\${libdir} -lpmi2
EOF
%ldconfig_scriptlets
%ldconfig_scriptlets devel
%files
%license LICENSE
%doc README
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/test
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/lib
%dir %{_modulesdir}/pmi
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/*.conf
%{_datadir}/%{name}/*.txt
%{_datadir}/%{name}/pmix_*
%{_datadir}/%{name}/test/pmix_test
%{_libdir}/libpmix.so.*
%{_libdir}/libmca_common_dstore.so.*
%{_libdir}/%{name}/*.so
%{_libdir}/%{name}/lib/*.so.*
%{_modulesdir}/pmi/*
%files devel
%{_datadir}/%{name}/*.supp
%{_includedir}/*.h
%{_libdir}/libpmix.so
%{_libdir}/libmca_common_dstore.so
%{_libdir}/%{name}/lib/*.so
%{_libdir}/%{name}/lib/pkgconfig/*.pc
%{_libdir}/pkgconfig/*.pc
%changelog
* Tue Nov 14 2023 Kamal Heib <kheib@redhat.com> - 2.2.5-3
- Add gating test
- Resolves: RHEL-3692
* Thu Nov 02 2023 Kamal Heib <kheib@redhat.com> - 2.2.5-2
- Fix CVE-2023-41915
- Resolves: RHEL-3692
* Mon Oct 11 2021 Honggang Li <honli@redhat.com> - 2.2.5-1
- Update to 2.2.5
- Related: rhbz#2008513
* Wed Jun 03 2020 Honggang Li <honli@redhat.com> - 2.2.4rc1-1
- Update to 2.2.4rc1
- Related: rhbz#1840596
* Mon Apr 20 2020 Honggang Li <honli@redhat.com> - 2.2.3-1
- Update to 2.2.3
- Add pmix-devel into CRB repository
- Related: rhbz#1816198, rhbz#1822520
* Wed Mar 20 2019 Jarod Wilson <jarod@redhat.com> - 2.1.1-2
- Add the --with-tests-examples flag to be able to better verify functionality
- Related: rhbz#1682374
* Fri Mar 16 2018 Philip Kovacs <pkdevel@yahoo.com> - 2.1.1-1
- Update to 2.1.1
* Sun Feb 18 2018 Philip Kovacs <pkdevel@yahoo.com> - 2.1.0-3
- Add patch to remove unneeded check for C++
* Thu Feb 15 2018 Philip Kovacs <pkdevel@yahoo.com> - 2.1.0-2
- Rebuild for libevent soname bump
* Sat Feb 10 2018 Philip Kovacs <pkdevel@yahoo.com> - 2.1.0-1
- Update to 2.1.0
- Added enviromnent module for pmi/pmix
- Added pkgconfig files for pmix/pmi/pmi2
- Ensure lexer sources are rebuilt
- Removed obsolete sasl support
- Use new ldconfig_scriplets macro
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Tue Mar 21 2017 Orion Poplawski <orion@cora.nwra.com> - 1.2.2-1
- Update to 1.2.2
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Sep 7 2016 Orion Poplawski <orion@cora.nwra.com> - 1.1.5-1
- Update to 1.1.5
* Fri Jun 10 2016 Orion Poplawski <orion@cora.nwra.com> - 1.1.4-1
- Update to 1.1.4
* Tue Mar 8 2016 Orion Poplawski <orion@cora.nwra.com> - 1.1.3-1
- Update to 1.1.3
* Mon Nov 16 2015 Orion Poplawski <orion@cora.nwra.com> - 1.1.1-1
- Update to 1.1.1
* Sat Nov 14 2015 Orion Poplawski <orion@cora.nwra.com> - 1.1.0-1
- Update to 1.1.0
* Tue Sep 1 2015 Orion Poplawski <orion@cora.nwra.com> - 1.0.0-1
- Initial version

242
construct_event_strings.py Normal file
View File

@ -0,0 +1,242 @@
#
# Copyright (c) 2020 Intel, Inc. All rights reserved.
# Copyright (c) 2020-2022 Cisco Systems, Inc. All rights reserved
# Copyright (c) 2021-2023 Nanook Consulting. All rights reserved.
# Copyright (c) 2022 Triad National Security, LLC. All rights reserved.
# $COPYRIGHT$
#
# Construct a dictionary for translating attributes to/from
# their defined name and their string representation - used
# by tools to interpret user input
#
from __future__ import print_function
import os
import os.path
import sys
from optparse import OptionParser, OptionGroup
index = 0
def harvest_constants(options, path, constants):
global index
# open the file
try:
inputfile = open(path, "r")
except Exception as e:
print("File {path} could not be opened: {e}"
.format(path=path, e=e))
return 1
# read the file - these files aren't too large
# so ingest the whole thing at one gulp
try:
lines = inputfile.readlines()
except Exception as e:
print("Error reading file {path}: {e}"
.format(path=path, e=e))
inputfile.close()
return 1
inputfile.close() # we read everything, so done with the file
firstline = True
# find the start of the event codes
n = 0
found = False
while n < len(lines):
if "PMIX ERROR CONSTANTS" in lines[n]:
found = True
n = n + 1
break;
n = n + 1
# error out if not found
if not found:
print("START OF EVENT CODES NOT FOUND")
return 1
# loop over the lines
while n < len(lines):
line = lines[n]
# remove white space at front and back
myline = line.strip()
# remove comment lines
if "/*" in myline or "*/" in myline or myline.startswith("*"):
n = n + 1
continue
# if we have found the end of the event codes, we are done
if "PMIX_EXTERNAL_ERR_BASE" in myline or "PMIX_ERR_SYS_BASE" in myline or "PMIX_INTERNAL_ERR_DONE" in myline:
return 0
# skip a well-known macro
if "PMIX_SYSTEM_EVENT" in myline:
n = n + 2
continue
# if the line starts with #define, then we want it
if not myline.startswith("#define"):
n = n + 1
continue
value = myline[8:]
tokens = value.split()
if not firstline:
constants.write(",\n\n")
firstline = False
constants.write(" {.index = " + str(index) + ", .name = \"" + tokens[0] + "\", .code = " + str(tokens[1]) + "}")
index = index + 1
n = n + 1
return 0
def _write_header(options, base_path, num_elements):
contents = '''/*
* This file is autogenerated by construct_event_strings.py.
* Do not edit this file by hand.
*/
#include "src/include/pmix_config.h"
#include "src/include/pmix_globals.h"
#include "include/pmix_common.h"
#ifndef PMIX_EVENT_STRINGS_H
#define PMIX_EVENT_STRINGS_H
BEGIN_C_DECLS
PMIX_EXPORT extern const pmix_event_string_t pmix_event_strings[{ne}];
#define PMIX_EVENT_INDEX_BOUNDARY {nem1}
END_C_DECLS
#endif\n
'''.format(ne=num_elements, nem1=num_elements - 1)
if options.dryrun:
constants = sys.stdout
outpath = None
else:
outpath = os.path.join(base_path, "pmix_event_strings.h")
try:
constants = open(outpath, "w+")
except Exception as e:
print("{outpath} CANNOT BE OPENED - EVENT STRINGS COULD NOT BE CONSTRUCTED: {e}"
.format(outpath=outpath, e=e))
return 1
constants.write(contents)
constants.close()
return 0
def main():
parser = OptionParser("usage: %prog [options]")
debugGroup = OptionGroup(parser, "Debug Options")
debugGroup.add_option("--dryrun",
action="store_true", dest="dryrun", default=False,
help="Show output to screen")
parser.add_option_group(debugGroup)
(options, args) = parser.parse_args()
# Find the top-level PMIx source tree dir.
# Start with the location of this script, which we know is in
# $top_srcdir/contrib.
top_src_dir = os.path.dirname(sys.argv[0])
top_src_dir = os.path.join(top_src_dir, "..")
top_src_dir = os.path.abspath(top_src_dir)
# Sanity check
checkfile = os.path.join(top_src_dir, "VERSION")
if not os.path.exists(checkfile):
print("ERROR: Could not find top source directory for Open PMIx")
return 1
source_include_dir = os.path.join(top_src_dir, "include")
util_include_dir = os.path.join(top_src_dir, "src", "util")
# This script is invoked from src/include/Makefile.am, and
# therefore the cwd will be $(builddir)/src/include. Verify this
# by checking for a file that we know should be in there.
build_src_include_dir = os.getcwd()
checkfile = os.path.join(build_src_include_dir, "pmix_config.h")
if not os.path.exists(checkfile):
print("ERROR: Could not find build directory for Open PMIx")
return 1
if options.dryrun:
constants = sys.stdout
outpath = None
else:
outpath = os.path.join(build_src_include_dir, "pmix_event_strings.c")
try:
constants = open(outpath, "w+")
except Exception as e:
print("{outpath} CANNOT BE OPENED - EVENT STRINGS COULD NOT BE CONSTRUCTED: {e}"
.format(outpath=outpath, e=e))
return 1
# write the source file
constants.write("""/*
* This file is autogenerated by construct_event_strings.py.
* Do not edit this file by hand.
*/
#include "src/include/pmix_event_strings.h"
const pmix_event_string_t pmix_event_strings[] = {
""")
# scan across the header files in the src directory
# looking for events
# pmix_common.h.in is in the src tree
rc = harvest_constants(options,
os.path.join(source_include_dir, "pmix_common.h.in"),
constants)
if 0 != rc:
constants.close()
if outpath:
os.remove(outpath)
print("HARVEST PMIX_COMMON FAILED - EVENT STRINGS COULD NOT BE CONSTRUCTED")
return 1
constants.write(",\n\n")
# pmix_deprecated.h is in the source tree
rc = harvest_constants(options,
os.path.join(source_include_dir, "pmix_deprecated.h"),
constants)
if 0 != rc:
constants.close()
if outpath:
os.remove(outpath)
print("HARVEST PMIX_DEPRECATED FAILED - EVENT STRINGS COULD NOT BE CONSTRUCTED")
return 1
constants.write(",\n\n")
# pmix_error.h is in the source tree
rc = harvest_constants(options,
os.path.join(util_include_dir, "pmix_error.h"),
constants)
if 0 != rc:
constants.close()
if outpath:
os.remove(outpath)
print("HARVEST PMIX_ERROR FAILED - EVENT STRINGS COULD NOT BE CONSTRUCTED")
return 1
# mark the end of the array
constants.write(""",\n
{.index = UINT32_MAX, .name = "", .code = -1}
};
""")
constants.write("\n")
constants.close()
# write the header
return _write_header(options, build_src_include_dir, index + 1)
if __name__ == '__main__':
exit(main())

11
gating.yaml Normal file
View File

@ -0,0 +1,11 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

328
pmix.spec Normal file
View File

@ -0,0 +1,328 @@
Name: pmix
Version: 4.2.8
Release: 3%{?dist}
Summary: Process Management Interface Exascale (PMIx)
License: BSD-3-Clause
URL: https://pmix.org/
Source0: https://github.com/openpmix/openpmix/releases/download/v%{version}/%{name}-%{version}.tar.bz2
# file missing from release
Source1: construct_event_strings.py
Patch1: https://github.com/openpmix/openpmix/pull/3245.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: flex
BuildRequires: gcc
BuildRequires: hwloc-devel
BuildRequires: libevent-devel
BuildRequires: libtool
BuildRequires: make
BuildRequires: munge-devel
BuildRequires: perl-interpreter
BuildRequires: zlib-devel
ExcludeArch: %{ix86}
%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}
Requires: %{name}-tools%{?_isa} = %{version}-%{release}
%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%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
%autosetup -p1
cp %{S:1} contrib/
# touch lexer sources to recompile them
find src -name \*.l -print -exec touch --no-create {} \;
%build
export CFLAGS="%{build_cflags} -Wno-unused-function -Wno-attributes"
%configure \
--prefix=%{_prefix} \
--sysconfdir=%{_sysconfdir}/%{name} \
--disable-static \
--disable-silent-rules \
--enable-wrapper-rpath=no \
--enable-wrapper-runpath=no \
--enable-ipv6 \
--enable-shared \
--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.md
%dir %{_datadir}/%{name}
%dir %{_libdir}/%{name}
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/*.conf
%{_datadir}/%{name}/*.txt
%{_libdir}/libpmix.so.2*
%{_libdir}/%{name}/*.so
%{_mandir}/man1/*.1*
%{_mandir}/man5/*.5*
%files devel
%{_datadir}/%{name}/*.supp
%{_includedir}/pmix*.h
%{_includedir}/pmix/
%{_libdir}/libpmix.so
%{_libdir}/pkgconfig/*.pc
%{_docdir}/%{name}/
%{_mandir}/man3/*.3*
%files tools
%{_bindir}/*
%changelog
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 4.2.8-3
- Bump release for June 2024 mass rebuild
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Sérgio Basto <sergio@serjux.com> - 4.2.8-1
- Update pmix to 4.2.8
- Exclude ix86, configure: abort in 32-bit environments
https://github.com/openpmix/openpmix/pull/2892
and Open MPI v5.0.x does not support 32 bit
https://github.com/open-mpi/ompi/issues/11248
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
- Fix GCC-14 new errors (https://github.com/openpmix/openpmix/pull/3245)
* Fri Oct 27 2023 Orion Poplawski <orion@nwra.com> - 4.2.7-1
- Update to 4.2.7
- Enable IPv6 support
- Disable wrapper rpath
* Thu Sep 14 2023 Michel Lind <salimma@fedoraproject.org> - 4.1.3-1
- Fix CVE-2023-41915
- Update upstream source URL; pmix/pmix redirects to openpmix/openpmix
- Use SPDX license identifier
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sun May 15 2022 Philip Kovacs <pkfed@fedoraproject.org> - 4.1.2-2
- Add pmix-tools dependency to pmix-devel (e.g. for pmixcc)
* Sat Feb 12 2022 Philip Kovacs <pkfed@fedoraproject.org> - 4.1.2-1
- Update to 4.1.2
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.1-0.2.rc6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jan 14 2022 Philip Kovacs <pkfed@fedoraproject.org> - 4.1.1-0.1.rc6
- Update to 4.1.1rc6
* Sun Nov 7 2021 Philip Kovacs <pkfed@fedoraproject.org> - 4.1.1-0.1.rc5
- Update to 4.1.1rc5
* Tue Oct 12 2021 Philip Kovacs <pkfed@fedoraproject.org> - 4.1.1-0.1.rc4
- Update to 4.1.1rc4
* Mon Oct 11 2021 Philip Kovacs <pkfed@fedoraproject.org> - 4.1.0-2
- Add zlib support
* Fri Oct 08 2021 Philip Kovacs <pkfed@fedoraproject.org> - 4.1.0-1
- Update to 4.1.0
- Remove pmix v1/2 backward compatibility subpackages
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Feb 16 2021 Philip Kovacs <pkfed@fedoraproject.org> - 3.2.3-1
* Update to 3.2.3
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.2.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Dec 9 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.2.2-1
* Update to 3.2.2
* Fri Nov 13 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.2.1-1
* Update to 3.2.1
* Fri Oct 30 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.2.1.0.1.rc1
* Update to 3.2.1rc1
* Tue Sep 15 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.6.0.2.rc1
* Bump for libevent changes
* Mon Aug 10 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.6.0.1.rc1
* Update to 3.1.6rc1
* Fri Aug 7 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.5-6
- Give post-build checks more time to complete
* Thu Aug 6 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.5-5
- Restore armv7hl without post-build checks
* Tue Aug 4 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.5-4
- Exclude armv7hl
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.5-3
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Feb 24 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.5-1
- Update to 3.1.5
* Thu Feb 20 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.5-0.4.rc4
- Update to 3.1.5rc4
* Wed Feb 12 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.5-0.3.rc3
- Update to 3.1.5rc3
* Mon Feb 10 2020 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.5-0.2.rc2
- Update to 3.1.5rc2
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Sun Aug 25 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.1.4-2
- Rebuilt for hwloc-2.0
* Fri Aug 9 2019 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.4-1
- Update to 3.1.4
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.4-0.4.rc2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Jul 21 2019 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.4-0.3.rc2
- Create pmix-pmi and pmix-pmi-devel subpackages for pmi/pmi2 libs
- Remove rpm-generated pkgconfig files until upstream provides them
- Do not pull dependencies with pkgconfig unless package uses it
* Sat Jul 20 2019 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.4-0.2.rc2
- Update to 3.1.4rc2
* Fri Jul 19 2019 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.4-0.1.rc1
- Update to 3.1.4rc1
* Sat Jul 13 2019 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.3-1
- Update to 3.1.3
* Tue Jul 2 2019 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.2-2
- Install libpmi/pmi2 backward-compatible libraries normally,
- not as a pmi environment module
* Wed Jun 19 2019 Philip Kovacs <pkfed@fedoraproject.org> - 3.1.2-1
- Update to 3.1.2
- Replace __make with make
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sun Nov 25 2018 Orion Poplawski <orion@nwra.com> - 3.0.2-1
- Update to 3.0.2
* Mon Oct 1 2018 Philip Kovacs <pkfed@fedoraproject.org> - 2.1.4-1
- Update to 2.1.4
* Fri Mar 16 2018 Philip Kovacs <pkfed@fedoraproject.org> - 2.1.1-1
- Update to 2.1.1
* Sun Feb 18 2018 Philip Kovacs <pkfed@fedoraproject.org> - 2.1.0-3
- Add patch to remove unneeded check for C++
* Thu Feb 15 2018 Philip Kovacs <pkfed@fedoraproject.org> - 2.1.0-2
- Rebuild for libevent soname bump
* Sat Feb 10 2018 Philip Kovacs <pkfed@fedoraproject.org> - 2.1.0-1
- Update to 2.1.0
- Added enviromnent module for pmi/pmix
- Added pkgconfig files for pmix/pmi/pmi2
- Ensure lexer sources are rebuilt
- Removed obsolete sasl support
- Use new ldconfig_scriplets macro
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Tue Mar 21 2017 Orion Poplawski <orion@cora.nwra.com> - 1.2.2-1
- Update to 1.2.2
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Sep 7 2016 Orion Poplawski <orion@cora.nwra.com> - 1.1.5-1
- Update to 1.1.5
* Fri Jun 10 2016 Orion Poplawski <orion@cora.nwra.com> - 1.1.4-1
- Update to 1.1.4
* Tue Mar 8 2016 Orion Poplawski <orion@cora.nwra.com> - 1.1.3-1
- Update to 1.1.3
* Mon Nov 16 2015 Orion Poplawski <orion@cora.nwra.com> - 1.1.1-1
- Update to 1.1.1
* Sat Nov 14 2015 Orion Poplawski <orion@cora.nwra.com> - 1.1.0-1
- Update to 1.1.0
* Tue Sep 1 2015 Orion Poplawski <orion@cora.nwra.com> - 1.0.0-1
- Initial version

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (pmix-4.2.8.tar.bz2) = 2bc78cda82af24a9d7db204684e1778e0db183acc425095a91d46e4253209cec06542d497d5502c502b946b0ed1517f3b34f532d1107ccac1a09f2f267f14089

10
tests/run_tests.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
# when running this in 1minutetip the PATH must be specified to execute
# in the local directory.
echo "Setting path to local directory"
PATH=$PATH:$(pwd)
# simple sanity test
sanity.sh
exit $?

27
tests/sanity.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
#
# This is a simple sanity test to satisfy the RHEL8.1 onboard gating
# requirement.
ret=0
test="/usr/share/pmix/test/pmix_test"
$test -h
let ret=$ret+$?
$test --test-publish
let ret=$ret+$?
$test --test-connect
let ret=$ret+$?
$test --test-resolve-peers
let ret=$ret+$?
$test --test-error
let ret=$ret+$?
$test --test-internal 10
let ret=$ret+$?
exit $ret

11
tests/tests.yml Normal file
View File

@ -0,0 +1,11 @@
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
tests:
- simple:
dir: . # switch to subfolder. This parameter is REQUIRED, use `dir: .` for current folder
run: ./run_tests.sh # this is your test command, its exit code is the outcome of the test
required_packages:
- pmix