GH-32292: [R][Packaging] Use binaries built on CentOS 7 for Ubuntu < 22.04#34048
GH-32292: [R][Packaging] Use binaries built on CentOS 7 for Ubuntu < 22.04#34048assignUser merged 21 commits intoapache:mainfrom
Conversation
|
@github-actions crossbow submit r-binary-packages |
|
|
This comment was marked as outdated.
This comment was marked as outdated.
|
@github-actions crossbow submit r-binary-packages |
This comment was marked as outdated.
This comment was marked as outdated.
|
@github-actions crossbow submit r-binary-packages |
This comment was marked as outdated.
This comment was marked as outdated.
There was a problem hiding this comment.
How common is it to be on ubuntu and not have pkg-config installed? Does this mean we would require pkg-config in order for the binary to be used?
There was a problem hiding this comment.
How common is it to be on ubuntu and not have pkg-config installed?
Hmm. I'm not sure preference of R users on Ubuntu but I think that users who have GCC also have pkg-config.
But rocker/r-ver:4.0.0 and rocker/r-ver:3.6.3 doesn't have pkg-config. So we need this.
Does this mean we would require pkg-config in order for the binary to be used?
Yes.
We can fallback to source build when a user doesn't have pkg-config:
diff --git a/r/configure b/r/configure
index ff6a9dacc4..08fa58d327 100755
--- a/r/configure
+++ b/r/configure
@@ -176,6 +176,7 @@ else
if [ "${ARROW_DEPENDENCY_SOURCE}" = "AUTO" ] && \
[ "${PKG_CONFIG_AVAILABLE}" = "false" ]; then
export ARROW_DEPENDENCY_SOURCE=BUNDLED
+ export LIBARROW_BINARY=false
echo "**** pkg-config not installed, setting ARROW_DEPENDENCY_SOURCE=BUNDLED"
fi
Do you want me to add this change to this PR?
There was a problem hiding this comment.
I'd rather ship a binary that just works. Would it be terrible to grep for the CXX11_ABI in arrow.pc and add it to PKG_CFLAGS?
If we were to set LIBARROW_BINARY=false if no pkg-config, it should be in its own "${PKG_CONFIG_AVAILABLE}" = "false" check, not connected to whatever the value of ARROW_DEPENDENCY_SOURCE is since that's about building libarrow from source.
There was a problem hiding this comment.
I'd rather ship a binary that just works. Would it be terrible to grep for the CXX11_ABI in arrow.pc and add it to
PKG_CFLAGS?
It will work. I've added the logic but I'm afraid of increasing ad-hoc logics again.
If we were to set
LIBARROW_BINARY=falseif no pkg-config, it should be in its own"${PKG_CONFIG_AVAILABLE}" = "false"check, not connected to whatever the value ofARROW_DEPENDENCY_SOURCEis since that's about building libarrow from source.
It makes sense.
|
We can't use the https://github.com/ursacomputing/crossbow/actions/runs/4103886242/jobs/7078891973#step:12:266
FYI: Here are solution candidates:
I'll try 3. first but is there any preference? |
|
If upgrading aws-sdk-cpp solves it, great, but doesn't google-cloud also require openssl? Could we bundle openssl rather than require it from the system? I think the answer from last time I asked this was "no because security", but also as I understand it, the python wheels include openssl in them. |
0b8afc6 to
34c5ec7
Compare
|
@github-actions crossbow submit r-binary-packages |
This comment was marked as outdated.
This comment was marked as outdated.
|
Upgrading aws-sdk-cpp doesn't solve the problem.
Hmm. I want to stop bundling OpenSSL in wheel because we can't release a fixed version in a timely manner for now. Anyway, I try bundling OpenSSL. |
|
@github-actions crossbow submit r-binary-packages |
This comment was marked as outdated.
This comment was marked as outdated.
|
@github-actions crossbow submit r-binary-packages |
This comment was marked as outdated.
This comment was marked as outdated.
|
@github-actions crossbow submit r-binary-packages |
This comment was marked as outdated.
This comment was marked as outdated.
|
We can't use static linking for OpenSSL: https://github.com/ursacomputing/crossbow/actions/runs/4140935566/jobs/7160057196#step:6:1857 |
This reverts commit 2f8b11d2c93b777883ff1214e4fd5bc2ee7e6367.
This reverts commit ed561d53b0e03a71bcf100af4e52f216fc6f157a.
07452f9 to
514f27c
Compare
|
@github-actions crossbow submit -g cpp r-binary-packages |
This comment was marked as outdated.
This comment was marked as outdated.
|
@github-actions crossbow submit -g cpp r-binary-packages |
|
Revision: b7dd9a4 Submitted crossbow builds: ursacomputing/crossbow @ actions-ce74ddcb8c |
|
@github-actions crossbow submit r-binary-packages |
|
Revision: 955aa34 Submitted crossbow builds: ursacomputing/crossbow @ actions-0f2d95fc8a
|
|
I'll merge this tomorrow if nobody objects it. |
|
(I merged now so the change affects the next packaging-nightly run) |
|
Benchmark runs are scheduled for baseline = 5b49d0f and contender = 9288275. 9288275 is a master commit associated with this PR. Results will be available as each benchmark for each run completes. |
…ntu < 22.04 (apache#34048) ### Rationale for this change Binaries built on CentOS 7 uses `_GLIBCXX_USE_CXX11_ABI=0`. So we can't use them on Ubuntu 20.04 because Ubuntu 20.04 uses `_GLIBCXX_USE_CXX11_ABI=1`. If we use them on Ubuntu 20.04, our R package must use `_GLIBCXX_USE_CXX11_ABI=0` too. There is another problem for Ubuntu 20.04. CentOS 7 uses OpenSSL 1.0 but Ubuntu 20.04 uses OpenSSL 1.1. OpenSSL 1.0 and 1.1 are incompatible. So we can't use binaries built on CentOS 7. We need binaries for OpenSSL 1.0 and OpenSSL 1.1. We can't use the same binaries on CentOS 7 (OpenSSL 1.0) and Ubuntu 20.04 (OpenSSL 1.1). ### What changes are included in this PR? This changes add `-D_GLIBCXX_USE_CXX11_ABI=0` to `Cflags` in `arrow.pc`. Our R package uses `Cflags` in `arrow.pc`. So users don't need to specify `-D_GLIBCXX_USE_CXX11_ABI=0` explicitly. This changes replace binaries built on Ubuntu 18.04 with binaries built on CentOS 7 with OpenSSL 1.1. (The "ubuntu-18.04" binaries are replaced with the "linux-openssl-1.1" binaries.) The "centos-7" binaries are renamed to the "linux-openssl-1.0" binaries. The "ubuntu-22.04" binaries are renamed to the "linux-openssl-3.0" binaries. ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * Closes: apacheGH-33091 * Closes: apache#32292 Authored-by: Sutou Kouhei <kou@clear-code.com> Signed-off-by: Jacob Wujciak-Jens <jacob@wujciak.de>
Rationale for this change
Binaries built on CentOS 7 uses
_GLIBCXX_USE_CXX11_ABI=0. So we can't use them on Ubuntu 20.04 becauseUbuntu 20.04 uses
_GLIBCXX_USE_CXX11_ABI=1. If we use them on Ubuntu 20.04, our R package must use_GLIBCXX_USE_CXX11_ABI=0too.There is another problem for Ubuntu 20.04. CentOS 7 uses OpenSSL 1.0 but Ubuntu 20.04 uses OpenSSL 1.1.
OpenSSL 1.0 and 1.1 are incompatible. So we can't use binaries built on CentOS 7. We need binaries for OpenSSL
1.0 and OpenSSL 1.1. We can't use the same binaries on CentOS 7 (OpenSSL 1.0) and Ubuntu 20.04 (OpenSSL 1.1).
What changes are included in this PR?
This changes add
-D_GLIBCXX_USE_CXX11_ABI=0toCflagsinarrow.pc. Our R package usesCflagsinarrow.pc. So users don't need to specify-D_GLIBCXX_USE_CXX11_ABI=0explicitly.This changes replace binaries built on Ubuntu 18.04 with binaries built on CentOS 7 with OpenSSL 1.1.
(The "ubuntu-18.04" binaries are replaced with the "linux-openssl-1.1" binaries.)
The "centos-7" binaries are renamed to the "linux-openssl-1.0" binaries.
The "ubuntu-22.04" binaries are renamed to the "linux-openssl-3.0" binaries.
Are these changes tested?
Yes.
Are there any user-facing changes?
No.