Skip to content

Conversation

@hiroyuki-sato
Copy link
Collaborator

@hiroyuki-sato hiroyuki-sato commented Jun 10, 2025

Rationale for this change

Apache Arrow 19.0.1 available in the conan repository. Need synchronize upstream.

What changes are included in this PR?

  • execute ci/conan/merge_upstream.sh
  • Resolve merge failed files. (Both files contains license headers. So patch failed)
    • ci/conan/all/test_package/CMakeLists.txt
    • ci/conan/all/conanfile.py

Are these changes tested?

Yes.

Are there any user-facing changes?

No.

@github-actions
Copy link

⚠️ GitHub issue #46757 has been automatically assigned in GitHub to PR creator.

@github-actions github-actions bot added the awaiting review Awaiting review label Jun 10, 2025
@hiroyuki-sato
Copy link
Collaborator Author

./merge_upstream.sh /tmp/conan-center-index/
patching file 'all/conandata.yml'
patching file 'all/conanfile.py'
1 out of 10 hunks failed--saving rejects to 'all/conanfile.py.rej'
patching file 'all/patches/19.0.1-0001-fix-cmake.patch'
patching file 'all/patches/19.0.1-0002-fix-downloaded-mimalloc.patch'
patching file 'all/test_package/CMakeLists.txt'
1 out of 1 hunks failed--saving rejects to 'all/test_package/CMakeLists.txt.rej'
patching file config.yml

git diff a9b270f9d2052e193ce3c0a6c4e2fda0b0ac5ade..1729c3c2c3b0e9d058821fa00e8a54154415efc6 recipes/arrow/

diff --git a/recipes/arrow/all/conandata.yml b/recipes/arrow/all/conandata.yml
index f979a4480..a370e59e0 100644
--- a/recipes/arrow/all/conandata.yml
+++ b/recipes/arrow/all/conandata.yml
@@ -1,4 +1,7 @@
 sources:
+  "19.0.1":
+    url: "https://www.apache.org/dyn/closer.lua/arrow/arrow-19.0.1/apache-arrow-19.0.1.tar.gz?action=download"
+    sha256: "acb76266e8b0c2fbb7eb15d542fbb462a73b3fd1e32b80fad6c2fafd95a51160"
   "18.1.0":
     url: "https://www.apache.org/dyn/closer.lua/arrow/arrow-18.1.0/apache-arrow-18.1.0.tar.gz?action=download"
     sha256: "2dc8da5f8796afe213ecc5e5aba85bb82d91520eff3cf315784a52d0fa61d7fc"
@@ -18,6 +21,13 @@ sources:
     url: "https://www.apache.org/dyn/closer.lua/arrow/arrow-14.0.2/apache-arrow-14.0.2.tar.gz?action=download"
     sha256: "1304dedb41896008b89fe0738c71a95d9b81752efc77fa70f264cb1da15d9bc2"
 patches:
+  "19.0.1":
+    - patch_file: "patches/19.0.1-0001-fix-cmake.patch"
+      patch_description: "use cci package"
+      patch_type: "conan"
+    - patch_file: "patches/19.0.1-0002-fix-downloaded-mimalloc.patch"
+      patch_description: "use cci package"
+      patch_type: "conan"
   "18.1.0":
     - patch_file: "patches/18.0.0-0001-fix-cmake.patch"
       patch_description: "use cci package"
diff --git a/recipes/arrow/all/conanfile.py b/recipes/arrow/all/conanfile.py
index be8bacf5a..7aef9d284 100644
--- a/recipes/arrow/all/conanfile.py
+++ b/recipes/arrow/all/conanfile.py
@@ -1,3 +1,5 @@
+import os
+
 from conan import ConanFile
 from conan.errors import ConanInvalidConfiguration, ConanException
 from conan.tools.build import check_min_cppstd, cross_building
@@ -6,11 +8,9 @@ from conan.tools.files import apply_conandata_patches, copy, export_conandata_pa
 from conan.tools.microsoft import is_msvc, is_msvc_static_runtime
 from conan.tools.scm import Version
 
-import os
-import glob
-
 required_conan_version = ">=2.1.0"
 
+
 class ArrowConan(ConanFile):
     name = "arrow"
     description = "Apache Arrow is a cross-language development platform for in-memory data"
@@ -80,7 +80,7 @@ class ArrowConan(ConanFile):
         "dataset_modules": False,
         "deprecated": True,
         "encryption": False,
