Skip to content

Commit 3a60e77

Browse files
ax3lfranzpoeschel
andauthored
Release: 0.16.1 (#1676)
* Release: 0.16.1 Signed-off-by: Axel Huebl <axel.huebl@plasma.ninja> * Fix new_version.py * Update version in windows.yml * Reformat with yapf3 * Fix greedy Regex parsing * Changelog: Add PRs #1681 #1679 #1678 * Fix: CMake Internal Control (#1678) The `openPMD_USE_INTERNAL_*` options are for general internal/external control. They were accidentally overwritten by new tar flags and sometimes incomplete. Signed-off-by: Axel Huebl <axel.huebl@plasma.ninja> * Revert "CMake Tar: TOML11 3.7.1 (#1673)" (#1679) This reverts commit aea4b72. * Replace deprecated makeSuite with loadTestsFromTestCase (#1681) Removed with Python 3.13 * Doc: Fix Shipped Internally (#1682) Downloaded now. Signed-off-by: Axel Huebl <axel.huebl@plasma.ninja> * `PYBIND11_FINDPYTHON=ON` (#1684) Reuse our `find_package(Python ...)` call and use new CMake logic in pybind11. https://pybind11.readthedocs.io/en/stable/compiling.html#modules-with-cmake https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-version-selection Signed-off-by: Axel Huebl <axel.huebl@plasma.ninja> * Fix ICX build (#1690) Error was: /home/runner/work/openPMD-api/openPMD-api/include/openPMD/backend/Container.hpp:262:32: error: no member named 'm_container' in 'Container<T, T_key, T_container>' 262 | container().swap(other.m_container); * Fix Leftover ADIOS1 Mentions (#1683) * Fix Leftover ADIOS1 Mentions Signed-off-by: Axel Huebl <axel.huebl@plasma.ninja> * Remove ADIOS1 from examples --------- Signed-off-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Franz Pöschel <franz.poeschel@gmail.com> * Explicitly specify ADIOS2 components in openPMDConfig.cmake (#1693) * Explicitly specify ADIOS2 components in openPMDConfig.cmake When including openPMD in downstream CMake and that CMake script contains Fortran, ADIOS2 will automatically detect that. But since we do not reexport the ADIOS2 headers, we only need the components that openPMD explicitly uses: CXX and MPI. * Same in CMakeLists.txt * Remove mpirun_workaround.sh (#1698) Seems to no longer be necessary in the affected CI runs * Properly check for empty HDF5_VERSION in CMake (#1702) The old test apparently invoked some weird CMake legacy behavior. This should make the pinned HDF5 Conda version unnecessary (#1701) since the version with missing HDF5_VERSION is correctly dealt with. * HDF5: Delete and re-create attribute when overwriting with diff. type (#1697) * HDF5: Delete and re-create attribute when overwriting with diff. type * WIP: Change datatype in test Somehow truncation test is broken by this * Add forgotten H5Aclose() call * TOUCH IOTask: Avoid setting files as dirty in non-write modes (#1704) * Bugfix: Consider dirty upon touch() only in write modes * Add error check to avoid writing in read-only mode * Changelog * Use ULONG for particle patches * Upgrade appleclang14 build to MacOS 13 > The macOS-12 environment is deprecated, consider switching to macOS-13, macOS-14 (macos-latest) or macOS-15. For more details, see actions/runner-images#10721 * Update Changelog * Release Date --------- Signed-off-by: Axel Huebl <axel.huebl@plasma.ninja> Co-authored-by: Franz Pöschel <franz.poeschel@gmail.com>
1 parent b4615dd commit 3a60e77

33 files changed

+384
-277
lines changed

.github/workflows/linux.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,7 @@ jobs:
328328
-DopenPMD_USE_MPI=ON \
329329
-DopenPMD_USE_HDF5=ON \
330330
-DopenPMD_USE_ADIOS2=ON \
331-
-DopenPMD_USE_INVASIVE_TESTS=ON \
332-
-DMPIEXEC_EXECUTABLE=".github/workflows/mpirun_workaround.sh"
331+
-DopenPMD_USE_INVASIVE_TESTS=ON
333332
cmake --build build --parallel 2
334333
cd build
335334
ctest --output-on-failure

.github/workflows/macos.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,12 @@ jobs:
4040
-DopenPMD_USE_MPI=ON \
4141
-DopenPMD_USE_HDF5=ON \
4242
-DopenPMD_USE_ADIOS2=ON \
43-
-DopenPMD_USE_INVASIVE_TESTS=ON \
44-
-DMPIEXEC_EXECUTABLE=".github/workflows/mpirun_workaround.sh"
43+
-DopenPMD_USE_INVASIVE_TESTS=ON
4544
cmake --build build --parallel 3
4645
ctest --test-dir build --verbose
4746
4847
appleclang14_py:
49-
runs-on: macos-12
48+
runs-on: macos-13
5049
if: github.event.pull_request.draft == false
5150
steps:
5251
- uses: actions/checkout@v4

.github/workflows/mpirun_workaround.sh

Lines changed: 0 additions & 52 deletions
This file was deleted.

.github/workflows/windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
4343
python3.exe -m pip wheel .
4444
if(!$?) { Exit $LASTEXITCODE }
45-
python3.exe -m pip install openPMD_api-0.16.0.dev0-cp39-cp39-win_amd64.whl
45+
python3.exe -m pip install openPMD_api-0.16.1-cp39-cp39-win_amd64.whl
4646
if(!$?) { Exit $LASTEXITCODE }
4747
4848
python3.exe -c "import openpmd_api as api; print(api.variants)"

CHANGELOG.rst

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,41 @@
33
Changelog
44
=========
55

6+
0.16.1
7+
------
8+
**Date:** 2025-01-15
9+
10+
New Backends, Extension, Perf. & Memory
11+
12+
This is the 0.16.0 release but with internal version bumps where they were missing.
13+
14+
Changes to "0.16.0"
15+
^^^^^^^^^^^^^^^^^^^
16+
17+
Bug Fixes
18+
"""""""""
19+
20+
- HDF5: Delete and re-create attribute when overwriting with diff. type #1697
21+
- TOUCH IOTask: Avoid setting files as dirty in non-write modes #1704
22+
- Fix CMake variables for controlling internal dependencies #1678
23+
- Bump toml11 dependency to ``v4.2.0`` by default #1679
24+
- Set ``PYBIND11_FINDPYTHON=ON`` #1684
25+
- Properly check for empty ``HDF5_VERSION`` in CMake #1702
26+
- Fix ICX build #1690
27+
- Explicitly specify ADIOS2 components in openPMDConfig.cmake #1693
28+
- Example 12: Use ``ULONG`` for particle patches #1710
29+
30+
Other
31+
"""""
32+
33+
- Replace deprecated Python unittest API call #1681
34+
- Remove ``mpirun_workaround.sh`` #1698
35+
- CI: Upgrade appleclang14 build to MacOS 13 #1703
36+
- Docs:
37+
38+
- Fix Shipped Internally #1682
39+
- Fix leftover ADIOS2 mentions #1683
40+
641
0.16.0
742
------
843
**Date:** 2024-10-07

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ contact:
3737
orcid: https://orcid.org/0000-0003-1943-7141
3838
email: axelhuebl@lbl.gov
3939
title: "openPMD-api: C++ & Python API for Scientific I/O with openPMD"
40-
version: 0.16.0-dev
40+
version: 0.16.1
4141
repository-code: https://github.com/openPMD/openPMD-api
4242
doi: 10.14278/rodare.27
4343
license: LGPL-3.0-or-later

CMakeLists.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
cmake_minimum_required(VERSION 3.22.0)
44

5-
project(openPMD VERSION 0.16.0) # LANGUAGES CXX
5+
project(openPMD VERSION 0.16.1) # LANGUAGES CXX
66

77
# the openPMD "markup"/"schema" standard version
88
set(openPMD_STANDARD_VERSION 1.1.0)
@@ -314,7 +314,7 @@ endif()
314314
string(CONCAT openPMD_HDF5_STATUS "")
315315
# version: lower limit
316316
if(openPMD_HAVE_HDF5)
317-
if(HDF5_VERSION STREQUAL "")
317+
if("${HDF5_VERSION}" STREQUAL "")
318318
message(WARNING "HDF5_VERSION is empty. Now assuming it is 1.8.13 or newer.")
319319
else()
320320
if(HDF5_VERSION VERSION_LESS 1.8.13)
@@ -360,20 +360,24 @@ if(openPMD_HDF5_STATUS)
360360
endif()
361361

362362
# external library: ADIOS2 (optional)
363+
set(openPMD_REQUIRED_ADIOS2_COMPONENTS CXX)
364+
if(openPMD_HAVE_MPI)
365+
list(APPEND openPMD_REQUIRED_ADIOS2_COMPONENTS MPI)
366+
endif()
363367
if(openPMD_USE_ADIOS2 STREQUAL AUTO)
364-
find_package(ADIOS2 2.7.0 CONFIG)
368+
find_package(ADIOS2 2.7.0 CONFIG COMPONENTS ${openPMD_REQUIRED_ADIOS2_COMPONENTS})
365369
if(ADIOS2_FOUND)
366370
set(openPMD_HAVE_ADIOS2 TRUE)
367371
else()
368372
set(openPMD_HAVE_ADIOS2 FALSE)
369373
endif()
370374
elseif(openPMD_USE_ADIOS2)
371-
find_package(ADIOS2 2.7.0 REQUIRED CONFIG)
375+
find_package(ADIOS2 2.7.0 REQUIRED CONFIG COMPONENTS ${openPMD_REQUIRED_ADIOS2_COMPONENTS})
372376
set(openPMD_HAVE_ADIOS2 TRUE)
373377
else()
374378
set(openPMD_HAVE_ADIOS2 FALSE)
375379
endif()
376-
# TODO: Check if ADIOS2 is parallel when openPMD_HAVE_MPI is ON
380+
unset(openPMD_REQUIRED_ADIOS2_COMPONENTS)
377381

378382
# external library: pybind11 (optional)
379383
include(${openPMD_SOURCE_DIR}/cmake/dependencies/pybind11.cmake)

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Required:
9999
* CMake 3.22.0+
100100
* C++17 capable compiler, e.g., g++ 7+, clang 7+, MSVC 19.15+, icpc 19+, icpx
101101

102-
Shipped internally in `share/openPMD/thirdParty/`:
102+
Shipped internally (downloaded by CMake unless `openPMD_SUPERBUILD=OFF` is set):
103103
* [Catch2](https://github.com/catchorg/Catch2) 2.13.10+ ([BSL-1.0](https://github.com/catchorg/Catch2/blob/master/LICENSE.txt))
104104
* [pybind11](https://github.com/pybind/pybind11) 2.13.0+ ([new BSD](https://github.com/pybind/pybind11/blob/master/LICENSE))
105105
* [NLohmann-JSON](https://github.com/nlohmann/json) 3.9.1+ ([MIT](https://github.com/nlohmann/json/blob/develop/LICENSE.MIT))
@@ -304,7 +304,7 @@ export CMAKE_PREFIX_PATH=$HOME/somepath:$CMAKE_PREFIX_PATH
304304
Use the following lines in your project's `CMakeLists.txt`:
305305
```cmake
306306
# supports: COMPONENTS MPI NOMPI HDF5 ADIOS2
307-
find_package(openPMD 0.16.0 CONFIG)
307+
find_package(openPMD 0.16.1 CONFIG)
308308
309309
if(openPMD_FOUND)
310310
target_link_libraries(YourTarget PRIVATE openPMD::openPMD)
@@ -332,7 +332,7 @@ set(openPMD_INSTALL OFF) # or instead use:
332332
set(openPMD_USE_PYTHON OFF)
333333
FetchContent_Declare(openPMD
334334
GIT_REPOSITORY "https://github.com/openPMD/openPMD-api.git"
335-
GIT_TAG "0.16.0")
335+
GIT_TAG "0.16.1")
336336
FetchContent_MakeAvailable(openPMD)
337337
```
338338

cmake/dependencies/catch.cmake

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,49 @@
11
function(find_catch2)
22
if(TARGET Catch2::Catch2)
33
message(STATUS "Catch2::Catch2 target already imported")
4-
elseif(openPMD_catch_src)
5-
message(STATUS "Compiling local Catch2 ...")
6-
message(STATUS "Catch2 source path: ${openPMD_catch_src}")
7-
if(NOT IS_DIRECTORY ${openPMD_catch_src})
8-
message(FATAL_ERROR "Specified directory openPMD_catch_src='${openPMD_catch_src}' does not exist!")
9-
endif()
10-
elseif(openPMD_catch_tar)
11-
message(STATUS "Downloading Catch2 ...")
12-
message(STATUS "Catch2 source: ${openPMD_catch_tar}")
134
elseif(openPMD_USE_INTERNAL_CATCH)
14-
message(STATUS "Downloading Catch2 ...")
15-
message(STATUS "Catch2 repository: ${openPMD_catch_repo} (${openPMD_catch_branch})")
5+
if(openPMD_catch_src)
6+
message(STATUS "Compiling local Catch2 ...")
7+
message(STATUS "Catch2 source path: ${openPMD_catch_src}")
8+
if(NOT IS_DIRECTORY ${openPMD_catch_src})
9+
message(FATAL_ERROR "Specified directory openPMD_catch_src='${openPMD_catch_src}' does not exist!")
10+
endif()
11+
elseif(openPMD_catch_tar)
12+
message(STATUS "Downloading Catch2 ...")
13+
message(STATUS "Catch2 source: ${openPMD_catch_tar}")
14+
elseif(openPMD_catch_branch)
15+
message(STATUS "Downloading Catch2 ...")
16+
message(STATUS "Catch2 repository: ${openPMD_catch_repo} (${openPMD_catch_branch})")
17+
endif()
1618
endif()
1719
if(TARGET Catch2::Catch2)
1820
# nothing to do, target already exists in the superbuild
19-
elseif(openPMD_USE_INTERNAL_CATCH OR openPMD_catch_src OR openPMD_catch_tar)
20-
if(openPMD_catch_src)
21-
add_subdirectory(${openPMD_catch_src} _deps/localCatch2-build/)
21+
elseif(openPMD_USE_INTERNAL_CATCH AND openPMD_catch_src)
22+
add_subdirectory(${openPMD_catch_src} _deps/localCatch2-build/)
23+
elseif(openPMD_USE_INTERNAL_CATCH AND (openPMD_catch_tar OR openPMD_catch_branch))
24+
include(FetchContent)
25+
if(openPMD_catch_tar)
26+
FetchContent_Declare(fetchedCatch2
27+
URL ${openPMD_catch_tar}
28+
URL_HASH ${openPMD_catch_tar_hash}
29+
BUILD_IN_SOURCE OFF
30+
)
2231
else()
23-
include(FetchContent)
24-
if(openPMD_catch_tar)
25-
FetchContent_Declare(fetchedCatch2
26-
URL ${openPMD_catch_tar}
27-
URL_HASH ${openPMD_catch_tar_hash}
28-
BUILD_IN_SOURCE OFF
29-
)
30-
else()
31-
FetchContent_Declare(fetchedCatch2
32-
GIT_REPOSITORY ${openPMD_catch_repo}
33-
GIT_TAG ${openPMD_catch_branch}
34-
BUILD_IN_SOURCE OFF
35-
)
36-
endif()
37-
FetchContent_MakeAvailable(fetchedCatch2)
38-
39-
# advanced fetch options
40-
mark_as_advanced(FETCHCONTENT_BASE_DIR)
41-
mark_as_advanced(FETCHCONTENT_FULLY_DISCONNECTED)
42-
mark_as_advanced(FETCHCONTENT_QUIET)
43-
#mark_as_advanced(FETCHCONTENT_SOURCE_DIR_FETCHEDCatch2)
44-
mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED)
45-
#mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED_FETCHEDCatch2)
32+
FetchContent_Declare(fetchedCatch2
33+
GIT_REPOSITORY ${openPMD_catch_repo}
34+
GIT_TAG ${openPMD_catch_branch}
35+
BUILD_IN_SOURCE OFF
36+
)
4637
endif()
38+
FetchContent_MakeAvailable(fetchedCatch2)
39+
40+
# advanced fetch options
41+
mark_as_advanced(FETCHCONTENT_BASE_DIR)
42+
mark_as_advanced(FETCHCONTENT_FULLY_DISCONNECTED)
43+
mark_as_advanced(FETCHCONTENT_QUIET)
44+
#mark_as_advanced(FETCHCONTENT_SOURCE_DIR_FETCHEDCatch2)
45+
mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED)
46+
#mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED_FETCHEDCatch2)
4747
elseif(NOT openPMD_USE_INTERNAL_CATCH)
4848
find_package(Catch2 2.13.10 CONFIG REQUIRED)
4949
message(STATUS "Catch2: Found version '${Catch2_VERSION}'")

cmake/dependencies/json.cmake

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,49 @@
11
function(find_json)
22
if(TARGET nlohmann_json::nlohmann_json)
33
message(STATUS "nlohmann_json::nlohmann_json target already imported")
4-
elseif(openPMD_json_src)
5-
message(STATUS "Compiling local nlohmann_json ...")
6-
message(STATUS "nlohmann_json source path: ${openPMD_json_src}")
7-
if(NOT IS_DIRECTORY ${openPMD_json_src})
8-
message(FATAL_ERROR "Specified directory openPMD_json_src='${openPMD_json_src}' does not exist!")
9-
endif()
10-
elseif(openPMD_json_tar)
11-
message(STATUS "Downloading nlohmann_json ...")
12-
message(STATUS "nlohmann_json source: ${openPMD_json_tar}")
134
elseif(openPMD_USE_INTERNAL_JSON)
14-
message(STATUS "Downloading nlohmann_json ...")
15-
message(STATUS "nlohmann_json repository: ${openPMD_json_repo} (${openPMD_json_branch})")
5+
if(openPMD_json_src)
6+
message(STATUS "Compiling local nlohmann_json ...")
7+
message(STATUS "nlohmann_json source path: ${openPMD_json_src}")
8+
if(NOT IS_DIRECTORY ${openPMD_json_src})
9+
message(FATAL_ERROR "Specified directory openPMD_json_src='${openPMD_json_src}' does not exist!")
10+
endif()
11+
elseif(openPMD_json_tar)
12+
message(STATUS "Downloading nlohmann_json ...")
13+
message(STATUS "nlohmann_json source: ${openPMD_json_tar}")
14+
elseif(openPMD_json_branch)
15+
message(STATUS "Downloading nlohmann_json ...")
16+
message(STATUS "nlohmann_json repository: ${openPMD_json_repo} (${openPMD_json_branch})")
17+
endif()
1618
endif()
1719
if(TARGET nlohmann_json::nlohmann_json)
1820
# nothing to do, target already exists in the superbuild
19-
elseif(openPMD_USE_INTERNAL_JSON OR openPMD_json_src OR openPMD_json_tar)
20-
if(openPMD_json_src)
21-
add_subdirectory(${openPMD_json_src} _deps/localnlohmann_json-build/)
21+
elseif(openPMD_USE_INTERNAL_JSON AND openPMD_json_src)
22+
add_subdirectory(${openPMD_json_src} _deps/localnlohmann_json-build/)
23+
elseif(openPMD_USE_INTERNAL_JSON AND (openPMD_json_tar OR openPMD_json_branch))
24+
include(FetchContent)
25+
if(openPMD_json_tar)
26+
FetchContent_Declare(fetchednlohmann_json
27+
URL ${openPMD_json_tar}
28+
URL_HASH ${openPMD_json_tar_hash}
29+
BUILD_IN_SOURCE OFF
30+
)
2231
else()
23-
include(FetchContent)
24-
if(openPMD_json_tar)
25-
FetchContent_Declare(fetchednlohmann_json
26-
URL ${openPMD_json_tar}
27-
URL_HASH ${openPMD_json_tar_hash}
28-
BUILD_IN_SOURCE OFF
29-
)
30-
else()
31-
FetchContent_Declare(fetchednlohmann_json
32-
GIT_REPOSITORY ${openPMD_json_repo}
33-
GIT_TAG ${openPMD_json_branch}
34-
BUILD_IN_SOURCE OFF
35-
)
36-
endif()
37-
FetchContent_MakeAvailable(fetchednlohmann_json)
38-
39-
# advanced fetch options
40-
mark_as_advanced(FETCHCONTENT_BASE_DIR)
41-
mark_as_advanced(FETCHCONTENT_FULLY_DISCONNECTED)
42-
mark_as_advanced(FETCHCONTENT_QUIET)
43-
#mark_as_advanced(FETCHCONTENT_SOURCE_DIR_FETCHEDnlohmann_json)
44-
mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED)
45-
#mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED_FETCHEDnlohmann_json)
32+
FetchContent_Declare(fetchednlohmann_json
33+
GIT_REPOSITORY ${openPMD_json_repo}
34+
GIT_TAG ${openPMD_json_branch}
35+
BUILD_IN_SOURCE OFF
36+
)
4637
endif()
38+
FetchContent_MakeAvailable(fetchednlohmann_json)
39+
40+
# advanced fetch options
41+
mark_as_advanced(FETCHCONTENT_BASE_DIR)
42+
mark_as_advanced(FETCHCONTENT_FULLY_DISCONNECTED)
43+
mark_as_advanced(FETCHCONTENT_QUIET)
44+
#mark_as_advanced(FETCHCONTENT_SOURCE_DIR_FETCHEDnlohmann_json)
45+
mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED)
46+
#mark_as_advanced(FETCHCONTENT_UPDATES_DISCONNECTED_FETCHEDnlohmann_json)
4747
elseif(NOT openPMD_USE_INTERNAL_JSON)
4848
find_package(nlohmann_json 3.9.1 CONFIG REQUIRED)
4949
message(STATUS "nlohmann_json: Found version '${nlohmann_json_VERSION}'")

0 commit comments

Comments
 (0)