[R-sig-Debian] LTO flags in 4.1.0 Ubuntu 21.04 Makeconf

Dirk Eddelbuettel edd @end|ng |rom deb|@n@org
Wed Jun 2 00:40:58 CEST 2021


Hi Karl,

On 1 June 2021 at 22:22, Karl Dunkle Werner wrote:
| I noticed the Makeconf file that comes with the Ubuntu version of R 4.1.0
| has link-time optimization (LTO) flags enabled. For instance:
| CXX11FLAGS = -g -O2 -ffile-prefix-map=/build/r-base-aXXzqd/r-base-4.1.0=.
| -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat
| -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)

Upstream decision by R Core, see the NEWS entry:

  LINK-TIME OPTIMIZATION on a UNIX-ALIKE:

    * Configuring with flag --enable-lto=R now also uses LTO when
      installing the recommended packages.

    * R CMD INSTALL and R CMD SHLIB have a new flag --use-LTO to use
      LTO when compiling code, for use with R configured with
      --enable-lto=R.  For R configured with --enable-lto, they have
      the new flag --no-use-LTO.

      Packages can opt in or out of LTO compilation _via_ a UseLTO
      field in the DESCRIPTION file.  (As usual this can be overridden
      by the command-line flags.)

| If I understand things correctly, these flags cause a bit of a problem
| trying to install the arrow package, since that package does not want to
| override the CXX11FLAGS,

I doubt that, based on a wee bit of experience with C++, C++11, and all that
based coming up on 15 years with Rcpp, RInside and all that jazz.

| but also does not work with LTO. Setting "UseLTO:
| false" in the package description doesn't seem to work.

That is something you may need to discuss with either R Core upstream (for
the Makeconf), or maybe with the Arrow team for how they build the
package. And there could of course be a bug but I remind you that Arrow
itself is on CRAN.


| Would it be possible to remove the flags -flto=auto and -ffat-lto-objects?

Not likely for the package I ship. I tend to not second guess upstream, and
have followed R Core pretty much without changes to the program for 20 years.

If you think you need a locally modified version I may be able to help you
build one.

Hope this helps,  Dirk

PS As for my experiences with Arrow, well. I will try to remain brief:
 - while I have 25-ish years of experience building for Debian I _could
   never_ build Arrow even as shipped for R; I did file (GitHub) bug reports
   but they went nowhere (and I had no time for signing up for Jira, sorry)
 - this included failure on the "rather unusual" second installation as the
   Arrow build appears to not be entirely truthful by installing ... and then
   not working telling you to reinstall
 - that was generally on Ubuntu 'current at the time', but also on the Debian
   testing machine I use for Rcpp reverse depends (and where I build well
   over 2000 CRAN packages, yet Arrow remains "special")
 - as of Arrow 4.0.0 I can at least succeed at the second stage
but I would be interested to hear how others fared on Debian or Ubuntu systems. 

-- 
https://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org



More information about the R-SIG-Debian mailing list