commit 0731d2da9b75d484343b8f89ddcd33cd8408f490 Author: MSVSphere Packaging Team Date: Fri Oct 25 18:27:47 2024 +0300 import pmix-4.2.8-3.el10 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..633df66 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/pmix-4.2.8.tar.bz2 diff --git a/.pmix.metadata b/.pmix.metadata new file mode 100644 index 0000000..d017ce5 --- /dev/null +++ b/.pmix.metadata @@ -0,0 +1 @@ +7935694addcc28a05707dd1298a57e04ec8890af SOURCES/pmix-4.2.8.tar.bz2 diff --git a/SOURCES/3245.patch b/SOURCES/3245.patch new file mode 100644 index 0000000..2ffe6c6 --- /dev/null +++ b/SOURCES/3245.patch @@ -0,0 +1,42 @@ +From 83dc94bf8da119057f543a12e4432aa48cd44e20 Mon Sep 17 00:00:00 2001 +From: Ralph Castain +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 +--- + 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) diff --git a/SOURCES/construct_event_strings.py b/SOURCES/construct_event_strings.py new file mode 100644 index 0000000..52f242f --- /dev/null +++ b/SOURCES/construct_event_strings.py @@ -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()) diff --git a/SPECS/pmix.spec b/SPECS/pmix.spec new file mode 100644 index 0000000..47591ba --- /dev/null +++ b/SPECS/pmix.spec @@ -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 - 4.2.8-3 +- Bump release for June 2024 mass rebuild + +* Thu Jan 25 2024 Fedora Release Engineering - 4.2.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Sérgio Basto - 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 - 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 - 4.2.7-1 +- Update to 4.2.7 +- Enable IPv6 support +- Disable wrapper rpath + +* Thu Sep 14 2023 Michel Lind - 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 - 4.1.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Fri Jan 20 2023 Fedora Release Engineering - 4.1.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jul 22 2022 Fedora Release Engineering - 4.1.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun May 15 2022 Philip Kovacs - 4.1.2-2 +- Add pmix-tools dependency to pmix-devel (e.g. for pmixcc) + +* Sat Feb 12 2022 Philip Kovacs - 4.1.2-1 +- Update to 4.1.2 + +* Fri Jan 21 2022 Fedora Release Engineering - 4.1.1-0.2.rc6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jan 14 2022 Philip Kovacs - 4.1.1-0.1.rc6 +- Update to 4.1.1rc6 + +* Sun Nov 7 2021 Philip Kovacs - 4.1.1-0.1.rc5 +- Update to 4.1.1rc5 + +* Tue Oct 12 2021 Philip Kovacs - 4.1.1-0.1.rc4 +- Update to 4.1.1rc4 + +* Mon Oct 11 2021 Philip Kovacs - 4.1.0-2 +- Add zlib support + +* Fri Oct 08 2021 Philip Kovacs - 4.1.0-1 +- Update to 4.1.0 +- Remove pmix v1/2 backward compatibility subpackages + +* Fri Jul 23 2021 Fedora Release Engineering - 3.2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Feb 16 2021 Philip Kovacs - 3.2.3-1 +* Update to 3.2.3 + +* Wed Jan 27 2021 Fedora Release Engineering - 3.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Dec 9 2020 Philip Kovacs - 3.2.2-1 +* Update to 3.2.2 + +* Fri Nov 13 2020 Philip Kovacs - 3.2.1-1 +* Update to 3.2.1 + +* Fri Oct 30 2020 Philip Kovacs - 3.2.1.0.1.rc1 +* Update to 3.2.1rc1 + +* Tue Sep 15 2020 Philip Kovacs - 3.1.6.0.2.rc1 +* Bump for libevent changes + +* Mon Aug 10 2020 Philip Kovacs - 3.1.6.0.1.rc1 +* Update to 3.1.6rc1 + +* Fri Aug 7 2020 Philip Kovacs - 3.1.5-6 +- Give post-build checks more time to complete + +* Thu Aug 6 2020 Philip Kovacs - 3.1.5-5 +- Restore armv7hl without post-build checks + +* Tue Aug 4 2020 Philip Kovacs - 3.1.5-4 +- Exclude armv7hl + +* Sat Aug 01 2020 Fedora Release Engineering - 3.1.5-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 3.1.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Feb 24 2020 Philip Kovacs - 3.1.5-1 +- Update to 3.1.5 + +* Thu Feb 20 2020 Philip Kovacs - 3.1.5-0.4.rc4 +- Update to 3.1.5rc4 + +* Wed Feb 12 2020 Philip Kovacs - 3.1.5-0.3.rc3 +- Update to 3.1.5rc3 + +* Mon Feb 10 2020 Philip Kovacs - 3.1.5-0.2.rc2 +- Update to 3.1.5rc2 + +* Thu Jan 30 2020 Fedora Release Engineering - 3.1.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Sun Aug 25 2019 Zbigniew Jędrzejewski-Szmek - 3.1.4-2 +- Rebuilt for hwloc-2.0 + +* Fri Aug 9 2019 Philip Kovacs - 3.1.4-1 +- Update to 3.1.4 + +* Fri Jul 26 2019 Fedora Release Engineering - 3.1.4-0.4.rc2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Jul 21 2019 Philip Kovacs - 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 - 3.1.4-0.2.rc2 +- Update to 3.1.4rc2 + +* Fri Jul 19 2019 Philip Kovacs - 3.1.4-0.1.rc1 +- Update to 3.1.4rc1 + +* Sat Jul 13 2019 Philip Kovacs - 3.1.3-1 +- Update to 3.1.3 + +* Tue Jul 2 2019 Philip Kovacs - 3.1.2-2 +- Install libpmi/pmi2 backward-compatible libraries normally, +- not as a pmi environment module + +* Wed Jun 19 2019 Philip Kovacs - 3.1.2-1 +- Update to 3.1.2 +- Replace __make with make + +* Sat Feb 02 2019 Fedora Release Engineering - 3.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sun Nov 25 2018 Orion Poplawski - 3.0.2-1 +- Update to 3.0.2 + +* Mon Oct 1 2018 Philip Kovacs - 2.1.4-1 +- Update to 2.1.4 + +* Fri Mar 16 2018 Philip Kovacs - 2.1.1-1 +- Update to 2.1.1 + +* Sun Feb 18 2018 Philip Kovacs - 2.1.0-3 +- Add patch to remove unneeded check for C++ + +* Thu Feb 15 2018 Philip Kovacs - 2.1.0-2 +- Rebuild for libevent soname bump + +* Sat Feb 10 2018 Philip Kovacs - 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 - 1.2.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 1.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Mar 21 2017 Orion Poplawski - 1.2.2-1 +- Update to 1.2.2 + +* Sat Feb 11 2017 Fedora Release Engineering - 1.1.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Sep 7 2016 Orion Poplawski - 1.1.5-1 +- Update to 1.1.5 + +* Fri Jun 10 2016 Orion Poplawski - 1.1.4-1 +- Update to 1.1.4 + +* Tue Mar 8 2016 Orion Poplawski - 1.1.3-1 +- Update to 1.1.3 + +* Mon Nov 16 2015 Orion Poplawski - 1.1.1-1 +- Update to 1.1.1 + +* Sat Nov 14 2015 Orion Poplawski - 1.1.0-1 +- Update to 1.1.0 + +* Tue Sep 1 2015 Orion Poplawski - 1.0.0-1 +- Initial version