From woo@k@r@ @end|ng |rom gm@||@com  Thu May 23 23:24:26 2019
From: woo@k@r@ @end|ng |rom gm@||@com (Kara Woo)
Date: Thu, 23 May 2019 14:24:26 -0700
Subject: [Rd] Possible bug when finding shared libraries during staged
 installation
Message-ID: <CAEvqV34wSchVg+YW57khWh7NffGOyCeYd5PbmC+1x5OUZk-jRQ@mail.gmail.com>

Hi all,

With the new staged installation, it seems that R CMD INSTALL sometimes
fails on macOS due to these lines [1] when sapply() returns a list. The
x13binary package has an example [2], reproducible with the following steps:

$ git clone git at github.com:x13org/x13binary.git && cd x13binary
$ git checkout 663ad7122
$ R CMD INSTALL .

(We've also run into it in an internal package, but it's easier to
reproduce with x13binary)

In this case the file command returns multiple results for one of the
dynamic libraries, so are_shared looks like this:

> are_shared
$`/Users/Kara/projects/forks/x13binary/inst//lib/libgcc_s.1.dylib`
[1] TRUE TRUE TRUE

$`/Users/Kara/projects/forks/x13binary/inst//lib/libgfortran.3.dylib`
[1] TRUE

$`/Users/Kara/projects/forks/x13binary/inst//lib/libquadmath.0.dylib`
[1] TRUE

slibs[are_shared] then fails with invalid subscript type 'list'.

I believe this may be a bug and I have included a patch that uses any() and
vapply() to ensure that only one value is returned for each library and the
result is an atomic vector. This is my first time submitting a bug report
or patch here; I'm happy to make any changes if needed.

Thanks for considering,
Kara

[1]
https://github.com/wch/r-source/blob/3fe2bb01e9ec1b268803a437c308742775c2442d/src/library/tools/R/install.R#L594-L597
[2] https://github.com/x13org/x13binary/issues/46

R version 3.6.0 Patched (2019-05-22 r76579)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.4


[Rd] Possible bug when finding shared libraries during staged installation
Kara Woo