Re: [Rd] Base R examples that write to current working directory

2018-04-04 Thread Martin Maechler
> Gabe Becker 
> 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 

> wrote:

>> > Henrik Bengtsson 
>> > 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
>> >  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=✓=unlink+
>> extension%3ARd=
>> 

>> .
>>  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

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Base R examples that write to current working directory

2018-04-04 Thread Gabe Becker
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.

Best,
~G

On Tue, Apr 3, 2018 at 2:37 AM, Martin Maechler 
wrote:

> > Henrik Bengtsson 
> > 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
> >  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=✓=unlink+
> extension%3ARd=
> 
> .
>  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
> >>>
> >>> __
> >>> 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
>
> > __
> > 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
>



-- 
Gabriel Becker, Ph.D
Scientist
Bioinformatics and Computational Biology
Genentech Research

[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Base R examples that write to current working directory

2018-04-03 Thread Martin Maechler
> Henrik Bengtsson 
> 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
>  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=✓=unlink+extension%3ARd=.
 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
>>> 
>>> __
>>> 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

> __
> 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] Base R examples that write to current working directory

2018-03-30 Thread Henrik Bengtsson
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.

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
 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=✓=unlink+extension%3ARd=.
>>> 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
>>
>> __
>> 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

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Base R examples that write to current working directory

2018-03-30 Thread Uwe Ligges



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=✓=unlink+extension%3ARd=. 


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

__
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] Base R examples that write to current working directory

2018-03-29 Thread Duncan Murdoch

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=✓=unlink+extension%3ARd=.
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.


Duncan Murdoch

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel