[Rd] optional package dependency
Thomas Lumley
tlumley at u.washington.edu
Fri Jan 15 17:15:59 CET 2010
On Fri, 15 Jan 2010, Seth Falcon wrote:
> There is a real need (of some kind) here. Not all packages work on all
> platforms. For example, the multicore package provides a mechanism for
> running parallel computations on a multi-cpu box, but it is not
> available on Windows. A package that _is_ available on all platforms
> should be able to optionally make use of multicore on non-Windows. I
> don't think there is a way to do that now and pass check without
> resorting to "tricks" as above. These tricks are bad as they make it
> harder to programmatically determine the true "suggests".
>
> And NAMESPACE brings up another issue in that being able to do
> conditional imports would be very useful for these cases, otherwise you
> simply can't make proper use of name spaces for any optional functionality.
>
> I'm willing to help work on and test a solution if we can arrive at some
> consensus as to what the solution looks like.
>
Seth,
In the case of multicore it seems to work to put it in 'Suggests' and to use require() to load it. That's what I did with the survey package, and it didn't cause problems on CRAN. I didn't run CMD check on Windows myself, only on Mac and Linux.
A more difficult issue is providing methods for a generic in another package that might not be available. I wanted to provide methods on survey objects for generics in odfWeave, and I couldn't find out how to do that without making it required. I ended up creating a new odfWeave.survey package that depends on odfWeave and survey, but this seems like the sort of thing that should be able to be done with Enhances or Suggests.
-thomas
Thomas Lumley Assoc. Professor, Biostatistics
tlumley at u.washington.edu University of Washington, Seattle
More information about the R-devel
mailing list