[Rd] R CMD INSTALL cannot recognize full path on Windows

Simon Urbanek
Wed, 11 Mar 2020 22:13:04 -0000

Jiefei,

you did not commit all files into the example package - your example has things
like RcppExports.cpp as well as additional flags which are not in your GH
project. I suspect the issue is with the extra flags you're adding - those
don't come from R. Please make sure you can replicate the issue with the GH
package you created.

Cheers,
Simon


* installing *source* package 'testPackage' ...
** using staged installation
** libs

*** arch - i386
echo "test1 is [1] 0.1522111 0.2533619 0.6591809"
test1 is [1] 0.1522111 0.2533619 0.6591809
echo "R_HOME is C:/R/R-3.6.2"
R_HOME is C:/R/R-3.6.2
echo "Fake library" > testPackage.dll
installing to C:/R/R-3.6.2/library/00LOCK-testPackage/00new/testPackage/libs/i38
6

*** arch - x64
echo "test1 is [1] 0.9271811 0.8040735 0.4739104"
test1 is [1] 0.9271811 0.8040735 0.4739104
echo "R_HOME is C:/R/R-3.6.2"
R_HOME is C:/R/R-3.6.2
echo "Fake library" > testPackage.dll
installing to C:/R/R-3.6.2/library/00LOCK-testPackage/00new/testPackage/libs/x64

** help
No man pages found in package  'testPackage'
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
*** arch - i386
*** arch - x64
** testing if installed package can be loaded from final location
*** arch - i386
*** arch - x64
** testing if installed package keeps a record of temporary installation path
* DONE (testPackage)
Making 'packages.html' ... done

