Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
5e06e59
Adding config for macos, still untested.
paulotex Jan 8, 2026
a1e0d32
Fixing RPATH issues
Jan 12, 2026
c96598b
Cleaning main CMakeLists. Seems to work on macOS now.
paulotex Jan 12, 2026
5d51fa9
ensuring arm64 when building the wheel on macos
paulotex Jan 12, 2026
38d42e1
Removing github actions for macOS x86 for now, will be added later on…
paulotex Jan 12, 2026
c63d4f4
Fixing macOS version from 11 to 14 to ensure arm only, no x86
paulotex Jan 12, 2026
1ece600
Improving legibility in macOS section in cmake
paulotex Jan 12, 2026
b44579c
Fixing missing override warnings
paulotex Jan 12, 2026
415d503
Merge branch 'develop' into feature/macos-arm
paulotex Jan 15, 2026
a34ef25
Adding support for python versions 3.10 to 3.13, like the other archi…
paulotex Jan 15, 2026
c6ce7a5
Adding missing override modifiers to avoid compilation warnings
paulotex Jan 16, 2026
72dffdd
macOS ARM: all python versions available and UDA enabled.
paulotex Jan 16, 2026
c9e92a1
Adding missing override to virtual functions implementations.
paulotex Jan 16, 2026
0817e7b
Adding minimal MACOSX_DEPLOYMENT_TARGET
paulotex Jan 16, 2026
d2d7ec9
Removing UDA again, to create a commit with just several python versi…
paulotex Jan 27, 2026
9f08849
Merge branch 'iterorganization:develop' into feature/macos-arm
paulotex Jan 27, 2026
df82138
adding python 3.14 to macos-arm
paulotex Feb 6, 2026
ec0f78e
Merge branch 'iterorganization:develop' into feature/macos-arm
paulotex Feb 6, 2026
c741b42
macos target is now 14 everywhere to ensure ARM processors only.
paulotex Feb 6, 2026
805041f
search logic for hdf libraries
prasad-sawantdesai Feb 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 64 additions & 3 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,17 @@ jobs:
UDA_REF: "2.9.3"
FMT_REF: "11.1.4"

- os: macos-14
triplet: arm64-osx
python: 310
platform_id: macosx_arm64
cibw_platform: macos
cibw_archs: arm64
AL_BACKEND_HDF5: AL_BACKEND_HDF5=ON
AL_BACKEND_MDSPLUS: AL_BACKEND_MDSPLUS=OFF
AL_BACKEND_UDA: AL_BACKEND_UDA=OFF
UDA_REF: "2.9.3"

- os: macos-14
triplet: arm64-osx
python: 311
Expand All @@ -87,6 +98,40 @@ jobs:
AL_BACKEND_HDF5: AL_BACKEND_HDF5=ON
AL_BACKEND_MDSPLUS: AL_BACKEND_MDSPLUS=OFF
AL_BACKEND_UDA: AL_BACKEND_UDA=OFF
UDA_REF: "2.9.3"

- os: macos-14
triplet: arm64-osx
python: 312
platform_id: macosx_arm64
cibw_platform: macos
cibw_archs: arm64
AL_BACKEND_HDF5: AL_BACKEND_HDF5=ON
AL_BACKEND_MDSPLUS: AL_BACKEND_MDSPLUS=OFF
AL_BACKEND_UDA: AL_BACKEND_UDA=OFF
UDA_REF: "2.9.3"

- os: macos-14
triplet: arm64-osx
python: 313
platform_id: macosx_arm64
cibw_platform: macos
cibw_archs: arm64
AL_BACKEND_HDF5: AL_BACKEND_HDF5=ON
AL_BACKEND_MDSPLUS: AL_BACKEND_MDSPLUS=OFF
AL_BACKEND_UDA: AL_BACKEND_UDA=OFF
UDA_REF: "2.9.3"

- os: macos-14
triplet: arm64-osx
python: 314
platform_id: macosx_arm64
cibw_platform: macos
cibw_archs: arm64
AL_BACKEND_HDF5: AL_BACKEND_HDF5=ON
AL_BACKEND_MDSPLUS: AL_BACKEND_MDSPLUS=OFF
AL_BACKEND_UDA: AL_BACKEND_UDA=OFF
UDA_REF: "2.9.3"

- os: windows-2022
triplet: x64-windows
Expand Down Expand Up @@ -302,10 +347,26 @@ jobs:
cmake.define.${{ matrix.AL_BACKEND_MDSPLUS }}
cmake.define.${{ matrix.AL_BACKEND_UDA }}

# Dependency installation
# Dependency installationinto /tmp
CIBW_BEFORE_ALL_MACOS: >
brew update;
brew install cmake pkg-config boost hdf5 libomp;
brew update >&2;
brew install cmake pkg-config boost hdf5 libomp ninja fmt spdlog libxml2 openssl capnp libmemcached >&2;
git clone --depth 1 --branch ${{ matrix.UDA_REF }} https://github.com/ukaea/UDA.git >&2 &&
cd UDA >&2;
cmake -G Ninja -B build . \
-DBUILD_SHARED_LIBS=ON \
-DSSLAUTHENTICATION=ON \
-DCLIENT_ONLY=ON \
-DENABLE_CAPNP=ON \
-DMACOSX_DEPLOYMENT_TARGET=14.0 \
-DCMAKE_INSTALL_PREFIX=/tmp/uda-install >&2 &&
cmake --build build --target install -j >&2;