-        "filesystem_layer": False,
+        "filesystem_layer": True,
         "hdfs_bridgs": False,
         "plasma": "deprecated",
         "simd_level": "default",
@@ -120,7 +120,7 @@ class ArrowConan(ConanFile):
     def _min_cppstd(self):
         # arrow >= 10.0.0 requires C++17.
         # https://github.com/apache/arrow/pull/13991
-        return "11" if Version(self.version) < "10.0.0" else "17"
+        return "17"
 
     def export_sources(self):
         export_conandata_patches(self)
@@ -129,10 +129,10 @@ class ArrowConan(ConanFile):
     def config_options(self):
         if self.settings.os == "Windows":
             del self.options.fPIC
-        if Version(self.version) < "8.0.0":
-            del self.options.substrait
         if is_msvc(self):
             self.options.with_boost = True
+        if Version(self.version) >= "19.0.0":
+            self.options.with_mimalloc = True
 
     def configure(self):
         if self.options.shared:
@@ -187,9 +187,6 @@ class ArrowConan(ConanFile):
             self.requires("snappy/1.1.9")
         if self.options.get_safe("simd_level") != None or \
                 self.options.get_safe("runtime_simd_level") != None:
-            if Version(self.version) < 8:
-                self.requires("xsimd/9.0.1")
-            else:
                 self.requires("xsimd/13.0.0")
         if self.options.with_zlib:
             self.requires("zlib/[>=1.2.11 <2]")
@@ -231,15 +228,6 @@ class ArrowConan(ConanFile):
         if self.settings.compiler.get_safe("cppstd"):
             check_min_cppstd(self, self._min_cppstd)
 
-        if (
-            Version(self.version) < "10.0.0"
-            and self.settings.compiler == "clang"
-            and Version(self.settings.compiler.version) < "3.9"
-        ):
-            raise ConanInvalidConfiguration(
-                f"{self.ref} requires C++11, which needs at least clang-3.9"
-            )
-
         if self.options.get_safe("skyhook", False):
             raise ConanInvalidConfiguration("CCI has no librados recipe (yet)")
         if self.options.with_cuda:
@@ -383,28 +371,11 @@ class ArrowConan(ConanFile):
         tc.generate()
 
         deps = CMakeDeps(self)
+        deps.set_property("mimalloc", "cmake_target_name", "mimalloc::mimalloc")
         deps.generate()
 
     def _patch_sources(self):
         apply_conandata_patches(self)
-        if Version(self.version) < "10.0.0":
-            for filename in glob.glob(os.path.join(self.source_folder, "cpp", "cmake_modules", "Find*.cmake")):
-                if os.path.basename(filename) not in [
-                    "FindArrow.cmake",
-                    "FindArrowAcero.cmake",
-                    "FindArrowCUDA.cmake",
-                    "FindArrowDataset.cmake",
-                    "FindArrowFlight.cmake",
-                    "FindArrowFlightSql.cmake",
-                    "FindArrowFlightTesting.cmake",
-                    "FindArrowPython.cmake",
-                    "FindArrowPythonFlight.cmake",
-                    "FindArrowSubstrait.cmake",
-                    "FindArrowTesting.cmake",
-                    "FindGandiva.cmake",
-                    "FindParquet.cmake",
-                ]:
-                    os.remove(filename)
 
     def build(self):
         self._patch_sources()
@@ -422,29 +393,6 @@ class ArrowConan(ConanFile):
         rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig"))
         rmdir(self, os.path.join(self.package_folder, "share"))
 
-        cmake_suffix = "shared" if self.options.shared else "static"
-
-        alias_map = { f"Arrow::arrow_{cmake_suffix}": f"arrow::arrow_{cmake_suffix}" }
-
-        if self.options.parquet:
-            alias_map[f"Parquet::parquet_{cmake_suffix}"] = f"arrow::parquet_{cmake_suffix}"
-
-        if self.options.get_safe("substrait"):
-            alias_map[f"Arrow::arrow_substrait_{cmake_suffix}"] = f"arrow::arrow_substrait_{cmake_suffix}"
-
-        if self.options.acero:
-            alias_map[f"Arrow::arrow_acero_{cmake_suffix}"] = f"arrow::arrow_acero_{cmake_suffix}"
-
-        if self.options.gandiva:
-            alias_map[f"Gandiva::gandiva_{cmake_suffix}"] = f"arrow::gandiva_{cmake_suffix}"
-
-        if self.options.with_flight_rpc:
-            alias_map[f"ArrowFlight::arrow_flight_sql_{cmake_suffix}"] = f"arrow::arrow_flight_sql_{cmake_suffix}"
-
-    @property
-    def _module_subfolder(self):
-        return os.path.join("lib", "cmake")
-
     def package_info(self):
         # FIXME: fix CMake targets of components
 
