On 11-06-11 1:09 AM, Kornelius Rohmeyer wrote:
2011/6/11 Duncan Murdoch<murdoch.dun...@gmail.com>:
On 11-06-10 7:04 PM, Kornelius Rohmeyer wrote:
Dear all,

for a CRAN-package that depends on another Bioconductor-package I find
two things annoying and would like to know whether there are some
workarounds:

1) Is there some inevitable problem that install.packages does not
install uninstalled packages (on which the specified package depends)
also from Bioconductor (in the correct version)?

2) In my understanding (please correct me if I'm wrong!) CRAN uses
bioconductor packages in another version than biocLite would install.
For example:

Our package gMCP depends on the package graph that has recently
switched to the bioconductor repositories. But even the following
commands will fail (i.e. install incompatible versions) for R 2.12
under Windows (and most likely MacOS):

source("http://www.bioconductor.org/biocLite.R";)
biocLite("graph")
install.packages("gMCP")

This results in errors like the following:

BonferroniHolmGraph(2)

Error in validObject(.Object) :
   invalid class "graphMCP" object: superclass "graphBase" not defined
in the environment of the object's class

The superclass graphBase is introduced in graph 1.30. In my
understanding the problem is that our package gMCP is build on CRAN
for R 2.12 with the package graph in version 1.30. Unfortunately
biocLite installs graph_1.28.0.zip for R 2.12.

Are there ways to make dependencies on Bioconductor less complicated?

Users of your package are likely to have issues; make sure you document that
they need to include the Bioconductor repository as well as CRAN.

You can specify a version in a dependency (or a version range).  I don't
know if BioC will make old versions available in binary formats, but they
will probably make source versions available.

Duncan Murdoch


Dear Duncan,

the main problem is not addressed by specifying a certain version (or
at least I do not see how), since it's not the case that the package
requires certain versions.

I don't understand. It sounds as though you're saying these two contradictory things:

 - your package works with any version of graph
 - CRAN builds a version of graph that is incompatible with your package.



The problem is that the default binary
packages of the CRAN package and the Bioconductor package it depends
on are incompatible for R 2.12, since CRAN uses a different version of
the Bioconductor package for building. (For the source packages of
course no problem exists.) Btw. is there a way to find out which
versions of the dependent packages were used for building a certain
binary package? (I guess in the moment, that CRAN uses always the
newest available source packages.)
These kind of incompatibilities are extremely hard to track for the
package developer. So if there is not a way to install the correct
corresponding compatible binary packages from CRAN and Bioconductor,
may I suggest that CRAN uses the same versions of dependent
Bioconductor packages for the build of binary packages as Bioconductor
is providing in binary form by default for the respective R versions?

I am not involved with setting CRAN policy, but their current policy (build the most recent version of a package that declares itself compatible with the relevant version of R) seems reasonable.

If for whatever reason this doesn't work for your package with R 2.12.x, I see two possible solutions:

 - Declare that your package now depends on R 2.13.0 or better.
- Move your package to Bioconductor, if its policy for binary builds better matches your needs.

Duncan Murdoch

Or am totally on the wrong track?

Thank you very much and best regards, Kornelius.

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to