From Kurt.Hornik at wu-wien.ac.at  Tue Sep 16 22:40:13 2003
From: Kurt.Hornik at wu-wien.ac.at (Kurt Hornik)
Date: Tue Sep 16 21:43:43 2003
Subject: [Rd] couldn't find function "setClass"
In-Reply-To: <3F676428.89D40FBB@research.bell-labs.com>
References: <Pine.LNX.4.44.0309162018500.2134-100000@gannet.stats>
	<3F676428.89D40FBB@research.bell-labs.com>
Message-ID: <16231.26397.947510.613524@mithrandir.hornik.net>

>>>>> John Chambers writes:

> Prof Brian Ripley wrote:
>> 
>> On Tue, 16 Sep 2003, John Chambers wrote:
>> 
>> > Jeff Gentry wrote:
>> > >
>> > > Hello ...
>> > >
>> > > With a new checkout of R-devel (last update was 2003-09-11) we are having
>> > > a problem (it seems to be happening to all of us here on a few different
>> > > machines) where during install/check/etc when the 'save image' happens (in
>> > > packages using 'save image'):
>> > >
>> > > ** save image
>> > > Error: couldn't find function "setClass"
>> > > Execution halted
>> > >
>> > > This is for all packages that are using classes.
>> > >
>> > > Is anyone else having this problem?
>> >
>> > With packages that do NOT have a namespace but DO have saved images,
>> > yes. (!)
>> >
>> > The problem seems to be that the current version of INSTALL doesn't end
>> > up with library(methods) in this branch (related to --vanilla ?).  One
>> 
>> It's not related to --vanilla, which does not change the packages loaded.
>> See Kurt's comment for what I believe is the true reason.
>> 
>> > workaround seem to be to change INSTALL (or scripts/INSTALL.in) as
>> > follows:
>> >
>> > 522c522
>> > <       code_cmd="eval cat \"${code_file}\""
>> > ---
>> > >       code_cmd="eval echo \"library(methods)\"; cat \"${code_file}\""
>> >
>> > to explicitly attach the library.  This may in fact be the right fix,
>> > but I'm confused as to why this is happening now.
>> 
>> I don't think so: methods is currently optional and Doug's fix seems to be
>> to be the right one.

> That (apparently) the problem arises in such a special situation is
> confusing for users.  At least for me, it's ONLY in the combination of
> saved image and no namespace.

> That the user does not need a require(methods) when testing the code
> directly but does (sometimes) when the source code is in package
> source is not a feature.  If we can avoid this complexity, that would
> encourage package developers.

Unfortunately, it is not necessarily true that require(methods) is not
needed when testing: site admins or "users" might have changed the
default packages from the system default.

Otoh, once we use --vanilla for the save image creation, it seems that
this eliminates all (reasonable) possibilities for changing the default
packages (or am I missing something?).  So we could use the system
default rather than just base here.

-k


[Rd] couldn't find function "setClass"
Kurt Hornik