From ggrothendieck at gmail.com  Sun Dec 19 21:09:37 2010
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Sun, 19 Dec 2010 15:09:37 -0500
Subject: [Rd] Rcmd SHLIB error
In-Reply-To: <4D0E2544.7050301@gmail.com>
References: <AANLkTikdEtj2phJUhFj4nDY_M7jqywPzS6YkonVzgyTr@mail.gmail.com>
	<AANLkTimLjKgnQx-uV-6z4qBgu7R5HJwt9K6uYAe4tPWc@mail.gmail.com>
	<AANLkTi=wt-bdfgBA4iGRLb4B-N-MVNttG0JMLEbmMBX5@mail.gmail.com>
	<4D0DEEEC.6020202@gmail.com>
	<AANLkTinUHPPGzOeXy48iyQUc3ONmH_E3vj9W-BupABhW@mail.gmail.com>
	<4D0E1186.90009@gmail.com>
	<AANLkTim=c8xbaS_SyVJZajhLiMayzFnNhshr4TNqA84z@mail.gmail.com>
	<4D0E2544.7050301@gmail.com>
Message-ID: <AANLkTikRRcfFs82zRsT1tHmzdrkV30R5cJ9+JMQ+RABi@mail.gmail.com>

On Sun, Dec 19, 2010 at 10:31 AM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
> On 19/12/2010 10:04 AM, Gabor Grothendieck wrote:
>>
>> On Sun, Dec 19, 2010 at 9:07 AM, Duncan Murdoch
>> <murdoch.duncan at gmail.com> ?wrote:
>>>
>>> On 19/12/2010 7:01 AM, Gabor Grothendieck wrote:
>>>>
>>>> On Sun, Dec 19, 2010 at 6:39 AM, Duncan Murdoch
>>>> <murdoch.duncan at gmail.com> ? ?wrote:
>>>>>
>>>>> On 19/12/2010 6:06 AM, Gabor Grothendieck wrote:
>>>>>>
>>>>>> On Sat, Dec 18, 2010 at 8:23 PM, Dominick Samperi<djsamperi at gmail.com>
>>>>>> ?wrote:
>>>>>>>
>>>>>>>
>>>>>>> On Sat, Dec 18, 2010 at 5:24 PM, Gabor Grothendieck
>>>>>>> <ggrothendieck at gmail.com> ? ? ?wrote:
>>>>>>>>
>>>>>>>> I am getting this error message when I try to run Rcmd SHLIB
>>>>>>>> myprog.c.
>>>>>>>> ?There appears to be a missing / between etc and i386 in the path.
>>>>>>>> ?I
>>>>>>>> am on Windows Vista and am using R version 2.12.1 Patched
>>>>>>>> (2010-12-16
>>>>>>>> r53864) and just downloaded Rtools 2.12 today. ? Is this a bug in R?
>>>>>>>> How can I resolve this?
>>>>>>>
>>>>>>> This is due to new behavior in CYGWIN (the basis for Rtools). The
>>>>>>> new CYGWIN does not like non-standard paths that have C: in them.
>>>>>>> Some CYGWIN programs will not work when fed file names using
>>>>>>> this syntax, but normally this is just a warning. The warning can be
>>>>>>> suppressed by using the Control Panel to set CYGWIN=nodosfilewarning.
>>>>>>> Another solution is to use POSIX equivalent paths of the form
>>>>>>> /cydrive/c/PROG..., but this would require more extensive changes
>>>>>>> to build scripts, etc.
>>>>>>>
>>>>>>> There is another change that causes Rtools tar to choke in some
>>>>>>> circumstances under Windows because it tries to change ownership
>>>>>>> of the files extracted when it shouldn't. These error
>>>>>>> messags can be suppressed by using the Control Panel to set
>>>>>>> TAR_OPTIONS=--no-same-owner.
>>>>>>>
>>>>>>
>>>>>> I am still wondering what to do about this? ?I have created a
>>>>>> directory called C:\PROGRA~1\R\R-212~1.X\etci386 and have copied
>>>>>> Makeconf into it. ?That lets me use Rcmd SHLIB but its quite an ugly
>>>>>> workaround and there must be some better resolution than that. ?Also I
>>>>>> am wondering if this same problem will crop up elsewhere.
>>>>>>
>>>>>
>>>>> You could try running within Cygwin, as I do, on the theory that what
>>>>> works
>>>>> for me might work for you. ?I do use the "nodosfilewarning" setting as
>>>>> Dominick mentioned.
>>>>>
>>>>> However, I will say that my Windows build system is much less reliable
>>>>> than
>>>>> it used to be. ?I don't know the cause: ?I started 64 bit builds on
>>>>> Windows
>>>>> 7 at around the same time as I upgraded Cygwin, so it could be any of
>>>>> those
>>>>> causes. ?I'm tending to believe it's a Cygwin problem or a Cygwin-Win7
>>>>> incompatibility, but I haven't had time to work out a reliable system.
>>>>> ?(Symptoms I see are that very few overnight builds are succeeding;
>>>>> almost
>>>>> all the ones you see on CRAN/bin/windows/base have required manual
>>>>> restarts
>>>>> after they've failed partway through.)
>>>>>
>>>>> Unfortunately, I am not going to have the time to diagnose or fix this
>>>>> in
>>>>> the next couple of months. ?If you have spare time, you might want to
>>>>> try
>>>>> older versions of the Rtools (perhaps mixing new compilers with old
>>>>> Rtools/bin and Cygwin DLLs).
>>>>>
>>>>> Duncan Murdoch
>>>>>
>>>>
>>>> Where in the sources is the C:\PROGRA~1\R\R-212~1.X\etci386 [sic] path
>>>> set?
>>>
>>> I don't know. ?Possibilities include src/gnuwin32/fixed/Makefile line 31
>>> (where a bad R_ARCH would do it). ?Do you have R_ARCH set as an
>>> environment
>>> variable or on the command line when you call make? I think the latter
>>> would
>>> override the setting in MkRules, I'm not sure about the former.
>>>
>>
>> Thanks. ?I now have a better workaround. ?The batch file shown below
>> works but if /i386 is changed to i386 then it fails because it looks
>> for a directory called etci386:
>>
>> ? setlocal
>> ? set R_ARCH=/i386
>> ? "C:\Program Files\R\R-2.12.x\bin\i386\Rcmd.exe" SHLIB myprog.c
>> ? endlocal
>>
>> 1. It seems the / is missing between etc and $(R_ARCH) on lines 31 and
>> 38 of that Makefile (or if etci386 is intended then the actual
>> structure of R that is installed is wrong).
>
> No, the slash is supposed to be part of R_ARCH, which isn't a variable you
> should need to set. ?It is set in MkRules, as I mentioned above.
>
>> 2. page 8 of R-admin manual says that there is an --arch argument with
>> values i386, 32, x64, 64 but neither "Rcmd --help" nor "Rcmd SHLIB
>> --help" document an argument for setting the architecture.
>
> That argument appears to work for me. ?If you want to submit a patch so
> --help displays it, I'll take a look.
>
>> 3. on page 12 of the R-ext manual it refers to
>> R_HOME/etcR_ARCH/Makeconf so the documentation and how the Makefile
>> works seems inconsistent with the actual R directory structure which
>> is etc/i386 and not etci386.
>>
>
> See 1.
>

For now I have addressed this in my publicly available Windows
batchfiles so that when using them R_ARCH can have or not have a / and
they will still work.

-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



[Rd] Rcmd SHLIB error
Gabor Grothendieck