[Bioc-devel] Problem building package with devtools+Rcpp
Martin Morgan
martin.morgan at roswellpark.org
Fri Sep 29 21:55:56 CEST 2017
On 09/27/2017 08:11 AM, sergi.picart at upc.edu wrote:
> Dear developers,
> Sorry if the e-mail is duplicated, I had an issue sending it.
>
> I have been struggling with problems building my package DIFFUSTATS a
> The problem is related to the usage of Rcpp.
> In my current machine, I am unable to build the DIFFUSTATS in the
> devel bioconductor:
>
> ##############
>
>
> > build()
Not really any solution or insight here, but I suggest removing devtool
from the equation, and making sure that you are working from a clean
source tree without artifacts (.o, .so, .dylib, etc.) from previous
builds. On my linux I did
R -e "BiocInstaller::biocVersion()" # 3.6
R -e "BiocInstaller::isDevel()" # TRUE
R -e "BiocInstaller::isValid()" # yup
cd /tmp
git clone https://git.bioconductor.org/packages/diffuStats
## check in diffuStats/src directory for build artifacts -- none
R CMD buld diffuStats
R CMD check diffuStats_0.99.12.tar.gz
Martin
> '/usr/lib/R/bin/R' --no-site-file --no-environ --no-save
> --no-restore --quiet \
> CMD build '/home/sergi/eraseme3/diffuStats' --no-resave-data --no-manual
>
> * checking for file ‘/home/sergi/eraseme3/diffuStats/DESCRIPTION’ ... OK
> * preparing ‘diffuStats’:
> * checking DESCRIPTION meta-information ... OK
> * cleaning src
> * installing the package to build vignettes
> -----------------------------------
> * installing *source* package ‘diffuStats’ ...
> ** libs
> g++ -std=gnu++11 -I/usr/share/R/include -DNDEBUG
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include"
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/inc
> lude"
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppParallel/include"
> -fpic -g -O2 -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOUR
> CE=2 -g -c RcppExports.cpp -o RcppExports.o
> In file included from
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/armadillo:52:0,
> from
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/RcppArmadilloForward.h:46,
> from
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/RcppArmadillo.h:31,
> from RcppExports.cpp:4:
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/armadillo_bits/compiler_setup.hpp:474:96: note: #pragma message: WARNING: use of OpenMP disabled; this
> compiler
> doesn't support OpenMP 3.0+
> #pragma message ("WARNING: use of OpenMP disabled; this compiler
> doesn't support OpenMP 3.0+")
> ^
> g++ -std=gnu++11 -I/usr/share/R/include -DNDEBUG
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include"
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/inc
> lude"
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppParallel/include"
> -fpic -g -O2 -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOUR
> CE=2 -g -c diffuse_parallel.cpp -o diffuse_parallel.o
> In file included from
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/armadillo:52:0,
> from
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/RcppArmadilloForward.h:46,
> from
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/RcppArmadillo.h:31,
> from diffuse_parallel.cpp:1:
> /home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/include/armadillo_bits/compiler_setup.hpp:474:96: note: #pragma message: WARNING: use of OpenMP disabled; this
> compiler
> doesn't support OpenMP 3.0+
> #pragma message ("WARNING: use of OpenMP disabled; this compiler
> doesn't support OpenMP 3.0+")
> ^
> gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include"
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppArmadillo/inclu
> de"
> -I"/home/sergi/R/x86_64-pc-linux-gnu-library/3.4/RcppParallel/include"
> -fpic -g -O2 -fstack-protector-strong -Wformat
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE
> =2 -g -c init.c -o init.o
> g++ -std=gnu++11 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions
> -Wl,-z,relro -o diffuStats.so RcppExports.o diffuse_parallel.o init.o
> -L/usr/lib/R/lib -lR
> installing to /tmp/RtmpRLy9NN/Rinst4d19c0dca4b/diffuStats/libs
> ** R
> ** data
> *** moving datasets to lazyload DB
> ** preparing package for lazy loading
> ** help
> *** installing help indices
> ** building package indices
> ** installing vignettes
> ** testing if installed package can be loaded
> Error: package or namespace load failed for ‘diffuStats’ in
> dyn.load(file, DLLpath = DLLpath, ...):
> unable to load shared object
> '/tmp/RtmpRLy9NN/Rinst4d19c0dca4b/diffuStats/libs/diffuStats.so':
> /tmp/RtmpRLy9NN/Rinst4d19c0dca4b/diffuStats/libs/diffuStats.so:
> undefined symbol: diffuStats_convertSparse
> Error: loading failed
> Execution halted
> ERROR: loading failed
> * removing ‘/tmp/RtmpRLy9NN/Rinst4d19c0dca4b/diffuStats’
> -----------------------------------
> ERROR: package installation failed
> Error: Command failed (1)
>
>
> However, this is successful when build(vignettes=FALSE)
>
> ##############
>
> > sessionInfo()
> R version 3.4.1 (2017-06-30)
> Platform: x86_64-pc-linux-gnu (64-bit)
> Running under: Ubuntu 16.04.3 LTS
>
> Matrix products: default
> BLAS: /usr/lib/atlas-base/atlas/libblas.so.3.0
> LAPACK: /usr/lib/atlas-base/atlas/liblapack.so.3.0
>
> locale:
> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
> [9] LC_ADDRESS=C LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
> loaded via a namespace (and not attached):
> [1] compiler_3.4.1 tools_3.4.1
> [3] RcppArmadillo_0.7.960.1.2 withr_2.0.0
> [5] Rcpp_0.12.12 memoise_1.1.0
> [7] digest_0.6.12 RcppParallel_4.3.20
> [9] devtools_1.13.3
>
> ##############
>
> The local installation of Rcpp, RcppParallel, RcppArmadillo or
> devtools seems to have something to do with it, because a machine with
> the following configuration (which I cannot use for developing in a
> regular basis) works just fine:
>
> > sessionInfo()
> R version 3.4.1 (2017-06-30)
> Platform: x86_64-pc-linux-gnu (64-bit)
> Running under: Ubuntu 14.04.5 LTS
>
> Matrix products: default
> BLAS: /usr/lib/openblas-base/libblas.so.3
> LAPACK: /usr/lib/lapack/liblapack.so.3.0
>
> locale:
> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
> [3] LC_TIME=es_ES.UTF-8 LC_COLLATE=en_US.UTF-8
> [5] LC_MONETARY=es_ES.UTF-8 LC_MESSAGES=en_US.UTF-8
> [7] LC_PAPER=es_ES.UTF-8 LC_NAME=C
> [9] LC_ADDRESS=C LC_TELEPHONE=C
> [11] LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
> other attached packages:
> [1] devtools_1.13.2
>
> loaded via a namespace (and not attached):
> [1] compiler_3.4.1 tools_3.4.1
> [3] RcppArmadillo_0.7.900.2.0 withr_1.0.2
> [5] Rcpp_0.12.11 memoise_1.1.0
> [7] digest_0.6.12 RcppParallel_4.3.20
>
>
>
> ##############
>
> If I try other actions, such as devtools::document or load_all:
>
> Error in dyn.load(dllfile) :
> unable to load shared object
> '/home/sergi/all/devel/rpackages/diffuStats/src/diffuStats.so':
> /home/sergi/all/devel/rpackages/diffuStats/src/diffuStats.so:
> undefined symbol: diffuStats_convertSparse
>
>
> Where convertSparse is the first function in the exported c++ functions
>
> ##############
>
>
>
> I have tried addressing the OpenMP 3.0 warning without success.
> However, I think the problem lies in the compilation.
> I have updated the R version, also re-run
>
> Rcpp::compileAttributes()
>
> And the problem persists whatever I do. I might be missing something
> obvious...
>
> Any help will be appreciated,
>
> Sergio
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>
This email message may contain legally privileged and/or...{{dropped:2}}
More information about the Bioc-devel
mailing list