Skip to content

[R-pkg-devel] CRAN packages dependency on bioconductor packages

10 messages · Lluís Revilla, Ramos Perez, Marcel, Li, Junhui +4 more

#
Hi everyone,

I recently developed an R package called 'StepReg' and used the Bioconductor R package 'BiocStyle' in my vignettes, as shown below:

output:
  BiocStyle::html_document:
    toc_float: true
  BiocStyle::pdf_document: default

In my DESCRIPTION file, I added 'BiocStyle' to the Suggests field and included a new line 'biocViews:', as follows:

VignetteBuilder: knitr
biocViews:
Suggests:
    knitr,
    testthat,
    BiocStyle,
    kableExtra

You may find all those information here: https://github.com/JunhuiLi1017/StepReg/tree/dev

There were no error messages when checking with 'R CMD check' and on https://win-builder.r-project.org/upload.aspx. However, an error message occurred when I attempted to upload it to CRAN:

* checking re-building of vignette outputs ... ERROR
Error(s) in re-building vignettes:
--- re-building 'StepReg.Rmd' using rmarkdown
Error: processing vignette 'StepReg.Rmd' failed with diagnostics:
there is no package called 'BiocStyle'
--- failed re-building 'StepReg.Rmd'

SUMMARY: processing the following file failed:
   'StepReg.Rmd'

Error: Vignette re-building failed.
Execution halted

