Skip to content

[Bioc-devel] FW: Package build error

11 messages · Ioannis Vardaxis, Shepherd, Lori, Hervé Pagès

#
Hey,

Yesterday I submitted an R package to Bioconductor and today I got the build results with some error end warnings. Please find the build results attached.

The file is quite long and there are a lot of things there. However when I run R-check and BiocCheck on my MAC I don't get any and the package runs fine.

We don't need to go through all the notes in the file, just the first two highlighted ones.

For the first one, I get a warning for : unknown macro \insertRef. I have a citation file in the package and I can't see any other way to add citation on some R functions. Can I change it to something else?

Furthermore, I have only one c++ script, where I use Rcpp package. The header of the script is:

#include <Rcpp.h>
using namespace Rcpp;

I wanted to include functions like std::round, std::log etc, but I got an error that round is not in std namespace (see highlight two). How can I tell Rcpp to recognise that? Because round Is at std for c++11 I think.
However I don't specify any src/Makevars file, because I though that it is not needed anymore.




Finally,

When I make all the changes and fix the errors locally on my mac, I then commit and push to GitHub again. Will this automatically start the next build check for bioconuctor or do I have to do anything else?


Best
--
Ioannis Vardaxis
Stipendiat IMF
NTNU
-------------- next part --------------
A non-text attachment was scrubbed...
Name: [History]Bioconductor Single Package Builder.pdf
Type: application/pdf
Size: 253195 bytes
Desc: [History]Bioconductor Single Package Builder.pdf
URL: <https://stat.ethz.ch/pipermail/bioc-devel/attachments/20171027/fbb84790/attachment.pdf>
#
Hi Ioannis,

The links to the build results generated  during the submission
process are permanent (or at least remain valid for several months),
so it's easier to provide the link to the particular results:

 
http://bioconductor.org/spb_reports/MACPET_buildreport_20171026041125.html

As a special bonus, we all get the color version ;-)

R uses its own markup language for man pages, called the Rd format.
\insertRef is not a valid tag in that format. See the "2 Writing R
documentation files" section of the "Writing R Extensions" manual for
more information:

 
https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Writing-R-documentation-files

Note that "Writing R Extensions" is the primary documentation for R
package developers.

If your code is C++11 and you don't have a src/Makevars or src/Makefile
file, then you need to add

   SystemRequirements: C++11

in the DESCRIPTION file. This will invoke the correct compiler. This
is also explained in "Writing R Extensions" in a subsection dedicated
to "Using C++11 code":

 
https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Using-C_002b_002b11-code

Finally, pushing changes to GitHub will automatically start the next
build/check only if you've properly set up the web hook and if you bump
the version of your package, as explained on the Contributions page:

   https://github.com/Bioconductor/Contributions/blob/master/CONTRIBUTING.md

Hope this helps,
H.
On 10/26/2017 06:44 PM, Ioannis Vardaxis wrote:

  
    
#
Hey,

Thanks for the answer. Sorry for not including the link!

For the references part: I am using roxygen2 to create the Rd formats and
the \insertRef{link to bib reference file} should work for that. It looked
like:

#' @references \insertRef{macpetcite}{MACPET}

However I followed your suggestion and used the \references{} macro from
writing R documentation files, then the reference looks like:

