From Rainer at krugs.de  Fri Oct  4 12:59:25 2013
From: Rainer at krugs.de (Rainer M Krug)
Date: Fri, 4 Oct 2013 12:59:25 +0200
Subject: [Rd] check warning  with .onLoad() and setClass()
In-Reply-To: <AD583E37-4E49-406C-B4A8-8F13C31E9B14@r-project.org> (John
	Chambers's message of "Thu, 3 Oct 2013 10:03:29 -0700")
References: <m2zjqqfybi.fsf@krugs.de>
	<AD583E37-4E49-406C-B4A8-8F13C31E9B14@r-project.org>
Message-ID: <m28uy9b8tu.fsf@krugs.de>

Thanks John

that is likely the solution to my problem, but I don't understand how I
can use it and I can't find the example in the Rcpp package (I did grep
for setLoadAtion on the whole source package of Rcpp, but nothing came up with ). Could you
please provide me a link (or the filename) where I can see how to use
this function?

Thanks,

Rainer

John Chambers <jmc at r-project.org> writes:

> Don't use .onLoad() to set class (or other nontrivial) information at
> load time.  Use setLoadActions(), which was created exactly to get
> around the limitations of .onLoad().
>
> For an example, see the Rcpp package, which uses this to set up load-time C++ linkages.
>
> John Chambers
>
> On Oct 3, 2013, at 3:22 AM, Rainer M Krug <Rainer at krugs.de> wrote:
>
>> Hi
>> 
>> I am writing a package in which I define a new class in the .onLoad()
>> hook:
>> 
>> ,----
>> | .onLoad <- function(libname, pkgname) {
>> |     setClass(
>> |         "inDrak",
>> |         representation(
>> |             init = "SpatialGridDataFrame"
>> |             ),
>> |         contains = "simObj"
>> |         )
>> | }
>> `----
>> 
>> The class "simObj" is defined in the package, which is in the depends
>> section in the DESCRIPTION file:
>> 
>> ,----
>> | Package: InDrak
>> | Type: Package
>> | Title: Alien spread management simulation model for the Drakensberg
>> | Version: 0.1-0
>> | Date: 2013-10-03_11-55
>> | Author: Rainer M. Krug
>> | Maintainer: Rainer M Krug <Rainer at krugs.de>
>> | Description: Simulate the spread of three Invasive Alien Plants under different
>> |     management and budget scenarios
>> | License: GPL-3
>> | LazyLoad: yes
>> | Depends:
>> |     RSQLite,
>> |     simecol
>> | Imports:
>> |     methods,
>> |     sp,
>> |     spgrass6,
>> |     DBI,
>> |     logger,
>> |     fireSim,
>> |     seedProd,
>> |     seedGerm,
>> |     seedDisp
>> | LinkingTo: Rcpp
>> | Collate:
>> |     'beginYear.R'
>> |     'clearAliens.R'
>> |     'competition.R'
>> |     'cumulativeDc.R'
>> |     'dcToIndLayer.R'
>> |     'dispProb2D.R'
>> |     'endYear.R'
>> |     'fireAliens.R'
>> |     'germEst.R'
>> |     'initfunc.R'
>> |     'layerIO.R'
>> |     'layerNames.R'
>> |     'main.R'
>> |     'newInDrak.R'
>> |     'onLoad.R'
>> |     'package.R'
>> |     'parameter.R'
>> |     'parmsAcacia.R'
>> |     'parmsBudget.R'
>> |     'parmsFire.R'
>> |     'parmsPinus.R'
>> |     'parmsRubus.R'
>> |     'resetOptions.R'
>> |     'seedDispersal.R'
>> |     'seedProduction.R'
>> |     'stats.R'
>> `----
>> 
>> If important, the NAMESPACE file is here:
>> 
>> ,----
>> | export(depRateName)
>> | export(exportRaster)
>> | export(fireLayerName)
>> | export(ignitionRiskName)
>> | export(importAliens)
>> | export(importClearingHistory)
>> | export(importFireHistory)
>> | export(importIgnitionRisk)
>> | export(importSpecies)
>> | export(importVegetation)
>> | export(layerExists)
>> | export(layerName)
>> | export(newInDrak)
>> | export(parameter)
>> | export(parmsAcacia)
>> | export(parmsBudget)
>> | export(parmsFire)
>> | export(parmsPinus)
>> | export(parmsRubus)
>> | export(resetOptions)
>> | export(statDistName)
>> | export(suitName)
>> | import(DBI)
>> | import(fireSim)
>> | import(logger)
>> | import(methods)
>> | import(seedDisp)
>> | import(seedGerm)
>> | import(seedProd)
>> | import(sp)
>> | import(spgrass6)
>> `----
>> 
>> The package builds fine, it installs without problems and works as
>> expected, but when checking it, I get the following error:
>> 
>> ,----
>> | $ R CMD check ./InDrak_0.1-0.tar.gz 
>> | * using log directory ?/Users/rainerkrug/Documents/Projects/R-Packages/inDrak/InDrak.Rcheck?
>> | * using R version 3.0.1 (2013-05-16)
>> | * using platform: x86_64-apple-darwin10.8.0 (64-bit)
>> | * using session charset: UTF-8
>> | * checking for file ?InDrak/DESCRIPTION? ... OK
>> | * checking extension type ... Package
>> | * this is package ?InDrak? version ?0.1-0?
>> | * checking package namespace information ... OK
>> | * checking package dependencies ... OK
>> | * checking if this is a source package ... OK
>> | * checking if there is a namespace ... OK
>> | * checking for executable files ... OK
>> | * checking for hidden files and directories ... OK
>> | * checking for portable file names ... OK
>> | * checking for sufficient/correct file permissions ... OK
>> | * checking whether package ?InDrak? can be installed ... OK
>> | * checking installed package size ... OK
>> | * checking package directory ... OK
>> | * checking DESCRIPTION meta-information ... OK
>> | * checking top-level files ... OK
>> | * checking for left-over files ... OK
>> | * checking index information ... OK
>> | * checking package subdirectories ... OK
>> | * checking R files for non-ASCII characters ... OK
>> | * checking R files for syntax errors ... OK
>> | * checking whether the package can be loaded ... OK
>> | * checking whether the package can be loaded with stated dependencies ... OK
>> | * checking whether the package can be unloaded cleanly ... OK
>> | * checking whether the namespace can be loaded with stated dependencies ... WARNING
>> | Error: .onLoad failed in loadNamespace() for ?InDrak?, details:
>> |   call: reconcilePropertiesAndPrototype(name, slots, prototype, superClasses, 
>> |   error: no definition was found for superclass ?simObj? in the specification of class ?inDrak?
>> | Execution halted
>> | 
>> | A namespace must be able to be loaded with just the base namespace
>> | loaded: otherwise if the namespace gets loaded by a saved object, the
>> | session will be unable to start.
>> | 
>> | Probably some imports need to be declared in the NAMESPACE file.
>> | * checking whether the namespace can be unloaded cleanly ... WARNING
>> | Error: .onLoad failed in loadNamespace() for ?InDrak?, details:
>> |   call: reconcilePropertiesAndPrototype(name, slots, prototype, superClasses, 
>> |   error: no definition was found for superclass ?simObj? in the specification of class ?inDrak?
>> | Execution halted
>> | * checking loading without being on the library search path ... OK
>> | * checking for unstated dependencies in R code ... OK
>> | * checking S3 generic/method consistency ... OK
>> | * checking replacement functions ... OK
>> | * checking foreign function calls ... OK
>> | * checking R code for possible problems ... NOTE
>> | .initfunc: no visible global function definition for
>> |   ?initialSeedProductionAliens?
>> | .initfunc: no visible global function definition for ?endYear?
>> | .main: no visible global function definition for ?beginYear?
>> | .main: no visible global function definition for ?fireAliens?
>> | .main: no visible global function definition for ?seedProductionAliens?
>> | .main: no visible global function definition for ?seedDispersalAliens?
>> | .main: no visible global function definition for ?germEstAliens?
>> | .main: no visible global function definition for ?endYear?
>> | * checking Rd files ... OK
>> | * checking Rd metadata ... OK
>> | * checking Rd cross-references ... OK
>> | * checking for missing documentation entries ... OK
>> | * checking for code/documentation mismatches ... OK
>> | * checking Rd \usage sections ... OK
>> | * checking Rd contents ... OK
>> | * checking for unstated dependencies in examples ... OK
>> | * checking examples ... NONE
>> | * checking PDF version of manual ... OK
>> | 
>> | WARNING: There were 2 warnings.
>> | NOTE: There was 1 note.
>> | See
>> |   ?/Users/rainerkrug/Documents/Projects/R-Packages/inDrak/InDrak.Rcheck/00check.log?
>> | for details.
>> `----
>> 
>> I am sure I am missing something simple here and I really think I
>> overlooked it in the "Writing R extensions"...
>> 
>> Thanks,
>> 
>> Rainer
>> 
>> -- 
>> Rainer M. Krug
>> 
>> email: RMKrug<at>gmail<dot>com
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>
<#secure method=pgpmime mode=sign>

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :       +33 - (0)9 53 10 27 44
Cell:       +33 - (0)6 85 62 59 98
Fax :       +33 - (0)9 58 10 27 44

Fax (D):    +49 - (0)3 21 21 25 22 44

email:      Rainer at krugs.de

Skype:      RMkrug



[Rd] check warning with .onLoad() and setClass()
Rainer M Krug