From 850b7ab98ffca1ad6f597960f067b0493a2bddd4 Mon Sep 17 00:00:00 2001 From: dvirtz Date: Thu, 10 Jul 2025 16:09:07 +0000 Subject: [PATCH 1/3] arrow: fix turning simd off It's impossible to set an option to `None` as it's interpreted as a string. This change adds a `"none"` option to `simd_level` and `runtime_simd_level` while keeping the old `None` value for backward compatibility. fixes #27886 --- recipes/arrow/all/conanfile.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/recipes/arrow/all/conanfile.py b/recipes/arrow/all/conanfile.py index dfcc5707e0873..4d4b7bfb69f87 100644 --- a/recipes/arrow/all/conanfile.py +++ b/recipes/arrow/all/conanfile.py @@ -36,8 +36,8 @@ class ArrowConan(ConanFile): "filesystem_layer": [True, False], "hdfs_bridgs": [True, False], "plasma": [True, False, "deprecated"], - "simd_level": [None, "default", "sse4_2", "avx2", "avx512", "neon", ], - "runtime_simd_level": [None, "sse4_2", "avx2", "avx512", "max"], + "simd_level": [None, "default", "sse4_2", "avx2", "avx512", "neon", "none"], + "runtime_simd_level": [None, "sse4_2", "avx2", "avx512", "max", "none"], "with_backtrace": [True, False], "with_boost": ["auto", True, False], "with_csv": [True, False], @@ -185,8 +185,8 @@ def requirements(self): self.requires("lz4/1.9.4") if self.options.with_snappy: self.requires("snappy/1.1.9") - if self.options.get_safe("simd_level") != None or \ - self.options.get_safe("runtime_simd_level") != None: + if str(self.options.get_safe("simd_level")).lower() != "none" or \ + str(self.options.get_safe("runtime_simd_level")).lower() != "none": self.requires("xsimd/13.0.0") if self.options.with_zlib: self.requires("zlib/[>=1.2.11 <2]") @@ -536,7 +536,8 @@ def package_info(self): self.cpp_info.components["libarrow"].requires.append("lz4::lz4") if self.options.with_snappy: self.cpp_info.components["libarrow"].requires.append("snappy::snappy") - if self.options.get_safe("simd_level") != None or self.options.get_safe("runtime_simd_level") != None: + if str(self.options.get_safe("simd_level")).lower() != "none" or \ + str(self.options.get_safe("runtime_simd_level")).lower() != "none": self.cpp_info.components["libarrow"].requires.append("xsimd::xsimd") if self.options.with_zlib: self.cpp_info.components["libarrow"].requires.append("zlib::zlib") From 01243f5d3a864e8c3e146d507dbf18463cb34f7e Mon Sep 17 00:00:00 2001 From: dvirtz Date: Fri, 11 Jul 2025 09:55:20 +0000 Subject: [PATCH 2/3] apply review suggestions --- recipes/arrow/all/conanfile.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/arrow/all/conanfile.py b/recipes/arrow/all/conanfile.py index 4d4b7bfb69f87..4df7c62d4138e 100644 --- a/recipes/arrow/all/conanfile.py +++ b/recipes/arrow/all/conanfile.py @@ -36,8 +36,8 @@ class ArrowConan(ConanFile): "filesystem_layer": [True, False], "hdfs_bridgs": [True, False], "plasma": [True, False, "deprecated"], - "simd_level": [None, "default", "sse4_2", "avx2", "avx512", "neon", "none"], - "runtime_simd_level": [None, "sse4_2", "avx2", "avx512", "max", "none"], + "simd_level": ["default", "sse4_2", "avx2", "avx512", "neon", "none"], + "runtime_simd_level": ["sse4_2", "avx2", "avx512", "max", "none"], "with_backtrace": [True, False], "with_boost": ["auto", True, False], "with_csv": [True, False], @@ -185,8 +185,8 @@ def requirements(self): self.requires("lz4/1.9.4") if self.options.with_snappy: self.requires("snappy/1.1.9") - if str(self.options.get_safe("simd_level")).lower() != "none" or \ - str(self.options.get_safe("runtime_simd_level")).lower() != "none": + if self.options.simd_level != "none" or \ + self.options.runtime_simd_level != "none": self.requires("xsimd/13.0.0") if self.options.with_zlib: self.requires("zlib/[>=1.2.11 <2]") @@ -536,8 +536,8 @@ def package_info(self): self.cpp_info.components["libarrow"].requires.append("lz4::lz4") if self.options.with_snappy: self.cpp_info.components["libarrow"].requires.append("snappy::snappy") - if str(self.options.get_safe("simd_level")).lower() != "none" or \ - str(self.options.get_safe("runtime_simd_level")).lower() != "none": + if self.options.simd_level != "none" or \ + self.options.runtime_simd_level != "none": self.cpp_info.components["libarrow"].requires.append("xsimd::xsimd") if self.options.with_zlib: self.cpp_info.components["libarrow"].requires.append("zlib::zlib") From 1df415655b4ffd15436f78f9ae49e3f318d5343d Mon Sep 17 00:00:00 2001 From: dvirtz Date: Fri, 11 Jul 2025 10:01:14 +0000 Subject: [PATCH 3/3] disable invalid ARM64/MSVC system https://arrow.apache.org/docs/developers/cpp/windows.html#building-on-windows-arm64-using-ninja-and-clang --- recipes/arrow/all/conanfile.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/arrow/all/conanfile.py b/recipes/arrow/all/conanfile.py index 4df7c62d4138e..7b5804740d517 100644 --- a/recipes/arrow/all/conanfile.py +++ b/recipes/arrow/all/conanfile.py @@ -252,6 +252,9 @@ def validate(self): if self.options.parquet and not self.options.with_thrift: raise ConanInvalidConfiguration("arrow:parquet requires arrow:with_thrift") + + if self.settings.arch in ["armv8", "armv8.3"] and is_msvc(self): + raise ConanInvalidConfiguration("arrow does not support ARM64 with MSVC compiler") def build_requirements(self): if Version(self.version) >= "20.0.0":