[Rd] Base R examples that write to current working directory
Martin Maechler
maechler at stat.math.ethz.ch
Wed Apr 4 12:43:13 CEST 2018
>>>>> Gabe Becker <becker.gabe at gene.com>
>>>>> on Tue, 3 Apr 2018 21:16:12 -0700 writes:
> Martin et al,
> I have submitted a patch on bugzilla which fixes all of the examples I
> could easily find which were not already writing only to temporary files or
> switching to a temp directory before writing files to the working
> directory. https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17403
> Passes make check-devel so the examples run and the packages that were
> modified pass check.
Thank you very much, Gabe,
I've committed most of it now (to R-devel only, to be ported to
3.5.0 alpha, later).
There are some issues I've wanted to postpone and open for
discussion, e.g., here (on R-devel):
https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17403#c3 :
1) All(?) the file-based graphics devices have a default file
name which resides in the current working directory,
pdf(), postscript(), png(), ..., and pictex().
We may think that this *default* should be changed, rather
than the documentation, e.g., for pictex() , from
"Rplots.tex" to tempfile("Rplots.tex")
2) The write() function, for 30 years back compatibility with S,
has a default 'file = "data"'
Should we change the default to use "", the same as
write.table() uses, or also something tempfile() based?
https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17403#c4 :
3) prompt() and promptData() [and possibly other prompt*()] :
I did not apply your proposed changes here, see the
R-bugzilla for reasoning.
Still one may want to propose changing the default behavior
from using the getwd() working directory to tempdir() instead.
Martin
> On Tue, Apr 3, 2018 at 2:37 AM, Martin Maechler <maechler at stat.math.ethz.ch>
> wrote:
>> >>>>> Henrik Bengtsson <henrik.bengtsson at gmail.com>
>> >>>>> on Fri, 30 Mar 2018 10:14:04 -0700 writes:
>>
>> > So, the proposal would then be to write to tempdir(),
>> > correct? If so, I see three alternatives:
>>
>> > 1. explicitly use file.path(tempdir(), filename), or
>> > tempfile() everywhere.
>>
>> I think it should clearly be '1.',
>> as both '2.' and '3.' would need new functionality in R.
>>
>> Ideally we'd get the patch within a day or two, so we can safely
>> apply it also to R 3.5.0 alpha (before it turns beta!).
>>
>> I think the 'eval.path' argument to example() is a nice idea,
>> but also changing its default to tempdir() is definitely out of
>> the question for R 3.5.0.
>>
>> Martin
>>
>>
>> > 2. wrap example code in a withTempDir({ ... }) call.
>>
>> > 3. Add an 'eval.path' (*) argument to example() and make
>> > it default to eval.path = tempdir(). This would probably
>> > be backward compatible and keep the code example clean.
>> > The downside is when a user runs an example and can't
>> > locate produced files. (*) or 'wd', 'workdir', ...
>>
>> > /Henrik
>>
>> > On Fri, Mar 30, 2018 at 9:25 AM, Uwe Ligges
>> > <ligges at statistik.tu-dortmund.de> wrote:
>> >>
>> >>
>> >> On 30.03.2018 00:08, Duncan Murdoch wrote:
>> >>>
>> >>> On 29/03/2018 5:23 PM, Hadley Wickham wrote:
>> >>>>
>> >>>> Hi all,
>> >>>>
>> >>>> Given the recent CRAN push to prevent examples writing
>> >>>> to the working directory, is there any interest in
>> >>>> fixing base R examples that write to the working
>> >>>> directory? A few candidates are the graphics devices,
>> >>>> file.create(), writeBin(), writeChar(), write(), and
>> >>>> saveRDS(). I'm sure there are many more.
>> >>>>
>> >>>> One way to catch these naughty examples would be to
>> >>>> search for unlink() in examples: e.g.,
>> >>>>
>> >>>> https://github.com/wch/r-source/search?utf8=✓&q=unlink+
>> extension%3ARd&type=
>> <https://github.com/wch/r-source/search?utf8=%E2%9C%93&q=unlink+extension%3ARd&type=>
>> .
>> >>>> Of course, simply cleaning up after yourself is not
>> >>>> sufficient because if those files existed before the
>> >>>> examples were run, the examples will destroy them.
>> >>>>
>> >>>
>> >>> Why not put together a patch that fixes these? This
>> >>> doesn't seem to be something that needs discussion,
>> >>> fixing the bad examples would be a good idea.
>> >>
>> >>
>> >> Seconded. CRAN would not accept these base packages,
>> >> hence we should urgently give better examples.
>> >>
>> >> Best, Uwe
>> >>
>> >>> Duncan Murdoch
> --
> Gabriel Becker, Ph.D
> Scientist
> Bioinformatics and Computational Biology
> Genentech Research
More information about the R-devel
mailing list