@@ -514,6 +462,8 @@ class ArrowConan(ConanFile):
             self.cpp_info.components["dataset"].libs = ["arrow_dataset"]
             if self.options.parquet:
                 self.cpp_info.components["dataset"].requires = ["libparquet"]
+            if self.options.acero and Version(self.version) >= "19.0.0":
+                self.cpp_info.components["dataset"].requires = ["libacero"]
 
         if self.options.cli and (self.options.with_cuda or self.options.with_flight_rpc or self.options.parquet):
             binpath = os.path.join(self.package_folder, "bin")
diff --git a/recipes/arrow/all/patches/19.0.1-0001-fix-cmake.patch b/recipes/arrow/all/patches/19.0.1-0001-fix-cmake.patch
new file mode 100644
index 000000000..af7e309cf
--- /dev/null
+++ b/recipes/arrow/all/patches/19.0.1-0001-fix-cmake.patch
@@ -0,0 +1,57 @@
+diff --git a/cpp/cmake_modules/FindThriftAlt.cmake b/cpp/cmake_modules/FindThriftAlt.cmake
+index 98a706d..edf195e 100644
+--- a/cpp/cmake_modules/FindThriftAlt.cmake
++++ b/cpp/cmake_modules/FindThriftAlt.cmake
+@@ -45,22 +45,20 @@ endif()
+ #   * https://github.com/apache/thrift/pull/2725
+ #   * https://github.com/apache/thrift/pull/2726
+ #   * https://github.com/conda-forge/thrift-cpp-feedstock/issues/68
+-if(NOT WIN32)
+-  set(find_package_args "")
+-  if(ThriftAlt_FIND_VERSION)
+-    list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
+-  endif()
+-  if(ThriftAlt_FIND_QUIETLY)
+-    list(APPEND find_package_args QUIET)
+-  endif()
+-  find_package(Thrift ${find_package_args})
+-  if(Thrift_FOUND)
+-    set(ThriftAlt_FOUND TRUE)
+-    add_executable(thrift::compiler IMPORTED)
+-    set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
+-                                                      "${THRIFT_COMPILER}")
+-    return()
+-  endif()
++set(find_package_args "")
++if(ThriftAlt_FIND_VERSION)
++  list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
++endif()
++if(ThriftAlt_FIND_QUIETLY)
++  list(APPEND find_package_args QUIET)
++endif()
++find_package(Thrift ${find_package_args})
++if(Thrift_FOUND)
++  set(ThriftAlt_FOUND TRUE)
++  add_executable(thrift::compiler IMPORTED)
++  set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
++                                                    "${THRIFT_COMPILER}")
++  return()
+ endif()
+ 
+ function(extract_thrift_version)
+diff --git a/cpp/src/parquet/size_statistics.cc b/cpp/src/parquet/size_statistics.cc
+index 1ce6c937a..e45eef3f0 100644
+--- a/cpp/src/parquet/size_statistics.cc
++++ b/cpp/src/parquet/size_statistics.cc
+@@ -18,9 +18,11 @@
+ #include "parquet/size_statistics.h"
+
+ #include <algorithm>
++#include <array>
+ #include <numeric>
+ #include <ostream>
+ #include <string_view>
++#include <vector>
+
+ #include "arrow/util/logging.h"
+ #include "parquet/exception.h"
diff --git a/recipes/arrow/all/patches/19.0.1-0002-fix-downloaded-mimalloc.patch b/recipes/arrow/all/patches/19.0.1-0002-fix-downloaded-mimalloc.patch
new file mode 100644
index 000000000..46725ea20
--- /dev/null
+++ b/recipes/arrow/all/patches/19.0.1-0002-fix-downloaded-mimalloc.patch
@@ -0,0 +1,15 @@
+diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
+index abfe6d2..cc0f3c5 100644
+--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
++++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
+@@ -2259,6 +2259,10 @@ endif()
+ # mimalloc - Cross-platform high-performance allocator, from Microsoft
+ 
+ if(ARROW_MIMALLOC)
++  find_package(mimalloc REQUIRED CONFIG)
++endif()
++
++if(0)
+   if(NOT ARROW_ENABLE_THREADING)
+     message(FATAL_ERROR "Can't use mimalloc with ARROW_ENABLE_THREADING=OFF")
+   endif()
diff --git a/recipes/arrow/all/test_package/CMakeLists.txt b/recipes/arrow/all/test_package/CMakeLists.txt
index bd890a4dd..62e6d3f92 100644
--- a/recipes/arrow/all/test_package/CMakeLists.txt
+++ b/recipes/arrow/all/test_package/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.8)
+cmake_minimum_required(VERSION 3.15)
 project(test_package LANGUAGES CXX)
 
 find_package(Arrow REQUIRED CONFIG)
