From maechler at stat.math.ethz.ch  Thu Dec 28 22:32:02 2017
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Thu, 28 Dec 2017 22:32:02 +0100
Subject: [Rd] Rscript failing with h5 reveals bugs in h5 (and 'R CMD
	check')
In-Reply-To: <9467e2c6-55b4-5e70-dfd4-9891eb02a25b@gmail.com>
References: <CAL109eMo37PYMgE8KV0rxBgCGe-6Z1NhPrsUiQJfqCoJXfk6CA@mail.gmail.com>
 <23106.17557.985432.335423@bud.eddelbuettel.com>
 <CAL109eMSq6=mbSzrMnktNiOw=z5C=Tj7nDg9o4zNir-h5pCywg@mail.gmail.com>
 <23106.24430.6935.8034@bud.eddelbuettel.com>
 <9467e2c6-55b4-5e70-dfd4-9891eb02a25b@gmail.com>
Message-ID: <23109.25298.557763.699637@stat.math.ethz.ch>

>>>>> Duncan Murdoch <murdoch.duncan at gmail.com>
>>>>>     on Wed, 27 Dec 2017 06:13:12 -0500 writes:

    > On 26/12/2017 9:40 AM, Dirk Eddelbuettel wrote:
    >> 
    >> On 26 December 2017 at 22:14, Sun Yijiang wrote: | Thanks
    >> for the solution.  Now I know the work-arounds, but still
    >> don't | quite get it. Why does R_DEFAULT_PACKAGES has
    >> anything to do with | library(methods)?
    >> 
    >> Because it governs which packages are loaded by default.
    >> And while R also loads 'methods', Rscript does
    >> not. Source of endless confusion.

    > Mostly irrelevant correction of the jargon: that setting
    > controls which packages are "attached" by default.
    > library(h5) would be enough to load methods, because h5
    > imports things from methods.  But loading doesn't put a
    > package on the search list.  library(methods) both loads
    > methods (if it hasn't already been loaded), and attaches
    > it.

    >> 
    >> | If library(h5) works, it should just work, not depend
    >> on an environment variable.
    >> 
    >> Every package using S4 will fail under Rscript unless
    >> 'methods' explicitly.

    > That's not quite true (or quite English, as per
    > fortune(112)).  The "gmp" package imports methods, and
    > it works in Rscript.  What doesn't work is to expect
    > library(h5) or library(gmp) to cause methods functions
    > like show() to be available to the user.

But indeed, in this case Sun's  test.R  script did not use any
such user level functions, and it still did not work when
methods is not attached...
and indeed that's the case also with R if you run it without
loading methods e.g. by

  R_DEFAULT_PACKAGES=NULL R CMD BATCH test.R

shows the same error...

===> There is really a bug in  h5 :  It does not import enough
from methods or it would all work fine, even with Rscript !!

===> So we have something relevant to R-devel , actually at
least one bug in R's  checking :

Why did
    	R   CMD check --as-cran h5

not see that h5 defines methods for initialize() but never
imports that from methods ?
and so "should not work" when methods is not attached....

--

After all, the fact that the default packages attached at the
beginning differ between R and Rscript  has contributed to
revealing a bug in both 'h5' and R's checking procedures.

Maybe we should keep Rscript's incompatibility therefore ;-)

Martin



[Rd] Rscript failing with h5 reveals bugs in h5 (and 'R CMD check')
Martin Maechler