#'@references
#' \references{
#' Consortium EP (2012) \emph{An integrated encyclopedia of DNA elements
in the human genome.}.
#'  Nature, 489(7414), pp. 57?74.
\url{http://dx.doi.org/10.1038/nature11247}.
#' }


When I build the package I get get a warning for that: "unexpected section
header '\references??, the reference is there however when I search for
the documentation in R, but this warning is new.



Moreover, for the C++11: I have my cpp script which is mainly written
using Rcpp so the headers are:

#include <Rcpp.h>
using namespace Rcpp;


I included the SystemRequirements: C++11 in the DESCRIPTION file. But when
I look into the script I get error symbols on the left side for example:
 For "std::ceil? I get the ?call to ceil is ambiguous? however I specify
std:: so the error should not be there right? (same error for std::log,
std::round, std::sqrt, std::exp)
Moreover: for ?INFINITY? I get ?used of undeclared identifier INFINITY?,
but INFINITY is in c++11, so this should not be there either.
Furthermore, for "std::isnan? I get ?no member named isnan in namespace
std?,  but it should be in c++11.

However when I go to http://en.cppreference.com/w/cpp/numeric/math/exp and
check the function there, it says that the header for the above mentioned
functions is <cmath>
So I wonder if I should include something else in the headers of the
script:

#include <cmath> for example, although I did that and the errors are
there. 


The package builds and runs, but I?m sure I  am gonna get errors again
when I submit it.



Best,
#
Hey again,


I think I have fixed the \insertRef macro problem now. However I still
need help with the c++11 problems I mentioned in the previous email.

My package builds and R-checks (and BiocChecks) with no errors and warning
though. I get some notes from BiocCheck but I don?t think they are of
immediate importance.

Best,
#
Adding 'SystemRequirements: C++11' works for me (I'm on Linux):

hpages at latitude:~/MACPET$ git diff
diff --git a/DESCRIPTION b/DESCRIPTION
index d8238b6..061d692 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -7,6 +7,7 @@ Author: Ioannis Vardaxis
  Maintainer: Ioannis Vardaxis <ioannis.vardaxis at ntnu.no>
  Description: The MACPET package can be used for binding site analysis 
for ChIA-PET data. MACPET reads ChIA-PET data in BAM or SAM for
  License: GPL-3
+SystemRequirements: C++11
  Encoding: UTF-8
  LazyData: true
  ByteCompile: true


hpages at latitude:~$ Rbiocdev CMD INSTALL MACPET
* installing to library '/home/hpages/R/R-3.4.2-bioc36/library'
* installing *source* package 'MACPET' ...
** libs
g++ -std=gnu++11 -I/home/hpages/R/R-3.4.2-bioc36/include -DNDEBUG 
-I"/home/hpages/R/R-3.4.2-bioc36/library/Rcpp/include" 
-I/usr/local/include   -fpic  -g -O2 -c 
PeakFinderSubFunctions_SGT_Rcpp.cpp -o PeakFinderSubFunctions_SGT_Rcpp.o
g++ -std=gnu++11 -I/home/hpages/R/R-3.4.2-bioc36/include -DNDEBUG 
-I"/home/hpages/R/R-3.4.2-bioc36/library/Rcpp/include" 
-I/usr/local/include   -fpic  -g -O2 -c RcppExports.cpp -o RcppExports.o
g++ -std=gnu++11 -shared -L/home/hpages/R/R-3.4.2-bioc36/lib 
-L/usr/local/lib64 -o MACPET.so PeakFinderSubFunctions_SGT_Rcpp.o 
RcppExports.o -L/home/hpages/R/R-3.4.2-bioc36/lib -lR
installing to /home/hpages/R/R-3.4.2-bioc36/library/MACPET/libs
** R
** inst
** byte-compile and prepare package for lazy loading
** help
...

Works for other BioC packages too e.g. InteractionSet
(showing compilation output on Mac):

 
https://bioconductor.org/checkResults/3.6/bioc-LATEST/InteractionSet/veracruz1-install.html

It would be more useful if you showed us the full output of
'R CMD INSTALL'.

But you should not hesitate to add 'SystemRequirements: C++11', bump
the version, and see what the single package builder says (provide the
link if you want to discuss it).

Thanks,
H.
On 10/27/2017 09:50 AM, Ioannis Vardaxis wrote:

  
    
#
Hey,


Ok, I have made the changes to the DESCRIPTION file adding the c++11 you
suggested, and also fixed the Rd files. I will try to push the package
again soon and see what I get.


Thanks,
#
Hey,

One quick question. When I push again now, do I need to change the version
from 0.99.0 to 0.99.1 or does it change automatically?

Best,
#
Make sure your webhook is set up as described

 https://github.com/Bioconductor/Contributions/blob/master/CONTRIBUTING.md#adding-a-web-hook

You will need to bump the version in the description file each time you would like a new build report so please make the bump from 0.99.0 to 0.99.1.  Thank you.



Lori Shepherd

Bioconductor Core Team

Roswell Park Cancer Institute

Department of Biostatistics & Bioinformatics

Elm & Carlton Streets

Buffalo, New York 14263
#
Hey,

Here is the report:

bioconductor.org/spb_reports/MACPET_buildreport_20171027135637.html

I get a warning for Warning: No Rd macros in package ?Rdpack?, for which I can?t find any solution in the internett. But I am guessing that the warning might come from a special norwegian character ? in the Rd files. I just write ? in the documentation, because \o did not work . Do you think the problem is that?


Furthermore, I get an error for the vignette. On mac it works fine (I work on mac too), but on the other two platforms a get:


  *

creating vignettes ...Warning: running command '"C:/Users/biocbuild/bbs-3.6-bioc/R/bin/x64/Rscript" --vanilla --default-packages= -e "tools::buildVignettes(dir = '.', tangle = TRUE)"' had status 1
 ERROR
Warning: 'pdf_document2' is deprecated.
Use 'pdf_document' instead.

Also :

Error: processing vignette 'MACPET.Rmd' failed with diagnostics:

savedir does not exist!

However I am not getting any such error on my mac so it is quite difficult to find out how they are caused.

Best,
--
Ioannis Vardaxis
Stipendiat IMF
NTNU

From: "Shepherd, Lori" <Lori.Shepherd at RoswellPark.org<mailto:Lori.Shepherd at RoswellPark.org>>
Date: Friday, 27 October 2017 at 19:44
To: Ioannis Vardaxis <ioannis.vardaxis at ntnu.no<mailto:ioannis.vardaxis at ntnu.no>>, Herv? Pag?s <hpages at fredhutch.org<mailto:hpages at fredhutch.org>>, "bioc-devel at r-project.org<mailto:bioc-devel at r-project.org>" <bioc-devel at r-project.org<mailto:bioc-devel at r-project.org>>
Subject: Re: [Bioc-devel] FW: Package build error


Make sure your webhook is set up as described

 https://github.com/Bioconductor/Contributions/blob/master/CONTRIBUTING.md#adding-a-web-hook

You will need to bump the version in the description file each time you would like a new build report so please make the bump from 0.99.0 to 0.99.1.  Thank you.



Lori Shepherd

Bioconductor Core Team

Roswell Park Cancer Institute

Department of Biostatistics & Bioinformatics

Elm & Carlton Streets

Buffalo, New York 14263
#
Hey,


I think the problem might be coming from the command
"file.path(path.expand('~'),'Desktop?)? on line 77 on MACPET.rmd file. I
just want to find the desktop path for creating a folder there for the
vignette and the examples. This seems to work on MAC, but not on the other
platforms, how can I make it work in general?

I replaced pdf_document2 with pdf_document by the way.


Best,
#
On 10/27/2017 11:42 AM, Ioannis Vardaxis wrote:
Please don't assume that all your users are going to have a
~/Desktop folder.

If you just need a place to create temporary files, you should use
tempfile().

BTW those are not Bioconductor specific questions and are better asked
on r-help or SO.

Thanks,
H.