Henrik, Thanks for the detailed response! I'll have to look at the R.cache package and try out your suggestions.
Jon On Mon, Jun 29, 2015 at 12:48 PM, Henrik Bengtsson < henrik.bengts...@ucsf.edu> wrote: > FYI, > > my R.cache package keeps cache files under a specific cache directory. > To meet the CRAN Policies > [http://cran.r-project.org/web/packages/policies.html] that: > > "Packages should not write in the users’ home filespace, nor anywhere > else on the file system apart from the R session’s temporary directory > (or during installation in the location pointed to by TMPDIR: and such > usage should be cleaned up). Installing into the system’s R > installation (e.g., scripts to its bin directory) is not allowed. > > Limited exceptions may be allowed in interactive sessions if the > package obtains confirmation from the user." > > The R.cache root directory is setup as follows: > > 1. It can be specified via environment variable R_CACHE_PATH. If that > is not given, it defaults to ~/.Rcache/, i.e. effectively: rootpath <- > Sys.getenv("R_CACHE_PATH", default="~/.Rcache"). > > 2. Next, if and only if this directory exists, then no "questions > asked" and this directory will be used as is. > > 3. If it does not exist and R runs in an interactive session, then the > user is prompted whether s/he wish to create the directory given by > the 'rootpath' rule above, e.g. > > > library(R.cache) > The R.cache package needs to create a directory that will hold cache > files. It is convenient to use one in the user's home directory, > because it remains also after restarting R. Do you wish to create the > '~/.Rcache/' directory? If not, a temporary directory > (C:\Users\hb\AppData\Local\Temp\Rtmp0udmsF/.Rcache) that is specific > to this R session will be used. [Y/n]: > > If user accepts, then the directory is created and we're back to Step > 2 above (which will be the case for all future R sessions). > > 4. If the user don't want to create this directory, or R runs in a > non-interactive session (e.g. R CMD check), then a temporary cache > directory is used, which is rootpath <- file.path(tempdir(), > ".Rcache"). This directory is only guaranteed to exist for the > current session. > > Comment on ~/.Rcache/: This default was chosen because it can be > created on all platforms and for all users. I don't know of any other > path (except one under tempdir()) for which this is true. The > downside is that it adds to the user's quota, will most likely be > backed up by default etc. However, it is very easy to use file links > to point it elsewhere, e.g. ln -s /vartmp/$USER/.Rcache ~/.Rcache/. > > > If your GIS data is supposed to live beyond a single R session, then > you could use a similar approach for your MazamaSpatialUtils package. > You could emulate the above completely, e.g. MAZAMA_SPATIAL_PATH and > ~/.mazama_spatial/. Alternatively, you could leverage the R.cache > package and simply put all your data in a subdirectory under the > R.cache root path, e.g. getCachePath(dirs="MazamaSpatialUtils"). For > most users this will become ~/.Rcache/MazamaSpatialUtils/. With this, > all required interactions with the user is taken care of by R.cache > (as above) and it will also fallback to using a temporary directory > when run under 'R CMD check'.k > > > Either way, you definitely want to use tempdir() for a > session-specific temporary directory, e.g. > > > tempdir() > [1] "C:\\Users\\hb\\AppData\\Local\\Temp\\Rtmp0udmsF" > > It works on all platforms and you don't have to create your on "hash" > subdirectory. > > > /Henrik > (author of R.cache) > > On Mon, Jun 29, 2015 at 9:22 AM, Paul Gilbert <pgilbert...@gmail.com> > wrote: > > Regarding alternative places for scripts, you can add a directory (eg > > inst/testLocalScripts) and then with a recently added R CMD feature you > can > > do > > > > R CMD check --test-dir=inst/testLocalScripts your-package.tar.gz > > > > This will not (automatically) be checked on CRAN. Beware that you also > need > > to run R CMD check without this option to run your regular tests. > > > > Paul > > > > > > > > On 06/29/2015 11:25 AM, Jonathan Callahan wrote: > >> > >> Hi, > >> > >> The MazamaSpatialUtils > >> <http://cran.r-project.org/package=MazamaSpatialUtils> package has a > >> required "package state" variable which users set to specify where they > >> want to store large amounts of GIS data that is being downloaded and > >> converted by the package. The implementation of this follows Hadley's > >> advice here: > >> > >> http://adv-r.had.co.nz/Environments.html#explicit-envs > >> > >> The functionality is implemented with package environment and getter and > >> setter functions: > >> > >> spatialEnv <- new.env(parent = emptyenv()) > >> spatialEnv$dataDir <- NULL > >> > >> > >> getSpatialDataDir <- function() { > >> if (is.null(spatialEnv$dataDir)) { > >> stop('No data directory found. Please set a data directory with > >> setSpatialDataDir("YOUR_DATA_DIR").',call.=FALSE) > >> } else { > >> return(spatialEnv$dataDir) > >> } > >> } > >> > >> > >> setSpatialDataDir <- function(dataDir) { > >> old <- spatialEnv$dataDir > >> dataDir <- path.expand(dataDir) > >> tryCatch({ > >> if (!file.exists(dataDir)) dir.create(dataDir) > >> spatialEnv$dataDir <- dataDir > >> }, warning = function(warn) { > >> warning("Invalid path name.") > >> }, error = function(err) { > >> stop(paste0("Error in setSpatialDataDir(",dataDir,").")) > >> }) > >> return(invisible(old)) > >> } > >> > >> > >> My question is: > >> > >> *What is an appropriate directory to specify for vignettes (or demos or > >> examples) that need to go through CRAN testing?* > >> > >> The R code in vignettes need to specify a directory that is writable > >> during > >> the package build process but that will also be available to users. > >> > >> Should we create a /tmp/<hash> directory? Would that be available on all > >> systems? > >> > >> Alternatively, > >> > >> *What is an alternative to vignettes and demos for tutorial scripts that > >> should not be tested upon submission to CRAN?* > >> > >> > >> Thanks for any suggestions. > >> > >> Jon > >> > >> > > > > ______________________________________________ > > R-package-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-package-devel > > -- Jonathan Callahan, PhD Mazama Science 206-708-5028 mazamascience.com [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel