I have some code in rgl and rgl2gltf that should be run during the
package install process, and not later. (It's a call to
rgl::makeDependency, which does some stuff with Javascript files and
writes into the package installation directory, saving the paths of the
files it wrote.)
Currently rgl handles this by simply placing calls to makeDependency in
one of the .R files, relying on the fact that they are run at install
time and not later. It creates rgl:::rglDependency and another similar
object. That works fine.
Tomas just pointed out to me that rgl2gltf is trying to modify its
installation location after installation. This is happening because it
calls makeDependency in a function the user can call, and that's bad, so
I'm fixing it.
The problem is that rgl2gltf uses Roxygen for documentation, and Roxygen
executes all the code in the package when it is producing Rd files.
(Normally this just creates the functions in the package, it doesn't
actually call them, so it's harmless. But calling makeDependency from
Roxygen fails because I wasn't expecting that.)
So I'd like to ask for suggestions for the simplest way to deal with
this in rgl2gltf.
1. One choice is to fix rgl::makeDependency so it can tell that it is
being run after installation, and stop trying to write any files. It
should just return the object. I can probably do this, but I've just
had two rgl releases in the last few weeks, so I'd prefer to limit the
changes to rgl2gltf.
2. I can use pkgload::is_loading() to detect the load_all() call from
Roxygen and not run makeDependency in that situation. But that forces a
dependence on pkgload, and that's not very appealing.
3. Maybe I can mark the file that contains the makeDependency call so
that Roxygen ignores it. Is that possible?
4. I can write a Makevars file that runs makeDependency. That seems
like a pretty heavyweight solution, especially since I need to save the
result of the call so it is available later.
Does anyone else have this problem, and a nice solution for it?
Duncan Murdoch
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel