[ https://issues.apache.org/jira/browse/ARROW-11460?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Neal Richardson updated ARROW-11460: ------------------------------------ Description: We currently vendor/bundle all compression libraries and have them disabled in the default build. This is reliable, but it would be nice to use system libraries if they're present. It's not as simple as setting {{ARROW_DEPENDENCY_SOURCE=AUTO}} because we have to know if we're using them in order to set the right `-lwhatever` flags in the R package build (see ARROW-9303 for what happens if you don't). ARROW-6312 should now track everything we need in the *.pc files, so if we can get that information in our arrow C++ build, we should be able to use AUTO. Steps/tasks: * Make ARROW_DEPENDENCY_SOURCE configurable by env var in build_arrow_static.sh but don't change the default (we want this to be opt-in for this release, can change the default for the next release) * If ARROW_DEPENDENCY_SOURCE=AUTO, we'll need to get the -l flags from the build. The *right* way is with pkg-config (as Kou showed), so if we want to use it, we'll have to check that pkg-config is installed before allowing AUTO. Then after doing the C++ build, call pkg-config on the install directory to set the PKG_LIBS. This probably needs to be done from r/configure because that's where that env var is set. Alternatively, we could try to grep/sed it from the *.pc files. * Possibly add the change Kou suggested at https://github.com/apache/arrow/pull/10404#issuecomment-871034191 to handle the case where libs were built outside the R package installation (though we should doublecheck what {{--static}} does, we don't want this to only work for a static Arrow C++ build, this should also work for shared libraries here) was: We vendor/bundle all compression libraries and have them disabled in the default build. This is reliable, but it would be nice to use system libraries if they're present. It's not as simple as setting {{ARROW_DEPENDENCY_SOURCE=AUTO}} because we have to know if we're using them in order to set the right `-lwhatever` flags in the R package build (see ARROW-9303 for what happens if you don't). Maybe these can be determined from the C++ build/cmake output rather than detected outside the build (but this may require ARROW-6312). > [R] Use system libraries if present on Linux > -------------------------------------------- > > Key: ARROW-11460 > URL: https://issues.apache.org/jira/browse/ARROW-11460 > Project: Apache Arrow > Issue Type: New Feature > Components: R > Reporter: Neal Richardson > Priority: Major > > We currently vendor/bundle all compression libraries and have them disabled > in the default build. This is reliable, but it would be nice to use system > libraries if they're present. > It's not as simple as setting {{ARROW_DEPENDENCY_SOURCE=AUTO}} because we > have to know if we're using them in order to set the right `-lwhatever` flags > in the R package build (see ARROW-9303 for what happens if you don't). > ARROW-6312 should now track everything we need in the *.pc files, so if we > can get that information in our arrow C++ build, we should be able to use > AUTO. > Steps/tasks: > * Make ARROW_DEPENDENCY_SOURCE configurable by env var in > build_arrow_static.sh but don't change the default (we want this to be opt-in > for this release, can change the default for the next release) > * If ARROW_DEPENDENCY_SOURCE=AUTO, we'll need to get the -l flags from the > build. The *right* way is with pkg-config (as Kou showed), so if we want to > use it, we'll have to check that pkg-config is installed before allowing > AUTO. Then after doing the C++ build, call pkg-config on the install > directory to set the PKG_LIBS. This probably needs to be done from > r/configure because that's where that env var is set. Alternatively, we could > try to grep/sed it from the *.pc files. > * Possibly add the change Kou suggested at > https://github.com/apache/arrow/pull/10404#issuecomment-871034191 to handle > the case where libs were built outside the R package installation (though we > should doublecheck what {{--static}} does, we don't want this to only work > for a static Arrow C++ build, this should also work for shared libraries here) -- This message was sent by Atlassian Jira (v8.3.4#803005)