> On 12/03/2020, at 4:33 AM, Wang Jiefei <szwjf08 at gmail.com> wrote:
>
> Thanks a lot for your suggestions. I see what you mean. I have removed all
> unnecessary files and dependences on
https://github.com/Jiefei-Wang/example,
> but still no luck. I've tried to install the package as a user, not
admin,
> but I got the same error. Also, I apologize for spamming the mail list. I
> will keep my reply as neat as possible.
>
> Martin has suggested checking the encoding of the file and locale in the
> session info, so here is this missing information: The makefile is encoded
> in UTF-8, and the locale is:
>
> [1] LC_COLLATE=English_United States.1252
> [2] LC_CTYPE=English_United States.1252
> [3] LC_MONETARY=English_United States.1252
> [4] LC_NUMERIC=C
> [5] LC_TIME=English_United States.1252
>
> That is where I am stuck, any help would be appreciated.
>
> Best,
> Jiefei
>
>
>
> On Wed, Mar 11, 2020 at 9:56 AM Tomas Kalibera <tomas.kalibera at
gmail.com>
> wrote:
>
>> On 3/11/20 2:26 PM, Wang Jiefei wrote:
>>
>> Thanks, Tomas. I took your suggestion and change the make file to
>>
>> test1:=$(shell $(R_HOME)/bin/R --slave -e 'runif(3)')
>>
>> all: testPackage.dll
>>    echo "test1 is $(test1)"
>>    echo "R_HOME is $(R_HOME)"
>>
>> However, R CMD INSTALL still gives me the same error:
>>
>>> R CMD INSTALL testPackage_1.0.tar.gz* installing to library
'C:/Program
>> Files/R/R-devel/library'
>> * installing *source* package 'testPackage' ...
>> ** using staged installation
>> ** libs
>>
>> *** arch - i386
>> The filename, directory name, or volume label syntax is incorrect.
>> c:/Rtools/mingw_32/bin/g++ -std=gnu++11
-I"C:/PROGRA~1/R/R-devel/include"
>> -DNDEBUG  -I'C:/Program Files/R/R-devel/library/Rcpp/include'
>> -I"C:/projects/BUILD/R-source-win32/extsoft/include"     -O2
-Wall
>> -mfpmath=sse -msse2 -c RcppExports.cpp -o RcppExports.o
>> c:/Rtools/mingw_32/bin/g++ -std=gnu++11
-I"C:/PROGRA~1/R/R-devel/include"
>> -DNDEBUG  -I'C:/Program Files/R/R-devel/library/Rcpp/include'
>> -I"C:/projects/BUILD/R-source-win32/extsoft/include"     -O2
-Wall
>> -mfpmath=sse -msse2 -c example.cpp -o example.o
>> c:/Rtools/mingw_32/bin/g++ -std=gnu++11 -shared -s -static-libgcc -o
>> testPackage.dll tmp.def RcppExports.o example.o
>> -LC:/projects/BUILD/R-source-win32/extsoft/lib/i386
>> -LC:/projects/BUILD/R-source-win32/extsoft/lib
>> -LC:/PROGRA~1/R/R-devel/bin/i386 -lR
>> echo "test1 is "
>> test1 is
>> echo "R_HOME is C:/PROGRA~1/R/R-devel"
>> installing to C:/Program
>> Files/R/R-devel/library/00LOCK-testPackage/00new/testPackage/libs/i386
>>
>>
>> I have no idea how to make the example even more minimal for there is
>> literally nothing in the package now. Like you said if R just sets
R_HOME
>> and runs "make", I do not understand why it cannot find R in
this case for
>> R_HOME seems correct to me. I think there are some other things behind
R
>> CMD INSTALL but my poor knowledge does not allow me to see them...Any
help
>> will be appreciated.
>>
>> Please lets not spam the whole list with this any more - this is also
why
>> I didn't add R-devel to cc originally. The makefile may be minimal,
but the
>> example package is not - you have Rcpp dependency there, two C source
>> files, some R Studio specific thing (an .Rproj file at least). Maybe it
is
>> not related, but if you want other to help you, it would be nice to
spend
>> some of your time reducing it anyway.
>>
>> That test1 is empty means that executing R has failed. You need to find
>> out why.
>>
>> I see that you are installing into C:/Program Files/R/R-devel/library.
>> Normally that directory should not be writeable. Are you running this
as
>> Administrator? In principle this could be related, but better to find
out
>> directly why executing R is failing.
>>
>> Best
>> Tomas
>>
>>
>>
>>
>> Best,
>> Jiefei
>>
>>
>> On Wed, Mar 11, 2020 at 8:57 AM Tomas Kalibera <tomas.kalibera at
gmail.com>
>> wrote:
>>
>>>
>>> Thanks, Jiefei, unfortunately your example does not work on my
system,
>>> and also it is far from minimal. The error message you are getting
is from
>>> Windows and could be caused for example by accidental quoting of
the path
>>> using single quotes.
>>>
>>> Issues with RStudio or devtools would have to be discussed in their
>>> mailing lists/with their authors, but my guess is that the problem
is in
>>> your local configuration, and after all you need it to work with
the base R
>>> CMD INSTALL anyway. There is not much wrong R could do here, it
just sets
>>> R_HOME and runs "make".
>>>
>>> For example this works for me, but some closer alternations of your
code
>>> work as well:
>>>
>>> test1 := $(shell $(R_HOME)/bin/R --slave -e 'runif(3)')
>>> all:
>>>        echo "test1 is $(test1)"
>>>        echo "R_HOME is $(R_HOME)"
>>>
>>> I would recommend that you try to narrow down your example so that
it is
>>> really minimal. Use R_HOME, not hard-coded paths, as that is what
you would
>>> use in reality anyway. Print R_HOME and check it is valid. If the
problem
>>> persists, find out why it works when invoked from the command line
but not
>>> from R CMD INSTALL.
>>>
>>> Best
>>> Tomas
>>>
>>> On 3/10/20 10:15 AM, Wang Jiefei wrote:
>>>
>>>  Oops, I think both of us forget to cite the r-devel channel.
>>>
>>> Best,
>>> Jiefei
>>>
>>> On Tue, Mar 10, 2020 at 5:13 AM Wang Jiefei <szwjf08 at
gmail.com> wrote:
>>>
>>>> Thanks for your quick response, Tomas.
>>>>
>>>> Yes, this is a path issue, I think the problem is related to R,
not the
>>>> Rtools make. I built an example package for reproducing the
problem:
>>>> https://github.com/Jiefei-Wang/example
>>>>
>>>> Here is the version of my R and Rtools:
>>>> The release R version:
>>>> R version 3.6.2 (2019-12-12)
>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>> Running under: Windows 10 x64 (build 18362)
>>>>
>>>> The devel R version:
>>>> R Under development (unstable) (2020-03-09 r77919)
>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
>>>> Running under: Windows 10 x64 (build 18362)
>>>>
>>>> Rtools version 3.5.0.4
>>>>
>>>> Things become interesting after I did more tests. I originally
thought
>>>> this might be only related to the devel R, but it seems like
the released
>>>> version is also affected. Here is a summary of my test results
using the
>>>> example package:
>>>>
>>>> 1. command-line Rtools make: Success
>>>> 2. command-line R CMD INSTALL: Failed on both R3.6.2 and R4.0
>>>> 3. Rstudio install button: Success on R3.6.2 but failed on R4.0
>>>> 4. Rstudio running devtool::install: Success on both
>>>>
>>>> Now the problem becomes more intricate. I have no idea which
one goes
>>>> wrong. Here are the details of my test results, I hope it can
be helpful:
>>>>
>>>> *Command line:*
>>>> 1. "C:\Rtools\mingw_64\bin\mingw32-make.exe" -f
>>>> example-master/src/Makevars
>>>> test1 is [1] 0.2039269 0.1454402 0.1578401
>>>> test2 is [1] 0.1919521 0.9257183 0.2130247
>>>> test3 is [1] 0.06255174 0.27555363 0.72737111
>>>> mingw32-make: *** No targets.  Stop.
>>>>
>>>> 2. "C:\Program Files\R\R-3.6.2\bin\R" CMD INSTALL
testPackage_1.0.tar.gz
>>>> *** arch - x64
>>>> test1 is [1] 0.1584299 0.9338829 0.9528810
>>>> The filename, directory name, or volume label syntax is
incorrect.
>>>> test2 is
>>>> The filename, directory name, or volume label syntax is
incorrect.
>>>> test3 is
>>>>
>>>>  3. "C:\Program Files\R\R-devel\bin\R" CMD INSTALL
>>>> testPackage_1.0.tar.gz
>>>> *** arch - x64
>>>> test1 is [1] 0.2668522 0.9246174 0.0184601
>>>> The filename, directory name, or volume label syntax is
incorrect.
>>>> test2 is
>>>> The filename, directory name, or volume label syntax is
incorrect.
>>>> test3 is
>>>>
>>>> *R studio:*
>>>> 1. R3.6:  Clicking the install button
>>>> ==> Rcmd.exe INSTALL --no-multiarch --with-keep.source
example-master
>>>> * installing to library
'C:/Users/wangj/Documents/R/win-library/3.6'
>>>> * installing *source* package 'testPackage' ...
>>>> ** using staged installation
>>>> ** libs
>>>> test1 is [1] 0.1583112 0.6631700 0.2265564
>>>> test2 is [1] 0.6999799 0.5205237 0.8264029
>>>> test3 is [1] 0.3591798 0.1767392 0.2869383
>>>>
>>>> 2.  R4.0: Clicking the install button
>>>> Rcmd.exe INSTALL --no-multiarch --with-keep.source
example-master
>>>> * installing to library 'C:/Program
Files/R/R-devel/library'
>>>> * installing *source* package 'testPackage' ...
>>>> ** using staged installation
>>>> ** libs
>>>> test1 is [1] 0.2091070 0.5411138 0.1051517
>>>> The filename, directory name, or volume label syntax is
incorrect.
>>>> test2 is
>>>> The filename, directory name, or volume label syntax is
incorrect.
>>>> test3 is
>>>>
>>>> 3. R3.6:  devtools::load_all(".")
>>>> devtools::load_all(".")
>>>> Loading testPackage
>>>> Re-compiling testPackage
>>>> -  installing *source* package 'testPackage' ...
(364ms)
>>>>   ** using staged installation
>>>>   ** libs
>>>>   test1 is [1] 0.93251741 0.03975758 0.57824150
>>>>   test2 is [1] 0.8681301 0.4801464 0.9112827
>>>>   test3 is [1] 0.430470791 0.008393394 0.341484128
>>>>   test1 is [1] 0.68865768 0.05354531 0.91665539
>>>>   test2 is [1] 0.19473846 0.60293655 0.09421961
>>>>   test3 is [1] 0.90653581 0.12456034 0.09526018
>>>>
>>>> 4. R4.0: devtools::load_all(".")
>>>> Loading testPackage
>>>> Re-compiling testPackage
>>>> ?  installing *source* package 'testPackage' ...
(357ms)
>>>>   ** using staged installation
>>>>   ** libs
>>>>   test1 is [1] 0.00545376 0.30696231 0.68752312
>>>>   test2 is [1] 0.1059506 0.7506894 0.8607918
>>>>   test3 is [1] 0.5321226 0.6985332 0.7343680
>>>>   test1 is [1] 0.7722255 0.3881171 0.5611294
>>>>   test2 is [1] 0.5443175 0.8418503 0.3479382
>>>>   test3 is [1] 0.7400557 0.3322797 0.6818899
>>>>
>>>>
>>>> Cheers,
>>>> Jiefei
>>>>
>>>> On Tue, Mar 10, 2020 at 4:11 AM Tomas Kalibera
<tomas.kalibera at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi Jiefei,
>>>>>
>>>>> thanks for your report, but I don't understand from you
current
>>>>> description what the problem is. Are you saying that
"make" shipped
>>>>> with
>>>>> some recent Rtools is not accepting some forms of PATHs?
But, which
>>>>> Rtools then, which version of make, how do you run it?
>>>>>
>>>>> Why are you referring to "R CMD INSTALL" when
none of your examples use
>>>>> it? Is "R CMD INSTALL" necessary for reproducing
the problem, cannot
>>>>> you
>>>>> just run "make" directly?
>>>>>
>>>>> Or are you reporting a bug inside R itself? (you are
referring to
>>>>> specific svn revisions of R). But how could R be involved
in this, is
>>>>> it
>>>>> in how it executes make?
>>>>>
>>>>> Please provide a minimal but complete reproducible example,
please
>>>>> provide somehow test files that can be used.  Perhaps if
you try to do
>>>>> a
>>>>> little bit of debugging on your end, it might help you to
narrow down
>>>>> the problem to the point that it will be then easier to
understand it.
>>>>> For example: if the problem is in "make", it
should be possible to
>>>>> trigger it directly from the command line, then you could
easily try
>>>>> with different versions of make and report which ones are
the problem..
>>>>>
>>>>> Thanks
>>>>> Tomas
>>>>>
>>>>>
>>>>> On 3/10/20 8:22 AM, Wang Jiefei wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> Here is a bug(or feature?) that exists at least from R
2020-02-24
>>>>>> r77852 to 2020-03-09 r77919 on Window. Consider this
example makefile
>>>>> in a
>>>>>> package
>>>>>> ```
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *test1=$(shell echo 'runif(3)'|R --vanilla
--slave)test2=$(shell echo
>>>>>> 'runif(3)'|"C:/Program
Files/R/R-devel/bin/R" --vanilla
>>>>>> --slave)test3=$(shell echo
'runif(3)'|"C:/PROGRA~1/R/R-devel/bin/R"
>>>>>> --vanilla --slave)$(info test1 is $(test1))$(info test2
is
>>>>> $(test2))$(info
>>>>>> test3 is $(test3))*
>>>>>> ```
>>>>>>
>>>>>> I have no problem running the file using GUN make or
installing the
>>>>> package
>>>>>> on R 3.6, both give the same result.
>>>>>> ```
>>>>>> *C:\Rtools\mingw_64\bin\mingw32-make.exe  *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *test1 is [1] 0.3427626 0.8027041 0.5611914test2 is [1]
0.9904205
>>>>> 0.3922129
>>>>>> 0.5970083test3 is [1] 0.3469528 0.1993838
0.8434841mingw32-make: ***
>>>>> No
>>>>>> targets.  Stop.*
>>>>>> *```*
>>>>>>
>>>>>> However, on the devel version of R, it cannot recognize
both the full
>>>>> and
>>>>>> short path of R and gives an error
>>>>>> ```
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *test1 is  [1] 0.42686376 0.84126831 0.09538047The
filename, directory
>>>>>> name, or volume label syntax is incorrect.test2 isThe
filename,
>>>>> directory
>>>>>> name, or volume label syntax is incorrect.test3 is*
>>>>>> ```
>>>>>>
>>>>>> I found this issue because my package needs to call R
functions in the
>>>>>> makefile. The code is similar to:
>>>>>> ```
>>>>>> *  myvar = $(shell echo
'runif(3)'|"${R_HOME}/bin/R" --vanilla
>>>>> --slave)*
>>>>>> ```
>>>>>> Since *R_HOME *is set to *C:/PROGRA~1/R/R-devel/*, this
will result
>>>>> in the
>>>>>> same error as I mentioned above. I do not know whether
this is
>>>>> intentional.
>>>>>> If so, what is the correct way to call R function in a
makefile?
>>>>>>
>>>>>> Best,
>>>>>> Jiefei
>>>>>>
>>>>>>      [[alternative HTML version deleted]]
>>>>>>
>>>>>> ______________________________________________
>>>>>> R-devel at r-project.org mailing list
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>>
>>>>>
>>>>>
>>>
>>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>