Re: [Rd] Possible bug or annoyance with library.dynam.unload()

2010-09-22 Thread Karl Forner
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()

2010-09-22 Thread Duncan Murdoch

 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()

2010-09-22 Thread Karl Forner
 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()

2010-09-22 Thread Romain Francois

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()

2010-09-21 Thread Karl Forner
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()

2010-09-21 Thread Duncan Murdoch

 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()

2010-09-16 Thread Karl Forner
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