From jmc at research.bell-labs.com  Tue Sep 16 17:06:27 2003
From: jmc at research.bell-labs.com (John Chambers)
Date: Tue Sep 16 22:08:43 2003
Subject: [Rd] couldn't find function "setClass"
References: <Pine.LNX.4.44.0309162018500.2134-100000@gannet.stats>
	<3F676428.89D40FBB@research.bell-labs.com>
	<16231.26397.947510.613524@mithrandir.hornik.net>
Message-ID: <3F676D43.AEB89326@research.bell-labs.com>

Kurt Hornik wrote:
> 
> >>>>> 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.

Indeed, but then the user would always see things this way.  Consistency
makes people feel more secure.

> 
> 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.

Intuitively, --vanilla means "the standard flavor", as opposed to
--stripped, say, so it would seem more natural to have the system
defaults wherever possible.

John

> 
> -k

-- 
John M. Chambers                  jmc@bell-labs.com
Bell Labs, Lucent Technologies    office: (908)582-2681
700 Mountain Avenue, Room 2C-282  fax:    (908)582-3340
Murray Hill, NJ  07974            web: http://www.cs.bell-labs.com/~jmc


[Rd] couldn't find function "setClass"
John Chambers