Skip to content

Commit 97ebcc9

Browse files
committed
Merge branch 'release/2.0.0'
2 parents 59a358f + fbe4831 commit 97ebcc9

File tree

167 files changed

+1411
-3848
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

167 files changed

+1411
-3848
lines changed

CMakeLists.txt

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -113,17 +113,6 @@ ecbuild_add_option( FEATURE RADOS
113113
DESCRIPTION "Ceph/Rados storage support"
114114
REQUIRED_PACKAGES Rados )
115115

116-
### Armadillo
117-
118-
ecbuild_add_option( FEATURE ARMADILLO
119-
CONDITION HAVE_EXPERIMENTAL
120-
DESCRIPTION "Armadillo linear algebra library"
121-
REQUIRED_PACKAGES Armadillo )
122-
123-
set_package_properties( Armadillo PROPERTIES
124-
DESCRIPTION "C++ linear algebra"
125-
)
126-
127116
### MKL
128117

129118
ecbuild_add_option( FEATURE MKL
@@ -146,7 +135,7 @@ ecbuild_add_option( FEATURE LZ4
146135

147136
ecbuild_add_option( FEATURE AEC
148137
DESCRIPTION "AEC support for compression"
149-
REQUIRED_PACKAGES "NAME libaec VERSION 1.0.6")
138+
REQUIRED_PACKAGES "NAME libaec VERSION 1.1.4")
150139

151140
ecbuild_add_option( FEATURE ZIP
152141
DESCRIPTION "ZIP support for compression"
@@ -263,13 +252,6 @@ if(HAVE_CURL)
263252
ecbuild_info("Curl version ${CURL_VERSION_STRING} -- libs [${CURL_LIBRARIES}] incs [${CURL_INCLUDE_DIRS}]")
264253
endif()
265254

266-
#### Jemalloc
267-
268-
ecbuild_add_option( FEATURE JEMALLOC
269-
DEFAULT OFF
270-
DESCRIPTION "Link against jemalloc memory allocator"
271-
REQUIRED_PACKAGES Jemalloc )
272-
273255
#### CUDA
274256

275257
ecbuild_add_option( FEATURE CUDA
@@ -284,29 +266,6 @@ ecbuild_add_option( FEATURE HIP
284266
DESCRIPTION "HIP GPU linear algebra operations"
285267
REQUIRED_PACKAGES hip hipsparse )
286268

287-
### ViennaCL
288-
289-
ecbuild_add_option( FEATURE VIENNACL
290-
CONDITION HAVE_EXPERIMENTAL
291-
DESCRIPTION "ViennaCL OpenCL linear algebra operations"
292-
REQUIRED_PACKAGES ViennaCL )
293-
294-
set_package_properties( ViennaCL PROPERTIES
295-
DESCRIPTION "linear algebra library for computations on many-core architectures"
296-
TYPE RECOMMENDED
297-
PURPOSE "Dense and sparse matrix operations on OpenCL devices" )
298-
299-
### LibRsync
300-
301-
ecbuild_add_option( FEATURE RSYNC
302-
DEFAULT OFF
303-
DESCRIPTION "librsync implementation of the rsync algorithm"
304-
REQUIRED_PACKAGES LibRsync )
305-
if( HAVE_RSYNC )
306-
set( LIBRSYNC_LIBRARIES rsync )
307-
endif()
308-
309-
310269
### Performance tests
311270

312271
ecbuild_add_option( FEATURE EXTRA_TESTS

README.md

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,37 @@
1-
eckit
2-
=====
1+
# EcKit
2+
3+
<div align="center">
34

45
[![Latest Tag](https://img.shields.io/github/v/tag/ecmwf/eckit?label=latest&style=flat-square&logo=github)](https://github.com/ecmwf/eckit/tags)
56
[![CI](https://img.shields.io/github/actions/workflow/status/ecmwf/eckit/ci.yml?branch=master&label=ci%20(master)&style=flat-square&logo=github)](https://github.com/ecmwf/eckit/actions/workflows/ci.yml)
67
[![CI](https://img.shields.io/github/actions/workflow/status/ecmwf/eckit/ci.yml?branch=develop&label=ci%20(develop)&style=flat-square&logo=github)](https://github.com/ecmwf/eckit/actions/workflows/ci.yml)
8+
79
[![codecov](https://codecov.io/gh/ecmwf/eckit/branch/develop/graph/badge.svg)](https://codecov.io/gh/ecmwf/eckit)
810
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/ecmwf/eckit/blob/develop/LICENSE)
11+
[![Project Maturity](https://github.com/ecmwf/codex/raw/refs/heads/main/Project%20Maturity/graduated_badge.svg)](https://github.com/ecmwf/codex/raw/refs/heads/main/Project%20Maturity#graduated)
912

10-
Project home: https://software.ecmwf.int/wiki/display/ECKIT
13+
</div>
1114

15+
> [!IMPORTANT]
16+
> This software is **Graduated** and subject to ECMWF's guidelines on
17+
> [Software Maturity](https://github.com/ecmwf/codex/raw/refs/heads/main/Project%20Maturity).
1218
13-
ecKit is a cross-platform C++ toolkit that supports development of tools and
19+
## Overview
20+
21+
EcKit is a cross-platform C++ toolkit that supports development of tools and
1422
applications at ECMWF. It is based on code developed over the last 20 years
1523
within the MARS software and was re-factored out to be reused by other
16-
applications. It provides a an abstraction layer on top of the operating
17-
system, so it is easier to port code to new architectures. It is developed
18-
taking into account the robustness requirements of running production systems
19-
at ECMWF. The main focus is UNIX/POSIX systems, and it has been thoroughly
20-
tested on AIX, Linux and Mac OSX. Historically, the code base pre-dates and in
21-
some way can be seen as a leaner substitute for some 'Boost' libraries.
24+
applications. It provides an abstraction layer on top of the operating system,
25+
so it is easier to port code to new architectures. It is developed taking into
26+
account the robustness requirements of running production systems at ECMWF. The
27+
main focus is UNIX/POSIX systems, and it has been thoroughly tested on Linux
28+
and Mac OSX. Historically, the code base pre-dates and in some way can be seen
29+
as a leaner substitute for some 'Boost' libraries.
30+
31+
## Features
2232

2333
It features facilities to easily handle, in a cross-platform way:
34+
2435
* multi-threading
2536
* json and yaml parsing
2637
* object serialization and persistence
@@ -35,35 +46,14 @@ It features facilities to easily handle, in a cross-platform way:
3546
* asynchronous processing
3647
* exception handling and stack dumping
3748
* MPI object-oriented wrapper
38-
* linear algebra abstraction with multiple backends (BLAS, MKL, Armadillo, Eigen3)
49+
* linear algebra abstraction with multiple backends (BLAS, MKL, Eigen3)
3950
* advanced container classes
4051
* space partition trees
4152
* file-mapped arrays
4253

54+
## Requirements
4355

44-
Requirements
45-
------------
46-
47-
Tested compilers include:
48-
49-
- GCC 4.9.1, 5.3.0, 6.3.0, 7.2.0
50-
- Intel 15.0.2, 16.0.3, 17, 18
51-
- CCE 8.4.5, 8.5.8, 8.6.2
52-
- Apple LLVM 9.1.0 (clang-902.0.39.1)
53-
54-
Required dependencies:
55-
56-
- CMake --- For use and installation see http://www.cmake.org/
57-
- ecbuild --- ECMWF library of CMake macros
58-
- Perl5 --- For some code generation
59-
60-
61-
Installation
62-
------------
63-
64-
Eckit employs an out-of-source build/install based on CMake.
65-
66-
Make sure ecbuild is installed and the ecbuild executable script is found ( `which ecbuild` ).
56+
Make sure ecbuild is installed and the ecbuild executable script is found (`which ecbuild`).
6757

6858
Now proceed with installation as follows:
6959

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.33.1
1+
2.0.0

cmake/FindArmadillo.cmake

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

cmake/FindLZ4.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#
1616
# The following paths will be searched with priority if set in CMake or env
1717
#
18-
# LZ4_PATH - prefix path of the Armadillo installation
18+
# LZ4_PATH - prefix path of the LZ4 installation
1919
# LZ4_ROOT - Set this variable to the root installation
2020

2121
# Search with priority for LZ4_PATH if given as CMake or env var

cmake/FindLibRsync.cmake

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

cmake/FindRADOS.cmake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99
# - Try to find Rados
1010
# Once done this will define
1111
#
12-
# RADOS_FOUND - system has Armadillo
13-
# RADOS_INCLUDE_DIRS - the Armadillo include directory
14-
# RADOS_LIBRARIES - the Armadillo library
12+
# RADOS_FOUND - system has Rados
13+
# RADOS_INCLUDE_DIRS - the Rados include directory
14+
# RADOS_LIBRARIES - the Rados library
1515
# RADOS_VERSION - This is set to $major.$minor.$patch (eg. 0.9.8)
1616
#
1717
# The following paths will be searched with priority if set in CMake or env
1818
#
19-
# RADOS_PATH - prefix path of the Armadillo installation
19+
# RADOS_PATH - prefix path of the Rados installation
2020
# RADOS_ROOT - Set this variable to the root installation
2121

2222
# Search with priority for RADOS_PATH if given as CMake or env var

cmake/FindSnappy.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#
1616
# The following paths will be searched with priority if set in CMake or env
1717
#
18-
# SNAPPY_PATH - prefix path of the Armadillo installation
18+
# SNAPPY_PATH - prefix path of the Snappy installation
1919
# SNAPPY_ROOT - Set this variable to the root installation
2020

2121
# Search with priority for SNAPPY_PATH if given as CMake or env var

cmake/FindViennaCL.cmake

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

python/eckit/setup.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,16 @@
2222
binary_dir = getenv("ECKIT_BUILD_DIR", str(Path(getenv("HOME"), "build", "eckit")))
2323
library_dirs = getenv("ECKIT_LIB_DIR", str(Path(binary_dir, "lib"))).split(":")
2424

25-
include_dirs_default = ":".join( str(p) for p in (Path(source_dir, "src"), Path(binary_dir, "src"), Path(source_dir, "eckit", "src"), Path(binary_dir, "eckit", "src")) if p.exists())
25+
include_dirs_default = ":".join(
26+
str(p)
27+
for p in (
28+
Path(source_dir, "src"),
29+
Path(binary_dir, "src"),
30+
Path(source_dir, "eckit", "src"),
31+
Path(binary_dir, "eckit", "src"),
32+
)
33+
if p.exists()
34+
)
2635
include_dirs = getenv("ECKIT_INCLUDE_DIRS", include_dirs_default).split(":")
2736

2837
extra_compile_args = ["-std=c++17"]
@@ -41,6 +50,7 @@ def _ext(name: str, sources: list, libraries: list) -> Extension:
4150
extra_link_args=extra_compile_args,
4251
)
4352

53+
4454
kwargs_set: dict[str, Any] = {}
4555
try:
4656
from setup_utils import ext_kwargs as wheel_ext_kwargs
@@ -51,7 +61,7 @@ def _ext(name: str, sources: list, libraries: list) -> Extension:
5161

5262
version: str
5363
try:
54-
with open("../../VERSION", 'r') as f:
64+
with open("../../VERSION", "r") as f:
5565
version = f.readlines()[0].strip()
5666
except Exception:
5767
warnings.warn("failed to read VERSION, falling back to 0.0.0")
@@ -60,6 +70,7 @@ def _ext(name: str, sources: list, libraries: list) -> Extension:
6070
install_requires = ["findlibs", "pyyaml"]
6171
try:
6272
import eckitlib
73+
6374
install_requires.append(f"eckitlib=={eckitlib.__version__}")
6475
except ImportError:
6576
warnings.warn("failed to import eckitlib, not listing as a dependency")
@@ -87,7 +98,11 @@ def _ext(name: str, sources: list, libraries: list) -> Extension:
8798
["eckit_geo"],
8899
),
89100
],
90-
compiler_directives={"language_level": 3, "c_string_encoding": "default"},
101+
compiler_directives={
102+
"language_level": 3,
103+
"c_string_type": "unicode", # accept Python str
104+
"c_string_encoding": "utf8",
105+
},
91106
),
92107
**kwargs_set,
93108
)

0 commit comments

Comments
 (0)