ci: resolve Arrow and Parquet from conda-forge on Unix legs - #853
ci: resolve Arrow and Parquet from conda-forge on Unix legs#853abnobdoss wants to merge 5 commits into
Conversation
c7093cd to
a1267a7
Compare
|
Sorry for the late review! Could you help rebase it? We have recently upgraded arrow to use 25.0.0. |
|
Is it possible to fix the Windows CI to leverage it? We should also leave at least one CI job to use bundled build to make sure it does not break. |
a1267a7 to
36829ea
Compare
36829ea to
9addcb4
Compare
|
Thanks for the review, @wgtmac. Apologies for the delay getting back to this. The branch has been rebased onto Arrow 25.0.0, and I've incorporated the Hive and C++ linter conversions from #854. Builds that meet the intended outcome (build types are unchanged):
Open exceptions:
More crucially, although this speeds up builds and reduces reliance on warm caches, the extra exceptions above feel like they make CI harder to maintain. I'm leaning toward dropping this change for now because I don't see a simple way to preserve coverage without adding additional complexity to the CI which is already slightly complex. What do you think: should we continue pursuing this change or drop it? |
Part of #799 (Cutting CI build times: prebuilt Arrow and build configuration). This is the conda-forge Arrow piece, Unix legs only.
What
Adds
.github/actions/setup-conda-arrow, a composite action that installslibarrowandlibparquetfrom conda-forge and exportsCMAKE_PREFIX_PATHand the loader path.Used on the Unix legs that build Arrow from source today: the
ubuntuandmacosjobs in Test, ASAN/UBSAN, SQL Catalog's non-Windows slices, and the AWS system-SDK slice.Why not the rest
Windows stays vendored because conda-forge only ships Release builds, so a Debug consumer would hit a CRT mismatch (
/MDdvs/MD). That is a packaging limitation rather than something to sequence around.Hive also stays vendored, since prebuilt Arrow exports no
thrift::thrifttarget andiceberg_hiverequires one. I plan to raise that as a follow-up PR.The AWS bundled-SDK slices cannot use conda at all. Bundling makes Arrow build the AWS SDK into its own
arrow_bundled_dependenciesarchive, and that only exists when Arrow is built from source, so only the system-SDK slice is converted. The Meson legs are untouched because they do not use Arrow.Notes
install-arrow.shreadsICEBERG_ARROW_BUILD_VERSIONfromIcebergThirdpartyToolchain.cmakeinstead of repeating the version, so bumping the vendored Arrow moves the conda legs with it. The pin is exact (libarrow==24.0.0), since conda treats=as a prefix match and patch releases do get published.ICEBERG_REQUIRE_SYSTEM_ARROW=ONtellsbuild_iceberg.shto fail the leg if Arrow was built from source anyway. That check is needed becausefetchcontent_declare(VendoredArrow ...)passesFIND_PACKAGE_ARGS: a failedfind_packagefalls back to a source build with no warning, and the leg would still pass.Validation
Converted legs go from 931 to 596 compile requests, and the rest are unchanged.
All 20 checks pass on the fork with the guard armed, so a green run does mean conda Arrow was resolved. Upstream reports the checks as skipped rather than passing, because every job is gated on
draft == false.