For version 1.5.0 (https://cran.r-project.org/web/packages/StepReg/index.html), I successfully uploaded it to CRAN without including 'biocViews:' in the DESCRIPTION file two months ago. However, I'm encountering difficulties this time. Any insights or suggestions on resolving this issue would be greatly appreciated.

Thanks,
Junhui
#
Hi Junhui,

There is a separate log for checking if your package works without
suggested packages: in the StepReg results
The noSuggests title leads to:
https://www.stats.ox.ac.uk/pub/bdr/noSuggests/StepReg.out
Where you can see that it fails if a user don't have BiocStyle installed.
I don't know if it is possible to use a vignette output conditionally with
knitr: In any case it seems that it would be a requirement (Imports, or
Depends).

However, it is best to not use the Bioconductor style for a package in
CRAN.
You could use the *_vignette or *_document format directly (from rmarkdown
if I recall correctly).
You will remove a dependency and avoid this problem entirely.

Best,

Llu?s
On Tue, 14 May 2024 at 22:48, Li, Junhui <Junhui.Li11 at umassmed.edu> wrote:

            

  
  
#
Hi Junhui,

There are about 25 packages in CRAN that use BiocStyle, including yours.
It seems that MetaIntegrator is also facing the same error. I have not
looked too deeply into the issue but it seems that you should also
include "rmarkdown" in the Suggests field.

AFAIK, there is no need to include an empty `biocViews:` field in the
DESCRIPTION. CRAN knows about Bioconductor repositories via
setRepositories().

Note. Users should use BiocManager to resolve Bioconductor dependencies
(rather than setRepositories).

Best regards,
Marcel
#
Hi Llu?s,

Thanks for your input. I believe it is ok to use a vignette output conditionally with knitr. However,  what confuses me is that I was able to successfully upload StepReg version 1.5.0 to CRAN with BiocStyle listed in the Suggests field. It seems that there is some issues with CRAN check.

Best,
Junhui
From: Llu?s Revilla <lluis.revilla at gmail.com>
Date: Tuesday, May 14, 2024 at 18:09
To: Li, Junhui <Junhui.Li11 at umassmed.edu>
Cc: r-package-devel at r-project.org <r-package-devel at r-project.org>
Subject: Re: [R-pkg-devel] CRAN packages dependency on bioconductor packages
Hi Junhui,

There is a separate log for checking if your package works without suggested packages: in the StepReg results
The noSuggests title leads to: https://www.stats.ox.ac.uk/pub/bdr/noSuggests/StepReg.out
Where you can see that it fails if a user don't have BiocStyle installed.
I don't know if it is possible to use a vignette output conditionally with knitr: In any case it seems that it would be a requirement (Imports, or Depends).

However, it is best to not use the Bioconductor style for a package in CRAN.
You could use the *_vignette or *_document format directly (from rmarkdown if I recall correctly).
You will remove a dependency and avoid this problem entirely.

Best,

Llu?s
On Tue, 14 May 2024 at 22:48, Li, Junhui <Junhui.Li11 at umassmed.edu<mailto:Junhui.Li11 at umassmed.edu>> wrote:
Hi everyone,

I recently developed an R package called 'StepReg' and used the Bioconductor R package 'BiocStyle' in my vignettes, as shown below:

output:
  BiocStyle::html_document:
    toc_float: true
  BiocStyle::pdf_document: default

In my DESCRIPTION file, I added 'BiocStyle' to the Suggests field and included a new line 'biocViews:', as follows:

VignetteBuilder: knitr
biocViews:
Suggests:
    knitr,
    testthat,
    BiocStyle,
    kableExtra

You may find all those information here: https://github.com/JunhuiLi1017/StepReg/tree/dev

There were no error messages when checking with 'R CMD check' and on https://win-builder.r-project.org/upload.aspx. However, an error message occurred when I attempted to upload it to CRAN:

* checking re-building of vignette outputs ... ERROR
Error(s) in re-building vignettes:
--- re-building 'StepReg.Rmd' using rmarkdown
Error: processing vignette 'StepReg.Rmd' failed with diagnostics:
there is no package called 'BiocStyle'
--- failed re-building 'StepReg.Rmd'

SUMMARY: processing the following file failed:
   'StepReg.Rmd'

Error: Vignette re-building failed.
Execution halted

For version 1.5.0 (https://cran.r-project.org/web/packages/StepReg/index.html), I successfully uploaded it to CRAN without including 'biocViews:' in the DESCRIPTION file two months ago. However, I'm encountering difficulties this time. Any insights or suggestions on resolving this issue would be greatly appreciated.

Thanks,
Junhui


______________________________________________
R-package-devel at r-project.org<mailto:R-package-devel at r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
#
Hi Marcel,

I appreciate your suggestion and clarification. It is worth mentioning that ?rmarkdown? is included in the Import filed, and I apologize for not stating it here. Interestingly,  I was able to successfully upload StepReg version 1.5.0 to CRAN with BiocStyle listed in the Suggests field. However, I encountered this issue this time around. I attempted to address it by adding an empty `biocViews:` field in the DESCRIPTION, but unfortunately, it did not resolve the problem. It seems that there are some issues with CRAN check.

Best,
Junhui
From: Ramos Perez, Marcel <Marcel.RamosPerez at RoswellPark.org>
Date: Wednesday, May 15, 2024 at 17:50
To: Li, Junhui <Junhui.Li11 at umassmed.edu>, r-package-devel at r-project.org <r-package-devel at r-project.org>
Subject: Re: EXTERNAL: [R-pkg-devel] CRAN packages dependency on bioconductor packages
Hi Junhui,

There are about 25 packages in CRAN that use BiocStyle, including yours.
It seems that MetaIntegrator is also facing the same error. I have not
looked too deeply into the issue but it seems that you should also
include "rmarkdown" in the Suggests field.

AFAIK, there is no need to include an empty `biocViews:` field in the
DESCRIPTION. CRAN knows about Bioconductor repositories via
setRepositories().

Note. Users should use BiocManager to resolve Bioconductor dependencies
(rather than setRepositories).

Best regards,
Marcel
#
Am 15.05.24 um 00:09 schrieb Llu?s Revilla:
Yes, I'd consider the package providing the vignette output format for 
the rmarkdown engine, here BiocStyle, as a strong dependency of that 
vignette. The error from the additional "noSuggests" check 
(<https://www.stats.ox.ac.uk/pub/bdr/noSuggests/README.txt>) shows it 
cannot be rebuild if BiocStyle is unavailable.

The 'StepReg' vignette could use a metadata line to declare strong 
vignette dependencies, for example:

     %\VignetteDepends{StepReg, BiocStyle, kableExtra}

(I haven't checked if this list is complete.)

This avoids spurious check errors in incomplete setups, such as when 
mass-checking packages (e.g., reverse dependencies) without some of the 
suggested packages being installed.

Best,

	Sebastian Meyer
#
On 2024-05-16 4:15 a.m., Sebastian Meyer wrote:
It is documented in WRE as a soft dependency of the package: "As Sweave 
is the only engine supplied with the R distribution, the package 
providing any other engine must be specified in the ?VignetteBuilder? 
field of the package DESCRIPTION file, and also specified in the 
?Suggests?, ?Imports? or ?Depends? field (since its namespace must be 
available to build or check your package)."

I forget now, but presumably the thinking at the time was that Suggested 
packages would always be available for building and checking vignettes.

With most soft dependencies, it's up to the package writer to handle the 
possibility that it is missing, but here, I think it has to be the check 
code that does it, skipping the vignette test if the builder is missing.

Alternatively, it could be required to be a hard dependency, but that 
seems too strong:  most package users don't need to rebuild vignettes.

Duncan Murdoch


  The error from the additional "noSuggests" check
#
On 16.05.2024 10:15, Sebastian Meyer wrote:
Indeed, having it listed in Suggests plus the \VignetteDepends 
declaration should suffice.

Best,
Uwe Ligges
#
Am 16.05.24 um 11:34 schrieb Duncan Murdoch:
Yes, re-building vignettes is skipped when a VignetteBuilder package is 
unavailable.

In the present case, the VignetteBuilder package that provides the 
engine is knitr and BiocStyle is used for an alternative rmarkdown 
output format. Not sure if the latter should be declared as an 
additional VignetteBuilder even if it does not provide the vignette 
engine, but you are right that it comes very close.
Agreed. Declaring it as part of the vignette's \VignetteDepends is what 
I'd do to solve the check issue.

	Sebastian Meyer
#
On 16 May 2024 at 05:34, Duncan Murdoch wrote:
| I forget now, but presumably the thinking at the time was that Suggested 
| packages would always be available for building and checking vignettes.

Yes. I argued for years (cf https://dirk.eddelbuettel.com/blog/2017/03/22/
from seven (!!) years ago) and CRAN is slowly moving away from that implicit
'always there' guarantee to prefering explicit enumerations -- and now even
tests via the NoSuggests flavour.

As Uwe stated in this thread, having the vignette dependencies both in
Suggests as well as in the VignetteHeader should do. And it is the Right
Thing (TM) to do.

Dirk