Folks:
I am getting a build failure when I:
#' @importFrom utils shortPathName
which roxygenizes it to the NAMESPACE.
I suspect this is because this particular function is Windows-only, but I'm
a bit confused how I should "properly" importFrom a function like this
so
it doesn't cause a build failure, but I don't get a note in my R CMD
CHECK
if I DON'T have it:
gdal_setInstallation : correctPath: no visible global function
definition for 'shortPathName'
gdalinfo: no visible global function definition for 'glob2rx'
gdallocationinfo: no visible global function definition for
'write.table'
gdaltransform: no visible global function definition for 'write.table'
get_subdatasets: no visible global function definition for 'glob2rx'
mosaic_rasters: no visible global function definition for 'write.table'
Undefined global functions or variables:
glob2rx shortPathName write.table
Consider adding
importFrom("utils", "glob2rx", "shortPathName",
"write.table")
to your NAMESPACE.
I'll note my function actually first checks to see what OS is running, and
doesn't use this function on non-Windows machines, so having this function
does not cause any actual errors:
...
if (.Platform$OS.type=="windows")
{
x <- shortPathName(x)
} else
{
x <- path.expand(x)
}
...
Is there a way to do a conditional importFrom based on the OS? Or can I
safely ignore this (I'm trying to submit to CRAN).
--j
[[alternative HTML version deleted]]
On 04/10/2015 10:10 AM, Jonathan Greenberg wrote:> Folks: > > I am getting a build failure when I: > #' @importFrom utils shortPathName > > which roxygenizes it to the NAMESPACE. > > I suspect this is because this particular function is Windows-only, but I'm > a bit confused how I should "properly" importFrom a function like this so > it doesn't cause a build failure, but I don't get a note in my R CMD CHECK > if I DON'T have it: > > gdal_setInstallation : correctPath: no visible global function > definition for 'shortPathName' > gdalinfo: no visible global function definition for 'glob2rx' > gdallocationinfo: no visible global function definition for > 'write.table' > gdaltransform: no visible global function definition for 'write.table' > get_subdatasets: no visible global function definition for 'glob2rx' > mosaic_rasters: no visible global function definition for 'write.table' > Undefined global functions or variables: > glob2rx shortPathName write.table > Consider adding > importFrom("utils", "glob2rx", "shortPathName", "write.table") > to your NAMESPACE. > > I'll note my function actually first checks to see what OS is running, and > doesn't use this function on non-Windows machines, so having this function > does not cause any actual errors: > > ... > > if (.Platform$OS.type=="windows") > > { > > x <- shortPathName(x) > > } else > > { > > x <- path.expand(x) > > } > > > ... > > Is there a way to do a conditional importFrom based on the OS? Or can I > safely ignore this (I'm trying to submit to CRAN). >Yes, you can put conditionals into the NAMESPACE file. Apparently roxygen2 doesn't support this feature, so you'll have to do it by hand. Duncan Murdoch
Duncan Murdoch <murdoch.duncan <at> gmail.com> writes:> > On 04/10/2015 10:10 AM, Jonathan Greenberg wrote: > > Folks: > >[snip snip snip]> > > > Is there a way to do a conditional importFrom based on the OS? Or can I > > safely ignore this (I'm trying to submit to CRAN). > > > > Yes, you can put conditionals into the NAMESPACE file. Apparently > roxygen2 doesn't support this feature, so you'll have to do it by hand. > > Duncan Murdoch > >This has been submitted as an issue at https://github.com/klutometis/roxygen/issues/378 closely related: https://github.com/klutometis/roxygen/issues/371 my current hacky solution to this is to use a Makefile that post-processes the NAMESPACE after it's roxygenized, e.g. search for "getRversion" in https://github.com/glmmTMB/glmmTMB/blob/master/Makefile