# Where to find the dependencies
CIBW_ENVIRONMENT_MACOS: >
MACOSX_DEPLOYMENT_TARGET=14.0
CMAKE_PREFIX_PATH="/tmp/uda-install:/opt/homebrew:/usr/local"
PKG_CONFIG_PATH="/tmp/uda-install/lib/pkgconfig:/opt/homebrew/lib/pkgconfig:/usr/local/lib/pkgconfig"

with:
package-dir: .
Expand Down
8 changes: 5 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,12 @@ if(NOT PROJECT_VERSION_TWEAK EQUAL 0)
endif()

if(APPLE)
# Disable extra backends for now:
message(STATUS "Disabling UDA and MDSPlus backends on macOS")
set(AL_BACKEND_UDA OFF CACHE BOOL "UDA backend" FORCE)
# Disable MDSPlus:
message(STATUS "Disabling MDSPlus backend on macOS")
set(AL_BACKEND_MDSPLUS OFF CACHE BOOL "MDSPlus backend" FORCE)
# Disable UDA:
message(STATUS "Disabling UDA backend on macOS")
set(AL_BACKEND_UDA OFF CACHE BOOL "UDA backend" FORCE)
endif()


Expand Down
6 changes: 3 additions & 3 deletions src/ascii_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,15 @@ class IMAS_CORE_LIBRARY_API AsciiBackend : public Backend

void get_occurrences(Context* ctx, const char* ids_name, int** occurrences_list, int* size) override;

bool supportsTimeDataInterpolation() {
bool supportsTimeDataInterpolation() override {
return false;
}

void initDataInterpolationComponent() {
void initDataInterpolationComponent() override {
throw ALBackendException("ASCII backend does not support time range and time slices operations",LOG);
}

bool supportsTimeRangeOperation() {
bool supportsTimeRangeOperation() override {
return false;
}

Expand Down
10 changes: 8 additions & 2 deletions src/hdf5/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,15 @@ target_compile_definitions( al PRIVATE -DHDF5 )
if(WIN32)
# Use modern CMake targets if available (vcpkg), otherwise legacy variables
if( TARGET hdf5::hdf5-shared )
target_link_libraries( al PRIVATE hdf5::hdf5-shared hdf5::hdf5_hl-shared )
target_link_libraries( al PRIVATE hdf5::hdf5-shared )
if( TARGET hdf5::hdf5_hl-shared )
target_link_libraries( al PRIVATE hdf5::hdf5_hl-shared )
endif()
elseif( TARGET hdf5::hdf5-static )
target_link_libraries( al PRIVATE hdf5::hdf5-static hdf5::hdf5_hl-static )
target_link_libraries( al PRIVATE hdf5::hdf5-static )
if( TARGET hdf5::hdf5_hl-static )
target_link_libraries( al PRIVATE hdf5::hdf5_hl-static )
endif()
else()
# Legacy FindHDF5 module
target_include_directories( al PRIVATE ${HDF5_C_INCLUDE_DIRS} )
Expand Down
6 changes: 3 additions & 3 deletions src/hdf5/hdf5_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,14 @@ class HDF5Backend:public Backend {

void get_occurrences(Context* ctx, const char* ids_name, int** occurrences_list, int* size) override;

bool supportsTimeDataInterpolation() {
bool supportsTimeDataInterpolation() override {
return true;
}

void initDataInterpolationComponent() {
void initDataInterpolationComponent() override {
}

bool supportsTimeRangeOperation() {
bool supportsTimeRangeOperation() override {
return true;
}

Expand Down
6 changes: 3 additions & 3 deletions src/memory_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -674,15 +674,15 @@ class IMAS_CORE_LIBRARY_API MemoryBackend:public Backend

void get_occurrences(Context* ctx, const char* ids_name, int** occurrences_list, int* size) override;

bool supportsTimeDataInterpolation() {
bool supportsTimeDataInterpolation() override {
return false;
}

void initDataInterpolationComponent() {
void initDataInterpolationComponent() override {
throw ALBackendException("Memory backend does not support time range and time slices operations",LOG);
}

bool supportsTimeRangeOperation() {
bool supportsTimeRangeOperation() override {
return false;
}

Expand Down
6 changes: 3 additions & 3 deletions src/uda/uda_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -184,13 +184,13 @@ class IMAS_CORE_LIBRARY_API UDABackend : public Backend

void get_occurrences(Context* ctx, const char* ids_name, int** occurrences_list, int* size) override;

bool supportsTimeDataInterpolation();
bool supportsTimeDataInterpolation() override;

// Do nothing, UDA plugin will need to initDataInterpolationComponent on data backend when it knows which backend
// is being used, i.e. when a URI is given.
void initDataInterpolationComponent() {}
void initDataInterpolationComponent() override {}

bool supportsTimeRangeOperation() {
bool supportsTimeRangeOperation() override {
return this->supportsTimeDataInterpolation();
}

Expand Down
Loading