Re: [Rd] package check note: no visible global function definition (in functions using Tcl/Tk)

From: Jari Oksanen <jarioksa_at_sun3.oulu.fi>
Date: Tue, 12 Jun 2007 12:56:25 +0300

On Tue, 2007-06-12 at 00:42 +0200, Henrik Bengtsson wrote:
> On 6/11/07, Seth Falcon <sfalcon@fhcrc.org> wrote:
> > Prof Brian Ripley <ripley_at_stats.ox.ac.uk> writes:
> >
> > > It seems that is happens if package tcltk is missing from the Depends:
> > > list in the DESCRIPTION file. I just tested with Amelia and homals and
> > > that solved the various warnings in both cases.
> >
> > Adding tcltk to Depends may not always be the desried solution. If
> > tcltk is already in Suggests, for example, and the intention is to
> > optionally provide GUI features, then the code may be correct as-is.
> > That is, codetools will issue the NOTEs if you have a function that
> > looks like:
> >
> > f <- function() {
> > if (require("tckltk")) {
> > someTckltkFunctionHere()
> > } else
> > otherwiseFunction()
> > }
> > }
> >
> > There are a number of packages in the BioC repository that provide
> > such optional features (not just for tcltk) and it would be nice to
> > have a way of declaring the use such that the NOTE is silenced.
>
> Same scenario here: I am using Suggest and I found that the NOTEs go
> away if you call the function with double-colon (::), e.g.
> tcltk::someTckltkFunctionHere().
>
> I also got several NOTEs about non-declared objects if I used
> request(<pkgname>), but they go away with request("<pkgname>").
>
The real problem here is what are the consequences for CRAN auditing with the new defaults. Do you have to pass these tests also? Do you implement stricter package dependence checking? Do you still allow the check circumvention device that Henrik, perhaps unwisely, revealed here (that is package::function)?

Just being curious, I run checkUsagePackage() for my CRAN package (vegan), and got 109 messages. 58 of these were "local variables assigned but may not be used" and need be checked. My first impression was that they were just harmless leftover, and removing those is not among my top priorities, but may wait till September. Some were false positives. Most of the rest (49 + 1 special case) were calls to functions in other packages with require || stop in the function body. I'd like to keep them like this, or at least with the circumvention device. Please don't make this test a requirement in CRAN submissions!

One real error was detected also, but fixing that error broke the function, since the rest of the function already was expecting erroneous output to work correctly.

I urge for more relaxed dependence checking allowing calls to other packages in functions. I've been a Linux user since Red Hat 5.1 and I know what is a dependence hell (package depending on package depending ... depending on broken package). There already are some signs of that in R, in particular in unsupported platforms like MacOS 10.3.9 where I have trouble in installing some packages that depend on packages... (if somebody wonders why I still use MacOS 10.3.9, I can give 129 reasons, each worth one Euro).

cheers, Jari Oksanen



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 12 Jun 2007 - 09:58:53 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 12 Jun 2007 - 10:34:29 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.