From 107f33fe97f309ef6651c57143602432c0525f70 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Fri, 17 Jul 2026 09:08:52 -0400 Subject: [PATCH] arrow: add mimalloc variant --- repos/spack_repo/builtin/packages/arrow/package.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/repos/spack_repo/builtin/packages/arrow/package.py b/repos/spack_repo/builtin/packages/arrow/package.py index 02e503380ca..ef6eef9e693 100644 --- a/repos/spack_repo/builtin/packages/arrow/package.py +++ b/repos/spack_repo/builtin/packages/arrow/package.py @@ -121,6 +121,11 @@ class Arrow(CMakePackage, CudaPackage): variant("ipc", default=True, description="Build the Arrow IPC extensions") variant("jemalloc", default=False, description="Build the Arrow jemalloc-based allocator") variant("lz4", default=False, description="Build support for lz4 compression") + variant( + "mimalloc", + default=True, + description="Build the Arrow mimalloc-based allocator", + ) variant("orc", default=False, description="Build integration with Apache ORC") variant("parquet", default=False, description="Build Parquet interface") variant("python", default=False, description="Build Python interface") @@ -174,8 +179,14 @@ def cmake_args(self): args.append(self.define("ARROW_USE_SSE", "ON")) # https://github.com/apache/arrow/issues/47790 - if self.spec.satisfies("%oneapi@2025:"): + # mimalloc is always vendored (no system lookup); Arrow downloads its source + # via FetchContent at build time, which fails on air-gapped compute nodes. + # The ~mimalloc variant allows disabling it for such environments. + # Note: oneapi@2025: also has a compiler bug requiring MIMALLOC=OFF regardless. + if self.spec.satisfies("%oneapi@2025:") or self.spec.satisfies("~mimalloc"): args.append(self.define("ARROW_MIMALLOC", "OFF")) + else: + args.append(self.define_from_variant("ARROW_MIMALLOC", "mimalloc")) args.append(self.define_from_variant("ARROW_COMPUTE", "compute")) args.append(self.define_from_variant("ARROW_CSV", "csv"))