[Rd] tempdir() containing spaces breaks installing source packages

William Dunlap wdun|@p @end|ng |rom t|bco@com
Fri Dec 13 18:31:01 CET 2019


You might expand the scope of this a bit to include Windows usernames with
non-ASCII characters in them.  If I recall correctly, if you are logged
under a Cyrillic UTF-8 name then R will not even start.  We have seen this
in the wild.

Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Fri, Dec 13, 2019 at 8:47 AM Ivan Krylov <krylov.r00t using gmail.com> wrote:

> Hello everyone!
>
> Temp paths are used in system2() calls without shQuote() because
> they are assumed not to contain spaces. On Windows,
> GetShortPathName() is used to try to ensure that.
>
> Unfortunately, sometimes GetShortPathName() silently fails to return a
> 8.3 file path and gives a full path instead (8.3 file names might be
> disabled on newer Windows 10 installations, or there may be another
> reason). This has been spotted in the wild [*]. When %USERPROFILE%
> contains spaces, this results in tempdir() also containing spaces and
> prevents the user from being able to install source packages.
>
> As of <https://svn.r-project.org/R/trunk@77563>,
>
>  - src/library/utils/R/packages2.R line 839 contains an unquoted
>    temporary file path (fil) passed to system2(), which results in it
>    being split and R CMD INSTALL not being able to find the package
>    file. In other invocations of R CMD INSTALL in the same file, the
>    path is properly quoted.
>
>  - src/library/tools/R/check.R line 125 contains an unquoted temporary
>    file path passed to system2, which results in Rterm.exe -f not being
>    able to find the RtmpXXXXXX\RinXXXXXXXX file, causing the attempt to
>    run tools:::makeLazyLoading(...) to fail.
>
> I can report these two problems (thanks to Martin Maechler for the
> Bugzilla account and the advice) and attach the patches required to fix
> them, but there might be more. The bug report [**] is somewhat relevant
> here (though changing the default behaviour of system2() is obviously
> not the right solution as it would break existing code).
>
> Is there anything I should consider before creating the PR as
> described above?
>
> --
> Best regards,
> Ivan
>
> [*] https://stat.ethz.ch/pipermail/r-help/2019-December/465075.html
>
> [**] https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16127
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

	[[alternative HTML version deleted]]



More information about the R-devel mailing list