eddelbuettel / bh

R package providing Boost Header files
85 stars 32 forks source link

Compile failure of BH as a dependency of https://github.com/steven-shuken/permFDP #91

Closed edammer closed 1 year ago

edammer commented 1 year ago

Dirk (and team), thanks for your attention to this request from both me and Steve Shuken @Stanford, who is using the BH libraries for his R package/function permFDP [published in Shuken and McNerney, Anal Chem (2023)]: https://pubs.acs.org/doi/abs/10.1021/acs.analchem.2c03719

The function has important scientific use cases in the field of proteomics analysis and research, and is now published with a generally non-working route to installation for new users like me.

Please see my opened issue (2 weeks ago) on the permFDP GitHub: https://github.com/steven-shuken/permFDP/issues/1 With the specific Rcpp compile errors thrown on 2 separate OSes (Windows and Linux/CentOS) and R versions (v4.0.2 and v4.2.0).

Eric Dammer Emory University

eddelbuettel commented 1 year ago

Sorry to hear it is not building for you.

Over the years both StackOverflow and GitHub have developed a bit of a 'style' of how to effectively communicate an issue. Drilling down to an exact minimal issue helps a lot, and including such a minimally complete verifiable example helps us help you. Also state which version of g++ (or clang) you use, which version of Rcpp, which version of BH, which OS. All of that is essentially missing. It also helps to add compilation flags to suppress noisy warning (not errors!) as CRAN forces us to have the warnings show -- but they obstruct issues in the logs by adding 'noise'.

We upgrade BH once a year, and we take it seriously. Reverse-dependencies are run against all CRAN packages (over 300 by now). This time less than a handful were affected, they were identified and contact. As you can see in #88, all of them are now working at CRAN. We will get your package up and running too, but you have to help us help you. Thanks for your consideration.

edammer commented 1 year ago

I will work with Steve Shuken to get you the example needed. Thank you for the prompt response, and ownership of this important resource, Dirk!

eddelbuettel commented 1 year ago

I will send you a pull request clearning a number of issues up. This was a fairly simple local setup issue on your end.

eddelbuettel commented 1 year ago

Please see https://github.com/steven-shuken/permFDP/pull/3 after which the package installs just fine. Remaining micro-warts at your end:

Demo installation (I use a helper script that is a wrapper around R CMD INSTALL ...):

edd@rob:~/git/permfdp(master)$ install2.r -l /tmp/rcpp/lib/ permFDP_0.1.0.tar.gz 
* installing *source* package ‘permFDP’ ...
** using staged installation
** libs
ccache g++ -I"/usr/share/R/include" -DNDEBUG  -I'/usr/local/lib/R/site-library/Rcpp/include' -I'/usr/local/lib/R/site-library/BH/include'    -fpic  -g -O3 -Wall -pipe -pedantic -Wno-sign-compare -Wno-parentheses   -c RcppExports.cpp -o RcppExports.o
ccache g++ -I"/usr/share/R/include" -DNDEBUG  -I'/usr/local/lib/R/site-library/Rcpp/include' -I'/usr/local/lib/R/site-library/BH/include'    -fpic  -g -O3 -Wall -pipe -pedantic -Wno-sign-compare -Wno-parentheses   -c permFDP.cpp -o permFDP.o
ccache g++ -Wl,-S -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -o permFDP.so RcppExports.o permFDP.o -L/usr/lib/R/lib -lR
installing to /tmp/rcpp/lib/00LOCK-permFDP/00new/permFDP/libs
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** checking absolute paths in shared objects and dynamic libraries
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (permFDP)
edd@rob:~/git/permfdp(master)$ 

The remaining nag from R CMD check (also via a wrapper calling rcmdcheck::rcmdcheck() with options) is

✔  checking Rd cross-references ...
W  checking for missing documentation entries ...
   Undocumented code objects:
     ‘designTTest’ ‘permFDRAdjust’ ‘permFDRAdjustCpp’
   All user-level objects in a package should have documentation entries.
   See chapter ‘Writing R documentation files’ in the ‘Writing R
   Extensions’ manual.
✔  checking for code/documentation mismatches (619ms)

Otherwise you are good to go. There is no, and never was, an issue with BH so I will close this now. Hope this helped!