test-coverage failure dlopen(...) Symbol not found: ___gcov_merge_add

PREAMBLE

Hello. I am trying to switch my package (github.com/dankelley/oce) from hand-rolled covr checks to the 'test-coverage' github action. (I am new to these actions, and I have to say that I love them!)

This package has compiled C and Fortran code in addition to R code. (I point that out because the test-coverage action works fine in another package I have that lacks C and Fortran.)

PROBLEM

I found that it fails with a message I've quoted in my subject line, and so I tried running

covr::codecov(quiet=FALSE)

locally.

I suspect I can find a way to make it work locally, but my real goal is to have it working within the test-coverage action, because that will benefit not just me but many others.

REQUEST

I wonder whether there is a setting that will let me get this working?

DETAILS

My local machine is macOS, and the details of the message are as follows.

** testing if installed package can be loaded
Error: package or namespace load failed for ‘oce’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so':
  dlopen(/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so, 6): Symbol not found: ___gcov_merge_add
  Referenced from: /private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so
  Expected in: flat namespace
 in /private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce’
Error in file(con, "r") : cannot open the connection
In addition: Warning messages:
1: In utils::install.packages(repos = NULL, lib = tmp_lib, pkg$path,  :
  installation of package ‘/Users/kelley/git/oce’ had non-zero exit status
2: In file(con, "r") :
  cannot open file '/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/R/oce': No such file or directory

The error indicates that a coverage library is not available, this should be automatically included with the default flags covr adds when compiling. Did you modify covr's global options in some way?

This topic was automatically closed after 45 days. New replies are no longer allowed.


If you have a query related to it or one of the replies, start a new topic and refer back with a link.