Closed glin closed 2 months ago
Heads up @stevenolen, this will change the Ubuntu 20 builds but it should not break anything on Cloud. This reverts the Ubuntu 20 R binary to how it was before, linking to libblas.so
, which should still be present on those images.
FWIW, 22.04 has libopenblas-base
, and so do the Debian Dockerfile
s.
@stevenolen Yes, new R versions will continue to work either with libopenblas-dev
or without libopenblas-dev
. Having OpenBLAS there is better since it's faster than the default BLAS, but I think you do need to keep it anyway for the existing projects that have packages linked directly to it. Removing libopenblas-dev
will probably break environments created in the last few months, and also have issues with using the PPM binaries with this issue in the last few months.
So no action required, but it'd still be good to keep an eye out when this deploys.
@gaborcsardi Ah yeah, there do seem to be inconsistencies with the OpenBLAS package names across images. Apparently libopenblas-base
was an old package that just aliases to libopenblas0
now, which defaults to bringing in libopenblas0-pthread
. Ubuntu 24 looks fine, but I can switch the package name in the Debian 12 image for future copy-paste updates.
@stevenolen Rebuilding all the Ubuntu 20 binaries for production now, so they should be updated by tomorrow.
Issue reported by @dpastoor about some Package Manager binary packages failing to load on Ubuntu 20, like RcppArmadillo.
When we switched the Ubuntu 20 builds to use OpenBLAS once again (https://github.com/rstudio/r-builds/pull/215), this inadvertently changed R to link against OpenBLAS instead of the generic
libblas.so
that all Ubuntu builds should be linking against. The genericlibblas.so
is what allows BLAS libraries to be freely swapped on Ubuntu/Debian without breaking binaries that use it.So Package Manager binaries that use BLAS are now broken for anyone that installed R on Ubuntu 20 before May 2024. The workaround would be to manually install OpenBLAS via
apt install libopenblas0-pthread
.This was also the root cause of the Cloud issue from a few months back. Switching the BLAS dependency to OpenBLAS shouldn't have actually changed what R linked to and broken anything. I just didn't realize this back then.
So currently, Ubuntu 20 R links to
libopenblas.so
:This is what R should be linking to instead, from the Ubuntu 22/24 builds:
The fix was to remove the development package for OpenBLAS. Apparently if both OpenBLAS and default BLAS dev headers are present, R will choose OpenBLAS first. Alternatively we can explictly specify the linker flags via
--with-blas=-lblas
I think, but I didn't want to change too much.I've added a comment in the latest Ubuntu dockerfile to document this for the future.