Re: [Rd] Possible bug or annoyance with library.dynam.unload()
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.comwrote: 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 Fornerkarl.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
Re: [Rd] Possible bug or annoyance with library.dynam.unload()
On 22/09/2010 11:22 AM, Karl Forner wrote: 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) Your package depends on Rcpp, so I didn't try it in the alpha version of 2.12.0 (Rcpp isn't available there in a Windows binary at the moment), but I did try it in R-patched. With one minor change to your script (the lib.loc needs to be local, not local/ on Windows), I can reproduce the problem, and it looks like a bug to me. Thanks for the report, I'll put it on the bugs page, and hopefully it will be fixed before the 2.12.0 release. Duncan Murdoch 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 Murdochmurdoch.dun...@gmail.comwrote: 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 Fornerkarl.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 __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Possible bug or annoyance with library.dynam.unload()
Your package depends on Rcpp, so I didn't try it in the alpha version of 2.12.0 It's a mistake, in fact it does not depend anymore. You can safely delete the src/Makevars file. Duncan Murdoch 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 Murdochmurdoch.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 Fornerkarl.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 [[alternative HTML version deleted]] __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Possible bug or annoyance with library.dynam.unload()
Le 22/09/10 17:31, Duncan Murdoch a écrit : On 22/09/2010 11:22 AM, Karl Forner wrote: 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) Your package depends on Rcpp, so I didn't try it in the alpha version of 2.12.0 (Rcpp isn't available there in a Windows binary at the moment) (This might be moot given Karl's answer), but: We are working on having Rcpp to work with R 2.12.0, we have currently a few issues to deal with due to the use of a newer compiler for R 2.12.0. We hope we can make this happen before R 2.12.0 is out next month. Romain but I did try it in R-patched. With one minor change to your script (the lib.loc needs to be local, not local/ on Windows), I can reproduce the problem, and it looks like a bug to me. Thanks for the report, I'll put it on the bugs page, and hopefully it will be fixed before the 2.12.0 release. Duncan Murdoch 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 Murdochmurdoch.dun...@gmail.comwrote: 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 Fornerkarl.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 -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://bit.ly/cCmbgg : Rcpp 0.8.6 |- http://bit.ly/bzoWrs : Rcpp svn revision 2000 `- http://bit.ly/b8VNE2 : Rcpp at LondonR, oct 5th __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Possible bug or annoyance with library.dynam.unload()
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 ? 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
Re: [Rd] Possible bug or annoyance with library.dynam.unload()
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 Fornerkarl.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 __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] Possible bug or annoyance with library.dynam.unload()
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