diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index e961902bf2..0809457ec0 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -101,6 +101,7 @@ The Axom project release numbers follow [Semantic Versioning](http://semver.org/ internal `quest::internal::read_*_mesh()`/`logger_init()` helpers are now declared only when Axom is configured with MPI. Serial code that passed the placeholder `MPI_COMM_SELF` explicitly should drop the argument. - We can now configure Axom without MPI when some of its dependencies were configured with MPI. +- Python: Raised the minimum supported versions for Python bindings to Python 3.9 and nanobind 2.10. - Quest: Status-returning reader/writer operations in `C2CReader`, `MFEMReader`, `ProEReader`, `STEPReader`, `STLReader`, `STLWriter`, and their parallel variants are now marked `[[nodiscard]]`. Callers that previously ignored returned status values must check them to avoid compiler diagnostics. diff --git a/scripts/spack/configs/linux_ubuntu_20/spack.yaml b/scripts/spack/configs/linux_ubuntu_20/spack.yaml deleted file mode 100644 index 18372ea982..0000000000 --- a/scripts/spack/configs/linux_ubuntu_20/spack.yaml +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright (c) Lawrence Livermore National Security, LLC and other -# Axom Project Contributors. See top-level LICENSE and COPYRIGHT -# files for dates and other details. -# -# SPDX-License-Identifier: (BSD-3-Clause) - -spack: - config: - install_tree: - root: $spack/.. - projections: - all: '{compiler.name}-{compiler.version}/{name}-{version}-{hash}' - misc_cache: $spack/../misc_cache - test_stage: $spack/../test_stage - build_stage:: - - $spack/../build_stage - - # Regular TPLs do not need views - view: false - - compilers:: - - compiler: - spec: gcc@9.3.0 - paths: - cc: /usr/bin/gcc - cxx: /usr/bin/g++ - f77: /usr/bin/gfortran - fc: /usr/bin/gfortran - flags: - cflags: -pthread - cxxflags: -pthread - operating_system: ubuntu20.04 - target: x86_64 - modules: [] - environment: {} - extra_rpaths: [] - - packages: - all: - target: [ivybridge] - compiler: [gcc] - providers: - mpi: [mpich] - blas: [openblas] - lapack: [openblas] - gl: [opengl] - glu: [openglu] - - # Lock down which MPI we are using - mpi: - buildable: false - mpich: - externals: - - spec: mpich@3.3.2%gcc@9.3.0 - prefix: /usr - - # Lock down versions of packages we depend on - opengl: - buildable: false - externals: - - spec: opengl@1.7.0 - prefix: /usr - openglu: - buildable: false - externals: - - spec: openglu@1.3.1 - prefix: /usr - bzip2: - buildable: false - externals: - - spec: bzip2@1.0.8 - prefix: / - elfutils: - buildable: false - externals: - - spec: elfutils@0.187 - prefix: /usr - gettext: - buildable: false - externals: - - spec: gettext@0.19.8.1 - prefix: /usr - perl: - buildable: false - externals: - - spec: perl@5.30.0 - prefix: /usr - tar: - buildable: false - externals: - - spec: tar@1.30 - prefix: / - libx11: - buildable: false - externals: - - spec: libx11@6.3.0 - prefix: /usr - autoconf: - buildable: false - externals: - - spec: autoconf@2.69 - prefix: /usr - openssl: - externals: - - spec: openssl@1.1.1 - prefix: /usr/lib/x86_64-linux-gnu/ - openblas: - buildable: false - externals: - - spec: openblas@0.3.8 - prefix: /usr/lib/x86_64-linux-gnu/ - unzip: - buildable: false - externals: - - spec: unzip@6.0 - prefix: /usr - zlib: - buildable: false - externals: - - spec: zlib@1.2.11 - prefix: /usr - cuda: - buildable: false - externals: - - spec: cuda@11.7.0 - prefix: /usr/local/cuda-11.7 - m4: - buildable: false - externals: - - spec: m4@1.4.16 - prefix: /usr - - # Lock in versions of Devtools - cmake: - buildable: false - externals: - - spec: cmake@3.20.4 - prefix: /usr - cppcheck: - version: [1.90] - buildable: false - externals: - - spec: cppcheck@1.90 - prefix: /usr - doxygen: - version: [1.8.17] - buildable: false - externals: - - spec: doxygen@1.8.17 - prefix: /usr - llvm: - version: [10.0.0] - buildable: false - externals: - - spec: llvm@10.0.0+clang - prefix: /usr - python: - version: [3.8.5] - buildable: false - externals: - - spec: python@3.8.5 - prefix: /usr - py-sphinx: - version: [3.2.1] - buildable: false - externals: - - spec: py-sphinx@3.2.1 - prefix: /usr diff --git a/scripts/spack/packages/axom/package.py b/scripts/spack/packages/axom/package.py index 879ac0fda5..85676cdbc3 100644 --- a/scripts/spack/packages/axom/package.py +++ b/scripts/spack/packages/axom/package.py @@ -299,12 +299,12 @@ class Axom(CachedCMakePackage, CudaPackage, ROCmPackage): # Python with when("+python"): - depends_on("python") + depends_on("python@3.9:") # extending python allows spack environment views to import axom from python extends("python") - depends_on("py-nanobind@2.7.0:") + depends_on("py-nanobind@2.10.0:") depends_on("py-pytest") depends_on("py-packaging") depends_on("py-pygments") diff --git a/src/axom/sidre/nanobind_sidre.cpp b/src/axom/sidre/nanobind_sidre.cpp index 464d30398e..8fcf83881f 100644 --- a/src/axom/sidre/nanobind_sidre.cpp +++ b/src/axom/sidre/nanobind_sidre.cpp @@ -674,8 +674,7 @@ NB_MODULE(_sidre, m_sidre) m_sidre.attr("AXOM_ENABLE_MPI") = false; #endif -#if defined(AXOM_USE_MPI) && \ - ((NB_VERSION_MAJOR > 2) || (NB_VERSION_MAJOR == 2 && NB_VERSION_MINOR >= 10)) +#if defined(AXOM_USE_MPI) m_sidre.attr("AXOM_HAS_DISTRIBUTED_BLUEPRINT_INDEX_BINDING") = true; #else m_sidre.attr("AXOM_HAS_DISTRIBUTED_BLUEPRINT_INDEX_BINDING") = false; @@ -833,9 +832,7 @@ NB_MODULE(_sidre, m_sidre) nb::keep_alive<0, 1>(), "Return an iterator over Attributes") -#if defined(AXOM_USE_MPI) && \ - ((NB_VERSION_MAJOR > 2) || (NB_VERSION_MAJOR == 2 && NB_VERSION_MINOR >= 10)) - // Distributed Blueprint index generation builds cleanly under nanobind >= 2.10 +#if defined(AXOM_USE_MPI) .def( "generateBlueprintIndex", [](DataStore& self, diff --git a/src/axom/sidre/tests/sidre_spio_Py.py b/src/axom/sidre/tests/sidre_spio_Py.py index e8649c459d..f2f7b95984 100644 --- a/src/axom/sidre/tests/sidre_spio_Py.py +++ b/src/axom/sidre/tests/sidre_spio_Py.py @@ -120,8 +120,7 @@ def test_iomanager_split_communicator(tmp_path): def test_distributed_generate_blueprint_index(tmp_path): - # The distributed generateBlueprintIndex overload is built only under - # nanobind >= 2.10; skip cleanly if this build omitted it. + # The distributed generateBlueprintIndex overload is built only with MPI. if not sidre.AXOM_HAS_DISTRIBUTED_BLUEPRINT_INDEX_BINDING: pytest.skip("generateBlueprintIndex not bound") diff --git a/src/cmake/thirdparty/SetupAxomThirdParty.cmake b/src/cmake/thirdparty/SetupAxomThirdParty.cmake index 6bc358c31f..b6a89a110b 100644 --- a/src/cmake/thirdparty/SetupAxomThirdParty.cmake +++ b/src/cmake/thirdparty/SetupAxomThirdParty.cmake @@ -308,7 +308,7 @@ if(EXISTS ${Python_EXECUTABLE}) set(DEV_MODULE Development.Module) endif() - find_package(Python 3.8 COMPONENTS Interpreter ${DEV_MODULE} REQUIRED) + find_package(Python 3.9 COMPONENTS Interpreter ${DEV_MODULE} REQUIRED) # Debug print the paths to the found Python artifacts message(STATUS "Python version: ${Python_VERSION}") @@ -441,7 +441,7 @@ if(nanobind_ROOT AND NOT AXOM_ENABLE_UBSAN) axom_assert_is_directory(DIR_VARIABLE nanobind_ROOT) - find_package(nanobind CONFIG REQUIRED) + find_package(nanobind 2.10 CONFIG REQUIRED) message(STATUS "Nanobind support is ON") set(NANOBIND_FOUND TRUE) else() diff --git a/src/docs/sphinx/quickstart_guide/config_build.rst b/src/docs/sphinx/quickstart_guide/config_build.rst index 5e8c605f27..87e1c27b20 100644 --- a/src/docs/sphinx/quickstart_guide/config_build.rst +++ b/src/docs/sphinx/quickstart_guide/config_build.rst @@ -31,7 +31,7 @@ Basic requirements: a minimum version of 3.18 when building with CUDA support, and a minimum version of 3.21 when building with HIP support * Fortran Compiler (optional) - * Python 3.8 at a minimum for python bindings (optional) + * Python 3.9 at a minimum for python bindings (optional) Supported Compilers ~~~~~~~~~~~~~~~~~~~