diff --git a/ci/codespell.ignores b/ci/codespell.ignores index af408d0c38a..17eac4f07aa 100644 --- a/ci/codespell.ignores +++ b/ci/codespell.ignores @@ -39,3 +39,4 @@ falloc rin assertIn checkin +SHS diff --git a/deps/patches/mercury/0004-CMake-add-MERCURY_LIB_DEBUG_NAME_IS_RELEASE-option.patch b/deps/patches/mercury/0004-CMake-add-MERCURY_LIB_DEBUG_NAME_IS_RELEASE-option.patch new file mode 100644 index 00000000000..015a99a68e0 --- /dev/null +++ b/deps/patches/mercury/0004-CMake-add-MERCURY_LIB_DEBUG_NAME_IS_RELEASE-option.patch @@ -0,0 +1,57 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c5161c1..e4e7971 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -170,6 +170,12 @@ else() + set(MERCURY_LIBTYPE STATIC) + endif() + ++#------------------------------------------------------------------------------ ++# Set debug lib name as release. ++#------------------------------------------------------------------------------ ++option(MERCURY_LIB_DEBUG_NAME_IS_RELEASE "Set debug library name as release." OFF) ++mark_as_advanced(MERCURY_LIB_DEBUG_NAME_IS_RELEASE) ++ + #------------------------------------------------------------------------------ + # Enable debug output. + #------------------------------------------------------------------------------ +@@ -237,16 +243,29 @@ function(mercury_set_lib_options libtarget libname libtype var_prefix) + endif() + endif() + +- set_target_properties(${libtarget} +- PROPERTIES +- OUTPUT_NAME_DEBUG ${LIB_DEBUG_NAME} +- OUTPUT_NAME_RELEASE ${LIB_RELEASE_NAME} +- OUTPUT_NAME_MINSIZEREL ${LIB_RELEASE_NAME} +- OUTPUT_NAME_RELWITHDEBINFO ${LIB_RELEASE_NAME} +- OUTPUT_NAME_ASAN ${LIB_DEBUG_NAME} +- OUTPUT_NAME_TSAN ${LIB_DEBUG_NAME} +- OUTPUT_NAME_UBSAN ${LIB_DEBUG_NAME} +- ) ++ if(NOT MERCURY_LIB_DEBUG_NAME_IS_RELEASE) ++ set_target_properties(${libtarget} ++ PROPERTIES ++ OUTPUT_NAME_DEBUG ${LIB_DEBUG_NAME} ++ OUTPUT_NAME_RELEASE ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_MINSIZEREL ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_RELWITHDEBINFO ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_ASAN ${LIB_DEBUG_NAME} ++ OUTPUT_NAME_TSAN ${LIB_DEBUG_NAME} ++ OUTPUT_NAME_UBSAN ${LIB_DEBUG_NAME} ++ ) ++ else() ++ set_target_properties(${libtarget} ++ PROPERTIES ++ OUTPUT_NAME_DEBUG ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_RELEASE ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_MINSIZEREL ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_RELWITHDEBINFO ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_ASAN ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_TSAN ${LIB_RELEASE_NAME} ++ OUTPUT_NAME_UBSAN ${LIB_RELEASE_NAME} ++ ) ++ endif() + if(${libtype} MATCHES "SHARED") + set_target_properties(${libtarget} + PROPERTIES diff --git a/docs/dev/development.md b/docs/dev/development.md index db0bcc0dbf7..77e0f700424 100644 --- a/docs/dev/development.md +++ b/docs/dev/development.md @@ -138,11 +138,12 @@ such as maximum function stack size, may lead to unexpected behavior in the inst binaries. #### Customizing ASan Behavior + ASan behavior can be configured using the `ASAN_OPTIONS` environment variable. For example, you can add the following entry to the `env_vars` section of the `daos_server.yml` configuration file: ```yaml engines: -- .. +- ... env_vars: ... - ASAN_OPTIONS=atexit=1:print_stats=1:log_path=/tmp/daos_engine0.asan:disable_coredump=1:handle_segv=2:handle_abort=2:handle_sigfpe=2:handle_sigill=2:handle_sigbus=2:use_sigaltstack=1 diff --git a/site_scons/components/__init__.py b/site_scons/components/__init__.py index 18adfca2f1f..cb28c2c21fd 100644 --- a/site_scons/components/__init__.py +++ b/site_scons/components/__init__.py @@ -187,7 +187,6 @@ def define_mercury(reqs): mercury_build = ['cmake', '-DBUILD_SHARED_LIBS:BOOL=ON', - '-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo', '-DCMAKE_CXX_FLAGS:STRING="-std=c++11"', '-DCMAKE_INSTALL_PREFIX:PATH=$MERCURY_PREFIX', '-DMERCURY_INSTALL_LIB_DIR:PATH=$MERCURY_PREFIX/lib64', @@ -208,6 +207,21 @@ def define_mercury(reqs): '-DNA_USE_UCX:BOOL=ON', '../mercury'] + build_type = "RelWithDebInfo" + try: + sanitizers = reqs.get_env('SANITIZERS').split(',') + if 'address' in sanitizers: + build_type = "Asan" + elif 'thread' in sanitizers: + build_type = "Tsan" + elif 'undefined' in sanitizers: + build_type = "Ubsan" + except KeyError: + pass + mercury_build.append(f'-DCMAKE_BUILD_TYPE:STRING={build_type}') + if build_type != "RelWithDebInfo": + mercury_build.append('-DMERCURY_LIB_DEBUG_NAME_IS_RELEASE:BOOL=ON') + if reqs.target_type == 'debug': mercury_build.append('-DMERCURY_ENABLE_DEBUG:BOOL=ON') else: diff --git a/site_scons/prereq_tools/base.py b/site_scons/prereq_tools/base.py index 207bdbc0f8b..6346e010f71 100644 --- a/site_scons/prereq_tools/base.py +++ b/site_scons/prereq_tools/base.py @@ -516,7 +516,7 @@ def __init__(self, env, opts): ['gcc', 'covc', 'clang', 'icc'], ignorecase=2)) opts.Add(EnumVariable('WARNING_LEVEL', "Set default warning level", 'error', ['warning', 'warn', 'error'], ignorecase=2)) - opts.Add(('SANITIZERS', 'Instrument C code with google sanitizers', None)) + opts.Add(('SANITIZERS', 'Instrument C code with Google Sanitizers', None)) opts.Update(self.__env) diff --git a/utils/build.config b/utils/build.config index d565444cf64..fd895099a03 100644 --- a/utils/build.config +++ b/utils/build.config @@ -27,5 +27,5 @@ ucx=https://github.com/openucx/ucx.git [patch_versions] spdk=0001_b0aba3fcd5aceceea530a702922153bc75664978.diff,0002_445a4c808badbad3942696ecf16fa60e8129a747.diff -mercury=0001_na_ucx.patch,0002_na_ucx_ep_flush.patch,0003_combined_plugin_path.patch +mercury=0001_na_ucx.patch,0002_na_ucx_ep_flush.patch,0003_combined_plugin_path.patch,0004-CMake-add-MERCURY_LIB_DEBUG_NAME_IS_RELEASE-option.patch argobots=0001_411e5b344642ebc82190fd8b125db512e5b449d1.diff,0002_bb0c908abfac4bfe37852eee621930634183c6aa.diff diff --git a/utils/rpms/daos.spec b/utils/rpms/daos.spec index 0098ec2a96c..78996abecf0 100644 --- a/utils/rpms/daos.spec +++ b/utils/rpms/daos.spec @@ -662,7 +662,7 @@ fi * Thu Oct 16 2025 Jeff Olivier 2.7.101-16 - Make daos-spdk conflict with spdk -* Thu Sep 12 2025 Jeff Olivier 2.7.101-15 +* Fri Sep 12 2025 Jeff Olivier 2.7.101-15 - Fix leap package name * Thu Sep 11 2025 Jeff Olivier 2.7.101-14 diff --git a/utils/rpms/fpm_common.sh b/utils/rpms/fpm_common.sh index 2e78742a1b2..5cf9d862e33 100644 --- a/utils/rpms/fpm_common.sh +++ b/utils/rpms/fpm_common.sh @@ -170,7 +170,7 @@ build_package() { pkgname="${name}-${VERSION}-${RELEASE}.${ARCH}.${output_type}" rm -f "${pkgname}" # shellcheck disable=SC2068 - fpm -s "${PACKAGE_TYPE}" -t "${output_type}" \ + fpm --verbose -s "${PACKAGE_TYPE}" -t "${output_type}" \ -p "${pkgname}" \ --name "${name}" \ --license "${LICENSE}" \ diff --git a/utils/rpms/mercury.changelog b/utils/rpms/mercury.changelog new file mode 100644 index 00000000000..736cf7df3fa --- /dev/null +++ b/utils/rpms/mercury.changelog @@ -0,0 +1,283 @@ +* Thu Nov 6 2025 Cedric Koch-Hofer - 2.4.0-9 +- Restore the RPM changelog +- Allows to set OUTPUT_NAME_DEBUG to LIB_RELEASE_NAME + +* Tue Nov 04 2025 Jerome Soumagne - 2.4.0-8 +- Current dependency was too limiting for use with SHS provided libfabric rpms. +- Prevents "unbound variable" errors while keeping the check meaningful + +* Mon Sep 15 2025 Jeff Olivier - 2.4.0-7 +- Fix leap package name + +* Fri Sep 12 2025 Jeff Olivier - 2.4.0-6 +- Enable new packaging builds with FPM +- Add distro to package names + +* Wed Jun 25 2025 Joseph Moore - 2.4.0-5 +- Update release number to differentiate from test RPMs for prior issue.. + +* Tue Mar 11 2025 Joseph Moore - 2.4.0-4 +- Change to addr_release for handling of "already present" warning. + +* Wed Jan 15 2025 Joseph Moore - 2.4.0-3 +- Add patch to na_ucx.c to flush end point prior to close. + +* Tue Jan 07 2025 Joseph Moore - 2.4.0-2 +- Enable debug RPMs for Leap sub-packages. + +* Mon Nov 04 2024 Jerome Soumagne - 2.4.0-1 +- Update to 2.4.0 +- Update required libfabric version (>= 1.20) + +* Mon Oct 07 2024 Joseph Moore - 2.4.0~rc5-5 +- Update patch to na_ucx.c to set thread-safe on clients. + +* Thu Sep 26 2024 Joseph Moore - 2.4.0~rc5-4 +- Update patch to na_ucx.c to add fix for connection accept. + +* Wed Sep 04 2024 Brian J. Murrell - 2.4.0~rc5-3 +- Add --without ucx build switch + +* Thu Aug 29 2024 Joseph Moore - 2.4.0~rc5-2 +- Add patch to na_ucx.c to check ep in key_resolve. + +* Mon Aug 26 2024 Jerome Soumagne - 2.4.0~rc5-1 +- Update to 2.4.0rc5 + +* Fri Aug 02 2024 Jerome Soumagne - 2.4.0~rc4-1 +- Update to 2.4.0rc4 +- Remove previous patches now included in 2.4 +- Require libfabric >= 1.15 + +* Tue Mar 19 2024 Jerome Soumagne - 2.3.1-3 +- Add patch to fix ucx hg_info +- Add patch to remove ofi cxi MR warnings +- Add patch to fix potential segfault on log free + +* Wed Nov 22 2023 Jerome Soumagne - 2.3.1-2 +- Rebuild for EL 8.8 and Leap 15.5 + +* Fri Oct 27 2023 Jerome Soumagne - 2.3.1-1 +- Update to 2.3.1 +- Add json-c dependency for hg_info JSON output support +- Drop support for CentOS7 + +* Tue Sep 26 2023 Joseph Moore - 2.3.1~rc1-2 +- Add patch to na_ucx.c to force retry of out-of-memory error. + +* Tue Aug 29 2023 Jerome Soumagne - 2.3.1~rc1-1 +- Update to 2.3.1rc1 + +* Thu Jun 22 2023 Brian J. Murrell - 2.3.0-2 +- Rebuild for EL9 + +* Wed Jun 07 2023 Jerome Soumagne - 2.3.0-1 +- Update to 2.3.0 +- Add hg_info tool +- Fix pie flags on CentOS7 +- Remove na_ucx_src_port.patch and old patches + +* Tue Apr 25 2023 Jerome Soumagne - 2.3.0~rc5-1 +- Update to 2.3.0rc5 +- Remove na_ucx.c patch and add temporary na_ucx_src_port.patch +- Update build to make use of NA dynamic plugins +- Fix source URL and package perf tests + +* Thu Dec 22 2022 Joseph Moore - 2.2.0-6 +- Regenerate packages for LEAP15.4 + +* Thu Nov 17 2022 Joseph Moore - 2.2.0-5 +- Update na_ucx.c patch to support reconnection following a disconnect. + +* Wed Oct 05 2022 Joseph Moore - 2.2.0-4 +- Update na_ucx.c patch to include UCX status to NA error mapping. + +* Tue Sep 20 2022 Joseph Moore - 2.2.0-3 +- Fix defect in connect function. + +* Fri Sep 09 2022 Joseph Moore - 2.2.0-2 +- Add na_ucx.c patch to change ep creation for single IB device. + +* Fri Aug 05 2022 Jerome Soumagne - 2.2.0-1 +- Update to 2.2.0 + +* Mon Aug 01 2022 Jerome Soumagne - 2.2.0~rc6-2 +- Rebuild after libfabric rpm dropped CXI compat patch +- Drop CXI compat patch + +* Mon Jun 27 2022 Jerome Soumagne - 2.2.0~rc6-1 +- Update to 2.2.0rc6 +- Skip install rpath, enable debug log. +- Remove openpa dependency. + +* Fri Apr 22 2022 Joseph Moore - 2.1.0~rc4-9 +- Change ucx unified mode to off (updated UCX patch file). + +* Fri Apr 01 2022 Brian J. Murrell - 2.1.0~rc4-8 +- Build with ucx subpackage on supported platforms +- Removed invalid build options: + * MERCURY_ENABLE_VERBOSE_ERROR + * MERCURY_USE_SELF_FORWARD + +* Thu Mar 31 2022 Joseph Moore - 2.1.0~rc4-7 +- Apply daos-9679 address parsing change and active message revision to na_ucx.c. + +* Fri Mar 11 2022 Alexander Oganezov - 2.1.0~rc4-6 +- Apply cxi provider patch + +* Tue Feb 22 2022 Alexander Oganezov - 2.1.0~rc4-5 +- Apply doas-9561 workaround + +* Thu Feb 17 2022 Brian J. Murrell - 2.1.0~rc4-4 +- Fix issues with %post* ldconfig + - No lines are allowed after %post -p + - These are not needed on EL8 as it's glibc does the work + +* Thu Dec 23 2021 Alexander Oganezov - 2.1.0~rc4-3 +- Remove daos-9173 workaround +- Apply cpu usage fix to mercury + +* Tue Dec 07 2021 Alexander Oganezov - 2.1.0~rc4-2 +- Apply DAOS-9173 workaround patch to na_ofi.c + +* Tue Nov 30 2021 Alexander Oganezov - 2.1.0~rc4-1 +- Update to version v2.1.0rc4 + +* Tue Oct 12 2021 Alexander Oganezov - 2.1.0~rc2-1 +- Update to version v2.1.0rc2 + +* Fri May 14 2021 Alexander Oganezov - 2.0.1-1 +- Update to version v2.0.1 + +* Mon May 10 2021 Brian J. Murryyell - 2.0.1~rc1-2 +- Enable debuginfo package building for SUSE + +* Wed Jan 20 2021 Alexander Oganezov - 2.0.1~rc1-1 +- Update to version v2.0.1rc1 + +* Wed Nov 18 2020 Alexander Oganezov - 2.0.0-1 +- Update to release v2.0.0 + +* Wed Oct 28 2020 Alexander Oganezov - 2.0.0~rc3-1 +- Update to release v2.0.0rc3 + +* Mon Oct 12 2020 Alexander Oganezov - 2.0.0~rc2-1 +- Update to release v2.0.0rc2 + +* Tue Aug 18 2020 Brian J. Murryyell - 2.0.0~rc1-2 +- Use release tarball and not individual submodule tarballs + +* Mon Jul 06 2020 Alexander A Oganezov - 2.0.0~rc1-1 +- Update to release v2.0.0rc1 + +* Mon Jun 22 2020 Brian J. Murryyell - 2.0.0~a1-2 +- Fix License: +- Add %license + +* Thu May 07 2020 Brian J. Murrell - 2.0.0~a1-1 +- Fix pre-release tag in Version: +- Add Requires: libfabric-devel to devel package + +* Thu Apr 09 2020 Alexander A Oganezov - 2.0.0a1-0.8 +- Update to 4871023058887444d47ead4d089c99db979f3d93 + +* Tue Mar 17 2020 Alexander A Oganezov - 2.0.0a1-0.7 +- Update to 41caa143a07ed179a3149cac4af0dc7aa3f946fd + +* Thu Mar 12 2020 Alexander A Oganezov - 2.0.0a1-0.6 +- Update to 299b06d47e6c1d59a45985dcbbebe3caca0189d0 + +* Tue Mar 10 2020 Alexander A Oganezov - 2.0.0a1-0.5 +- Updated to ad5a3b3dbf171a97e1ca5f1683299db1c69b03ea + +* Thu Mar 05 2020 Vikram Chhabra - 2.0.0a1-0.4 +- Updated to latest master with HG_Forward fix. + +* Tue Feb 11 2020 Yulu Jia - 2.0.0a1-0.3 +- Remove nameserver patch + +* Sun Feb 09 2020 Yulu Jia - 2.0.0a1-0.2 +- Update patch to enable ip:port URI format for psm2 + +* Tue Feb 04 2020 Brian J. Murrell - 2.0.0a1-0.1 +- Update to 2.0.0a1 + +* Tue Jan 28 2020 Yulu Jia - 1.0.1-22 +- Update to c2c2628 +- Apply patch to enable ip:port URI format for psm2 + +* Mon Dec 02 2019 Alexander Oganezov - 1.0.1-21 +- Removed sl_patch on top of 7b529b +- Updated to 9889a0 + +* Thu Oct 31 2019 Alexander Oganezov - 1.0.1-20 +- sl_patch on top of 7b529b + +* Wed Oct 23 2019 Alexander Oganezov - 1.0.1-19 +- Update to 7b529b + +* Tue Oct 22 2019 Alexander Oganezov - 1.0.1-18 +- Reverting from 6a8b693 due to mercury segfaults + +* Mon Oct 21 2019 Alexander Oganezov - 1.0.1-17 +- Update to 6a8b693 + +* Wed Oct 16 2019 Alexander Oganezov - 1.0.1-16 +- Fixed spec to apply patch for 616fee properly + +* Tue Oct 15 2019 Alexander Oganezov - 1.0.1-15 +- Update to 616fee to get latest changes + +* Wed Oct 02 2019 Brian J. Murrell - 1.0.1-14 +- Update to cc0807 to include the HG_Cancel() fix. +- Update to f0b9f9 to get latest changes + +* Wed Oct 02 2019 Brian J. Murrell - 1.0.1-13 +- Once again revert previous update + +* Wed Oct 02 2019 Brian J. Murrell - 1.0.1-12 +- Update to cc0807 to include the HG_Cancel() fix. +- Update to f0b9f9 to get latest changes + +* Wed Sep 25 2019 Brian J. Murrell - 1.0.1-11 +- Back out previous update + - not all consumers are ready for it yet so they need to + pin their BR + +* Fri Sep 20 2019 Brian J. Murrell - 1.0.1-10 +- Update to cc0807 to include the HG_Cancel() fix. +- Update to f0b9f9 to get latest changes + +* Thu Aug 08 2019 Brian J. Murrell - 1.0.1-9 +- Revert previous update + +* Fri Aug 02 2019 Yulu Jia - 1.0.1-8 +- Update to cc0807 to include the HG_Cancel() fix. +- Roll the version number back to 1.0.1 + +* Fri Aug 02 2019 Brian J. Murrell - 1.0.1-7 +- Revert back to the 1.0.1-4 release as the upgrade included + in -5 (and the subsequent fix in -6) was premature + +* Thu Aug 01 2019 Brian J. Murrell - 1.0.1-6 +- Roll the version number back to 1.0.1 + +* Fri Jul 26 2019 Yulu Jia - 1.0.1-5 +- Update to cc0807 to include the HG_Cancel() fix. + +* Thu May 02 2019 Brian J. Murrell - 1.0.1-4 +- Devel package needs to require the lib package + +* Fri Mar 15 2019 Brian J. Murrell - 1.0.1-2 +- Add patch to revert back to Dec 06, 2018 c68870f + +* Mon Mar 11 2019 Brian J. Murrell - 1.0.1-1 +- Update to 1.0.1 +- Add patch for "HG Core: fix missing static inline in mercury_core.h" + +* Wed Oct 24 2018 Brian J. Murrell - 0.9.0-1.git.0f8f25b +- Update mercury to git sha1 0f8f25bb3d57f117979de65cc3c05cf192cf4b31 + +* Mon Aug 20 2018 Brian J. Murrell - 0.9.0-1.git.f7f6955 +- Initial package + diff --git a/utils/rpms/mercury.sh b/utils/rpms/mercury.sh index f14fe057043..d1cd2d2d8a5 100755 --- a/utils/rpms/mercury.sh +++ b/utils/rpms/mercury.sh @@ -24,6 +24,7 @@ Access (RMA). Its interface is generic and allows any function call to be serialized. Since code generation is done using the C preprocessor, no external tool is required." URL="http://mercury-hpc.github.io" +RPM_CHANGELOG="mercury.changelog" files=() TARGET_PATH="${bindir}" diff --git a/utils/rpms/package_info.sh b/utils/rpms/package_info.sh index 54920d77365..7b8a37da3df 100644 --- a/utils/rpms/package_info.sh +++ b/utils/rpms/package_info.sh @@ -38,7 +38,7 @@ export libfabric_version="1.22.0" export libfabric_release="4${distro_name}" export libfabric_full="${libfabric_version}-${libfabric_release}" export mercury_version="2.4.0" -export mercury_release="8${distro_name}" +export mercury_release="9${distro_name}" export mercury_full="${mercury_version}-${mercury_release}" export argobots_version="1.2" export argobots_release="3${distro_name}"