[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: using R as SHELL in gnu make
From: |
Cook, Malcolm |
Subject: |
RE: using R as SHELL in gnu make |
Date: |
Thu, 22 Sep 2011 08:29:19 -0500 |
OK,
I now have a working version of setting SHELL=R in a GNU make script, allowing
make’s recipes to be written in R, that works out most of the complications.
I plan to clean it up a little more and blog about it soon here:
http://malcook-gedanken.blogspot.com/ - I’ll follow up here when I do.
The approach optionally allows evaluating the recipes using a running Rserve
(http://rosuda.org/Rserve/), avoiding initialization time and allowing
pre-loading of R libraries common to multiple recipes.
The approach however does NOT provide any special mechanism to preserve state
between recipes,
Rather, recipes may create the make rule’s target as a state dump by setting
with address@hidden in a call to `save` (or `save.image`, `dump`, as desired).
Other make rules may then call `load('$<')` when the previously saved dump is a
pre-requisite to the rule.
I’m still not sure if it is not more of an amusement and am interested in all
thoughts on this, and welcome any suggestions for example applications that I
might include when I go to blog it up...
Cheers,
~Malcolm
-----Original Message-----
From: Paul Gilbert [mailto:address@hidden
Sent: Tuesday, September 20, 2011 8:32 AM
To: Cook, Malcolm; 'address@hidden'; 'address@hidden'
Subject: RE: using R as SHELL in gnu make
Other than the RServe part, I do this all the time. It works well. Perhaps we
can put together some notes off-line and then bring it back to the list.
Paul
> -----Original Message-----
> From: address@hidden [mailto:address@hidden
> project.org] On Behalf Of Cook, Malcolm
> Sent: September 19, 2011 6:35 PM
> To: 'address@hidden'; 'address@hidden'
> Subject: [Rd] using R as SHELL in gnu make
>
> I am intrigued by the possibility of using R as the SHELL in a (Gnu)
> makefile (instead of /bin/sh). (c.f.
> http://www.gnu.org/software/make/manual/make.html#Choosing-the-Shell)
>
> Well, rather, I would like the makefile's SHELL to be a command which
> communicated with an R process.
>
> The makefile targets/prerequistes would, as always, be OS files, which
> would be written/read using standard R file IO.
>
> The makefile's "recipe"s would be written in R (instead of the usual
> shell).
>
> The R process would be able to be initiated by `load`ing one or more R
> datasets, libraries or entire images.
>
> The R process would be able to accumulate state as the makefile
> progressed. The recipe's would be able to refer to that state,
> allowing conditional execution.
>
> The R process would optionally be saved as an image of on job
> termination/completion.
>
> The R process might be managed using the RServe package, and would need
> to be initiated once only, when the makefile was first invoked.
>
> I would appreciate learning if anyone had any success, informative
> failures, or other lore that may help in (or dissuade me from)
> embarking on attempt this.
>
> Thanks,
>
> Malcolm Cook
> Stowers Institute for Medical Research
>
> ______________________________________________
> address@hidden mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
====================================================================================
La version française suit le texte anglais.
------------------------------------------------------------------------------------
This email may contain privileged and/or confidential information, and the Bank
of
Canada does not waive any related rights. Any distribution, use, or copying of
this
email or the information it contains by other than the intended recipient is
unauthorized. If you received this email in error please delete it immediately
from
your system and notify the sender promptly by email that you have done so.
------------------------------------------------------------------------------------
Le présent courriel peut contenir de l'information privilégiée ou
confidentielle.
La Banque du Canada ne renonce pas aux droits qui s'y rapportent. Toute
diffusion,
utilisation ou copie de ce courriel ou des renseignements qu'il contient par une
personne autre que le ou les destinataires désignés est interdite. Si vous
recevez
ce courriel par erreur, veuillez le supprimer immédiatement et envoyer sans
délai à
l'expéditeur un message électronique pour l'aviser que vous avez éliminé de
votre
ordinateur toute copie du courriel reçu.