diff --git a/recipes/arrow/config.yml b/recipes/arrow/config.yml
index 243d0f929..6c7e62f82 100644
--- a/recipes/arrow/config.yml
+++ b/recipes/arrow/config.yml
@@ -1,4 +1,6 @@
 versions:
+  "19.0.1":
+    folder: all
   "18.1.0":
     folder: all
   "18.0.0":

cat all/test_package/CMakeLists.txt.rej

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.8)
+cmake_minimum_required(VERSION 3.15)
 project(test_package LANGUAGES CXX)

 find_package(Arrow REQUIRED CONFIG)

cat all/conanfile.py.rej

@@ -1,3 +1,5 @@
+import os
+
 from conan import ConanFile
 from conan.errors import ConanInvalidConfiguration, ConanException
 from conan.tools.build import check_min_cppstd, cross_building

@hiroyuki-sato
Copy link
Collaborator Author

@github-actions crossbow submit -g conan

@github-actions
Copy link

Revision: ce4e7fb3233eb9537cbbacdb57edfb5f858aed02

Submitted crossbow builds: ursacomputing/crossbow @ actions-fa68a234cc

Task Status
conan-maximum GitHub Actions
conan-minimum GitHub Actions

@hiroyuki-sato hiroyuki-sato force-pushed the topic/sync-upstream-conan branch from ce4e7fb to e8680a0 Compare June 10, 2025 02:46
@hiroyuki-sato
Copy link
Collaborator Author

@github-actions crossbow submit -g conan

@github-actions
Copy link

Revision: e8680a0

Submitted crossbow builds: ursacomputing/crossbow @ actions-d6d42a5019

Task Status
conan-maximum GitHub Actions
conan-minimum GitHub Actions

@kou
Copy link
Member

kou commented Jun 12, 2025

Could you fix lint errors?

@github-actions github-actions bot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Jun 12, 2025
@github-actions github-actions bot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 12, 2025
@hiroyuki-sato
Copy link
Collaborator Author

I added Copyright (c) 2025 Conan.io as copyright year. Because this file was created Fed/2025
https://github.com/conan-io/conan-center-index/commits/master/recipes/arrow/all/patches/19.0.1-0001-fix-cmake.patch

@assignUser
Copy link
Member

There are some additional changes in the PR for 20.0.0: conan-io/conan-center-index#27311
Maybe it makes sense to add them too?

@hiroyuki-sato
Copy link
Collaborator Author

@assignUser Thanks. It seems that the PR for 20.0.0 is not merge yet.
I will update this PR if this the PR for 20.0 merged before this PR merge.
Otherwise, I'll create new one later.

Copy link
Member

@kou kou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@kou kou merged commit 196cde3 into apache:main Jun 15, 2025
13 of 14 checks passed
@kou kou removed the awaiting change review Awaiting change review label Jun 15, 2025
@github-actions github-actions bot added the awaiting merge Awaiting merge label Jun 15, 2025
@hiroyuki-sato hiroyuki-sato deleted the topic/sync-upstream-conan branch June 16, 2025 00:34
@conbench-apache-arrow
Copy link

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 196cde3.

There were 122 benchmark results with an error:

There were no benchmark performance regressions. 🎉

The full Conbench report has more details.

alinaliBQ pushed a commit to Bit-Quill/arrow that referenced this pull request Jun 17, 2025
…ache#46758)

### Rationale for this change

Apache Arrow 19.0.1 available in the conan repository. Need synchronize upstream.

### What changes are included in this PR?

* execute `ci/conan/merge_upstream.sh`
* Resolve merge failed files. (Both files contains license headers. So patch failed)
  * `ci/conan/all/test_package/CMakeLists.txt`
  * `ci/conan/all/conanfile.py`

### Are these changes tested?

Yes.

### Are there any user-facing changes?

No.
* GitHub Issue: apache#46757

Lead-authored-by: Hiroyuki Sato <[email protected]>
Co-authored-by: Sutou Kouhei <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting merge Awaiting merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants