Thanks Duncan for your suggestion. I could not find any package using dynamic library, namespaces and not the useDynLib pragma so I created a minimalistic package to demonstrate the problem. Please find attached a very small package foo (8.8k)
Steps to reproduce the problem: * unarchive it ( tar zxvf foo_0.1.tar.gz ) * cd foo * install it locally ( mkdir local; R CMD INSTALL -l local . ) * R > library(foo, lib.loc="local/") >.dynLibs() # there you should be able to see the foo.so lib, in my case /x05/people/m160508/workspace/foo/local/foo/libs/foo.so > unloadNamespace("foo") .onUnload, libpath= local/fooWarning message: .onUnload failed in unloadNamespace() for 'foo', details: call: library.dynam.unload("foo", libpath) error: shared library 'foo' was not loaded #The libpath that the .onUnload() gets is "local/foo". #This fails: >library.dynam.unload("foo", "local/foo") Error in library.dynam.unload("foo", "local/foo") : shared library 'foo' was not loaded # but if you use the absolute path it works: >library.dynam.unload("foo", "/x05/people/m160508/workspace/foo/local/foo") Karl On Tue, Sep 21, 2010 at 5:33 PM, Duncan Murdoch <murdoch.dun...@gmail.com>wrote: > On 21/09/2010 10:38 AM, Karl Forner wrote: > >> Hello, >> >> I got no reply on this issue. >> It is not critical and I could think of work-around, but it really looks >> like a bug to me. >> Should I file a bug-report instead of posting in this list ? >> > > I'd probably post instructions for a reproducible example first. Pick some > CRAN package, tell us what to do with it to trigger the error, and then we > can see if it's something special about your package or Roxygen or a general > problem. > > Duncan Murdoch > > Thanks, >> >> Karl >> >> On Thu, Sep 16, 2010 at 6:11 PM, Karl Forner<karl.for...@gmail.com> >> wrote: >> >> > Hello, >> > >> > I have a package with a namespace. Because I use Roxygen that >> overwrites >> > the NAMESPACE file each time it is run, I use a R/zzz.R file with >> > an .onLoad() and .onUnload() functions to take care of loading and >> > unloading my shared library. >> > >> > The problem: if I load my library from a local directory, then the >> > unloading of the package fails, e.g: >> > >> > # loads fine >> > >library(Foo, lib.loc=".Rcheck") >> > >> > >unloadNamespace("Foo") >> > Warning message: >> > .onUnload failed in unloadNamespace() for 'Foo', details: >> > call: library.dynam.unload("Foo", libpath) >> > error: shared library 'Foo' was not loaded >> > >> > # I traced it a little: >> > >library.dynam.unload("Foo", ".Rcheck/Foo") >> > Error in library.dynam.unload("Foo", ".Rcheck/Foo") : >> > shared library 'Foo' was not loaded >> > >> > # using an absolute path works >> > >library.dynam.unload("Foo", "/home/toto/.Rcheck/Foo") >> > >> > >> > So from what I understand, the problem is either that the relative >> libpath >> > is sent to the .onUnload() function instead of the absolute one, >> > or that library.dynam.unload() should be modified to handle the >> relative >> > paths. >> > >> > Am I missing something ? What should I do ? >> > >> > Thanks, >> > >> > >> > Karl >> > >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > >
foo_0.1.tar.gz
Description: GNU Zip compressed data
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel