From jeffrey.horner at gmail.com  Fri Sep 10 16:42:47 2010
From: jeffrey.horner at gmail.com (Jeffrey Horner)
Date: Fri, 10 Sep 2010 09:42:47 -0500
Subject: [Rd] Development environment for R extentions on Windows
In-Reply-To: <4C881EC3.6040104@gmail.com>
References: <AANLkTikqVZAqzUxnVMjZt-0xh9dcx4prJBO404EdQ5Gt@mail.gmail.com>
	<4C87C9DF.4030208@gmail.com>
	<AANLkTikQWCeQXnRyQ_MYGvrCb6xS48y-zhZD6v+VEd-Z@mail.gmail.com>
	<AANLkTikRwBjviWg2QQn34UccAofbFr4DoAYGtPeGxSME@mail.gmail.com>
	<4C881EC3.6040104@gmail.com>
Message-ID: <AANLkTimy5r-76270BFho9N6i1qZzKRLtOP3mNKRwx=dm@mail.gmail.com>

On Wed, Sep 8, 2010 at 6:39 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
> On 08/09/2010 5:37 PM, Jeffrey Horner wrote:
>>
>> On Wed, Sep 8, 2010 at 1:01 PM, Jeffrey Horner <jeffrey.horner at gmail.com>
>> wrote:
>>>
>>> On Wed, Sep 8, 2010 at 12:37 PM, Duncan Murdoch
>>> <murdoch.duncan at gmail.com> wrote:
>>>>
>>>> ?On 08/09/2010 1:21 PM, Jeffrey Horner wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> I'm setting up a development environment on Windows as the subject
>>>>> implies. I've downloaded and installed Rtools211.exe (will upgrade
>>>>> later when necessary) and I've also downloaded and installed mingw
>>>>> with the help of mingw-get.exe.
>>>>>
>>>>> I come from a UNIX development background, so I'm at the bash shell
>>>>> prompt for just about every step in R extenstion development. Question
>>>>> is what is an appropriate environment for Windows development. What
>>>>> shell do you use? Do you use cmd.exe with the PATH variable set up by
>>>>> Rtools? Do you use the sh.exe that comes with Rtools? I've found the
>>>>> bash shell from MinGW to be a pretty close equivalent to bash on UNIX.
>>>>> Do you use something else?
>>>>>
>>>> I've used the bash shell in Cygwin for quite a few years, but I've been
>>>> planning a switch to MSYS sometime. ?Cygwin seems to have made some bad
>>>> decisions lately that make it harder and harder to work with.
>>>
>>> This is great news! I don't know how I could survive without bash's vi
>>> style editing and command completion...
>>>
>>> Here's my PATH variable which sets the Rtools paths first, then MinGW:
>>>
>>> hornerj at hornerj-win ~
>>> $ echo $PATH
>>>
>>> /c/Rtools/bin:/c/Rtools/perl/bin:/c/Rtools/MinGW/bin:/c/localbin:/mingw/bin:/bin:/usr/bin:/usr/lo
>>> cal/bin:/c/Program Files (x86)/R/R-2.11.1/bin:/c/Program Files
>>> (x86)/CollabNet/Subversion Client:
>>>
>>> /c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.
>>> 0/:/c/Program Files (x86)/MiKTeX 2.8/miktex/bin
>>>
>>> I'm going to follow the "R Installation ..." manual to compile R on
>>> Windows and learn a bit about the build process. From there, I intend
>>> to "port" some open source libraries that have support for being
>>> compiled with MS VC++ over to MinGW.
>>
>> From the MinGW bash shell, the R build went quite smoothly. However, I
>> did run into trouble with temporary files. I got around it by
>> specifying TMPDIR like so:
>>
>> $ cd R_HOME/src/gnuwin32
>> $ TMPDIR=. /c/Rtools/bin/make all
>
> I don't know if anything would go wrong, but I'd avoid putting your temp dir
> into the source tree. ?On my home machine I normally set R_USER to a
> Windows-style path (with backslashes), and that seems to work. ?On my work
> machine I think I set TMPDIR explicitly, but I forget what value I used.
>
>>
>> If I didn't set TMPDIR, it would default to /tmp and the failure would
>> occur within the mkR target of R_HOME/share/make/basepkg.mk. For
>> reasons beyond me, the shell environment that's entered within the mkR
>> target has no notion of a root directory. Anyone else seen this?
>
> I'm not sure you're using the write make procedure. ?Are you running make
> from within src/gnuwin32, so you get the Makefile there? ?It shouldn't try
> to use /tmp (but things might have changed recently).

I was (see above), and I think I've found the culprit.
R_HOME/share/make/basepkg.mk is utilized by both the UNIX and Windows
build, and its target mkR will expand the shell variable f to a
suitable path under /tmp if TMPDIR is not set. Rtools' shell (forked
by make) has no notion of a root file system at /, so /tmp is never
found. The solution is to, of course, always set TMPDIR to a suitable
directory before invoking make. Surprisingly, setting TMPDIR=/tmp
actually works since make expands it to the user's temporary folder.
On my windows laptop, that's:

/cygdrive/c/Users/hornerj/AppData/Local/Temp

Jeff

>
> Duncan Murdoch
>
>>
>> Jeff
>>
>>> Aside from my PATH variable, are there other things about my
>>> development environment I should be aware of?
>>>
>>> Jeff
>>>
>>
>>
>>
>
>



-- 
http://biostat.mc.vanderbilt.edu/JeffreyHorner



[Rd] Development environment for R extentions on Windows
Jeffrey Horner