[Rd] about integration of a library into package creation

Uwe Ligges ligges at statistik.uni-dortmund.de
Tue Jun 13 12:15:42 CEST 2006


Nicolas Turenne wrote:
> i follow your recommendation writing this :
> in the description file
> Depends: R (>= 2.3), quadprog, ade4, spdep
> Imports: quadprog, ade4, spdep
> 
> in the namespace file
> useDynLib(quadprog)
> useDynLib(spdep)
> useDynLib(ade4)
> importFrom("ade4", "dist.dudi")
> importFrom("quadprog", "solve.QP")
> importFrom("ade4", "mstree")
> importFrom("ade4", "neig2mat")
> importFrom("ade4", "dist.dudi")
> importFrom("ade4", "dudi.pca")
> importFrom("ade4", "dudi.coa")
> importFrom("spdep", "knearneigh")
> 
> and the result of compiling is :
>  preparing package svcR for lazy loading
> Erreur dans loadNamespace(ns, lib.loc) : le package 'quadprog' n'a pas 
> d'espace de noms
> Exécution arrêtée
> make: *** [lazyload] Error 1
> *** Installation of svcR failed ***
> 
> it says that quadprog has not a namespace
> perhaps it is due to location of quadprog.dll
> i have put it into inst/src directory


If you want to use the CRAN package quadprog, you should import its 
functionality, but do NOT load its dynamic library with useDynLib(), 
this will be done by the namespace mechanismsm.
Why do you want to put its dll anywhere? Simply install the package 
quadprog and use it in your namespace by the import directives!

Uwe Ligges





> thank for help
> 
> Nicolas
> 
> Uwe Ligges a écrit :
> 
>> Nicolas Turenne wrote:
>>
>>> your answer is correct after checking some doc
>>> but examples are rare
>>>
>>> when i write in the description file
>>> Depends: R (>= 2.3), quadprog, ade4, spdep
>>> and in the namespcae file
>>>
>>> useDynLib(quadprog)
>>> useDynLib(spdep)
>>> useDynLib(ade4)
>>> importFrom("dist.dudi", "ade4")
>>
>>
>>
>> Please do it the right way (package name first!):
>>
>> importFrom("ade4", "dist.dudi")
>>
>> Uwe Ligges
>>
>>
>>
>>
>>> importFrom("solve.QP", "quadprog")
>>> importFrom("mstree", "ade4")
>>> importFrom("neig2mat", "ade4")
>>> importFrom("dist.dudi", "ade4")
>>> importFrom("dudi.pca", "ade4")
>>> importFrom("dudi.coa", "ade4")
>>> importFrom("knearneigh", "spdep")
>>>
>>> i obtain :
>>> Namespace dependencies not required:
>>>   dist.dudi dudi.coa dudi.pca knearneigh mstree neig2mat solve.QP
>>>
>>> if i delete the importFrom lines
>>> i get an error about "loading / namespace not succesful" for svcr
>>>
>>> i think the solution is not far but it is disturbing
>>>
>>> thank for help
>>>
>>> ---
>>> Nicolas
>>>
>>>
>>> Duncan Murdoch a écrit :
>>>
>>>> On 6/12/2006 12:25 PM, Nicolas Turenne wrote:
>>>>
>>>>> in that sense, it is useless to load the library from R source code 
>>>>> making my package
>>>>> which is supposed to include it and load it
>>>>>
>>>>> so if i understand the R philosophy it is not possible to load dll 
>>>>> from outside ;
>>>>> the user has to load my package  and manually has to load the 
>>>>> necessary libraries
>>>>> each time he has to use my library,  right ?
>>>>
>>>>
>>>> Not at all.  When set up correctly, the user should just need to say
>>>> library(svcR) and all necessary packages and DLLs will be loaded.
>>>>
>>>> The way to specify other packages is through the "Depends" line in 
>>>> the DESCRIPTION file, and/or the import/importFrom lines in your 
>>>> NAMESPACE file.
>>>>
>>>> Duncan Murdoch
>>>>
>>>>> -- 
>>>>> Nicolas
>>>>>
>>>>> Prof Brian Ripley a écrit :
>>>>>
>>>>>> And also to load  the package, maybe with
>>>>>>
>>>>>> rterm R_DEFAULT_PACKAGES=NULL
>>>>>>
>>>>>>> library(svcR)
>>>>>>
>>>>>>
>>>>>>
>>>>>> as these messages often indicate missing package dependencies.
>>>>>>
>>>>>>>> * checking package subdirectories ... WARNING
>>>>>>>> Subdirectory 'src' contains no source files.
>>>>>>>> * checking R files for syntax errors ... OK
>>>>>>>> * checking R files for library.dynam ... OK
>>>>>>>> * checking S3 generic/method consistency ... WARNING
>>>>>>>> Erreur : le chargement du package / espace de noms a echoue' 
>>>>>>>> pour 'svcR'
>>>>>>>> Sequence d'appel :
>>>>>>>> 2: stop(gettextf("package/namespace load failed for '%s'",
>>>>>>>> libraryPkgName(packag
>>>>>>>> e)),
>>>>>>>>        call. = FALSE, domain = NA)
>>>>>>>> 1: library(package, lib.loc = lib.loc, character.only = TRUE, 
>>>>>>>> verbose =
>>>>>>>> FALSE)
>>>>>>>> Execution arrete'e
>>>>>>>> See section 'Generic functions and methods' of the 'Writing R 
>>>>>>>> Extensions'
>>>>>>>> manual.
>>>>>>>> * checking replacement functions ... WARNING
>>>>>>>> Erreur : le chargement du package / espace de noms a echoue' 
>>>>>>>> pour 'svcR'
>>>>>>>> Sequence d'appel :
>>>>>>>> 2: stop(gettextf("package/namespace load failed for '%s'",
>>>>>>>> libraryPkgName(packag
>>>>>>>> e)),
>>>>>>>
>>>>>>>
>>>>> ______________________________________________
>>>>> R-devel at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>
>>>>
>>>>
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>>



More information about the R-devel mailing list