[Rd] tempdir() containing spaces breaks installing source packages
kry|ov@r00t @end|ng |rom gm@||@com
Fri Dec 13 16:39:25 CET 2019
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
More information about the R-devel