apache / arrow

Apache Arrow is the universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics
https://arrow.apache.org/
Apache License 2.0
14.53k stars 3.54k forks source link

[CI][Archery] Archery linking should also check for undefined symbols macOS #40965

Open vibhatha opened 7 months ago

vibhatha commented 7 months ago

Describe the enhancement requested

Referring to the original issue filed https://github.com/apache/arrow/issues/40018, splitting up the integration per supported operating systems.

Component(s)

Archery

vibhatha commented 7 months ago

@kou for this one, need to find a solid way to find the paths for the allowed libraries in the system and then find the symbols. This need a bit of an investigation in my end as I haven't found a feasible way yet. Appreciate any pointers if possible. 🙂

kou commented 7 months ago

We can use nm on macOS too. We can use otool -L instead of ldd on macOS:

$ otool -L arrow-dataset-15.0.0/aarch_64/libarrow_dataset_jni.dylib
arrow-dataset-15.0.0/aarch_64/libarrow_dataset_jni.dylib:
    @rpath/libarrow_dataset_jni.dylib (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 2202.0.0)
    /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 61040.61.1)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.12)
    /usr/lib/libcurl.4.dylib (compatibility version 7.0.0, current version 9.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1600.157.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1336.61.1)