Bug 2269811
| Summary: | libarrow 15.0.1 seems to break ABI | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Orion Poplawski <orion> |
| Component: | libarrow | Assignee: | Kaleb KEITHLEY <kkeithle> |
| Status: | CLOSED ERRATA | QA Contact: | |
| Severity: | high | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | alekcejk, benson_muite, code, kkeithle, neil |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | libarrow-15.0.2-2.fc41 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2024-03-20 13:14:19 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 2261766 | ||
|
Description
Orion Poplawski
2024-03-16 16:40:36 UTC
Looking just at the main library, it looks like upstream changed some string references to string_view without considering that this would break ABI:
$ fedabipkgdiff --from fc40 libarrow-15.0.1-1.fc41.x86_64.rpm
Comparing the ABI of binaries between libarrow-15.0.0-2.fc40.x86_64.rpm and libarrow-15.0.1-1.fc41.x86_64.rpm:
================ changes of 'libarrow.so.1500.0.0'===============
Functions changes summary: 6 Removed, 0 Changed (11 filtered out), 6 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
6 Removed functions:
[D] 'method bool arrow::KeyValueMetadata::Contains(const std::string&) const' {_ZNK5arrow16KeyValueMetadata8ContainsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
[D] 'method arrow::Status arrow::KeyValueMetadata::Delete(const std::string&)' {_ZN5arrow16KeyValueMetadata6DeleteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
[D] 'method int arrow::KeyValueMetadata::FindKey(const std::string&) const' {_ZNK5arrow16KeyValueMetadata7FindKeyERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
[D] 'method arrow::Result<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > arrow::KeyValueMetadata::Get(const std::string&) const' {_ZNK5arrow16KeyValueMetadata3GetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE}
[D] 'method arrow::Status arrow::KeyValueMetadata::Set(const std::string&, const std::string&)' {_ZN5arrow16KeyValueMetadata3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_}
[D] 'function arrow::Status arrow::compute::internal::FSBFilterExec(arrow::compute::KernelContext*, const arrow::compute::ExecSpan&, arrow::compute::ExecResult*)' {_ZN5arrow7compute8internal13FSBFilterExecEPNS0_13KernelContextERKNS0_8ExecSpanEPNS0_10ExecResultE}
6 Added functions:
[A] 'method bool arrow::KeyValueMetadata::Contains(std::string_view) const' {_ZNK5arrow16KeyValueMetadata8ContainsESt17basic_string_viewIcSt11char_traitsIcEE}
[A] 'method arrow::Status arrow::KeyValueMetadata::Delete(std::string_view)' {_ZN5arrow16KeyValueMetadata6DeleteESt17basic_string_viewIcSt11char_traitsIcEE}
[A] 'method int arrow::KeyValueMetadata::FindKey(std::string_view) const' {_ZNK5arrow16KeyValueMetadata7FindKeyESt17basic_string_viewIcSt11char_traitsIcEE}
[A] 'method arrow::Result<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > arrow::KeyValueMetadata::Get(std::string_view) const' {_ZNK5arrow16KeyValueMetadata3GetB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE}
[A] 'method arrow::Status arrow::KeyValueMetadata::Set(std::string, std::string)' {_ZN5arrow16KeyValueMetadata3SetENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_}
[A] 'function arrow::Status arrow::compute::internal::PrimitiveTakeExec(arrow::compute::KernelContext*, const arrow::compute::ExecSpan&, arrow::compute::ExecResult*)' {_ZN5arrow7compute8internal17PrimitiveTakeExecEPNS0_13KernelContextERKNS0_8ExecSpanEPNS0_10ExecResultE}
================ end of changes of 'libarrow.so.1500.0.0'===============
Most or all of this is due to https://github.com/apache/arrow/commit/91be098b56021b1f9569986b038bd46c3ed53701.
I went ahead and reported this upstream in https://github.com/apache/arrow/issues/40604. This is now affecting F40 due to the update to 15.0.2 in https://bodhi.fedoraproject.org/updates/FEDORA-2024-e075b0f5cf and the buildroot override https://bodhi.fedoraproject.org/overrides/libarrow-15.0.2-1.fc40. FEDORA-2024-ab6fe10b51 (libarrow-15.0.2-2.fc41) has been submitted as an update to Fedora 41. https://bodhi.fedoraproject.org/updates/FEDORA-2024-ab6fe10b51 FEDORA-2024-ab6fe10b51 (libarrow-15.0.2-2.fc41) has been pushed to the Fedora 41 stable repository. If problem still persists, please make note of it in this bug report. digikam build failed with libarrow 15.0.2-2.fc41 https://koji.fedoraproject.org/koji/taskinfo?taskID=115205076 /usr/bin/ld: /usr/lib64/libgdal.so.34: undefined reference to `arrow::KeyValueMetadata::Get[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >) const' /usr/bin/ld: /usr/lib64/libgdal.so.34: undefined reference to `arrow::KeyValueMetadata::Contains(std::basic_string_view<char, std::char_traits<char> >) const' collect2: error: ld returned 1 exit status gdal-3.8.4-4.fc41 rebuilt with libarrow 15.0.1-1.fc41 https://koji.fedoraproject.org/koji/buildinfo?buildID=2422900 Right, it looks like gdal was rebuilt due to the ABI break, and now needs to be re-rebuilt because reverting the ABI break is still an ABI break. There could be others. |