Skip to content

building packages for Linux vs. Windows

7 messages · Erin Hodgess, Duncan Murdoch, Uwe Ligges +4 more

#
Hi R People:

I sure that this is a really easy question, but here goes:

I'm trying to build a package that will run on both Linux and Windows.

However, there are several commands in a section that will be
different in Linux than they are in Windows.

Would I be better off just to build two separate packages, please?
If just one is needed, how could I determine which system is running
in order to use the correct command, please?

Thanks in advance,
Erin
#
On 10/02/2008 1:07 PM, Erin Hodgess wrote:
You will find it much easier to build just one package.

You can use .Platform or (for more detail) Sys.info() to find out what 
kind of system you're running on.  Remember that R doesn't just run on 
Linux and Windows:  there's also MacOSX, and other Unix and Unix-like 
systems (Solaris, etc.).

Duncan Murdoch
#
Duncan Murdoch wrote:
Erin,

moreover, R has some nice facility that allows to write a function for 
Windows, another one for Mac and a thirs one for Unix-alikes and place 
them in subfolders of ./R with the right names, see the Writing R 
Extensions manual.

Uwe Ligges
#
On 10-Feb-08 18:07:56, Erin Hodgess wrote:
There is the "version" (a list) variable:

  version
# platform       i486-pc-linux-gnu
# arch           i486
# os             linux-gnu
# system         i486, linux-gnu
# status         Patched
# major          2
# minor          4.0
# year           2006
# month          11
# day            25
# svn rev        39997
# language       R

from which you can extract the "os" component:

  version$os
# [1] "linux-gnu"

I don;t know what this says on a Windows system,
but it surely won't mention Linux!

So testing this wil enable you to set a flag, e.g.

Linux<-ifelse(length(grep("linux",version$os))>0, TRUE, FALSE)

if(Linux){window<-function(...) X11(...)} else
         {window<-function(...) windows(...)}

Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 10-Feb-08                                       Time: 18:39:29
------------------------------ XFMail ------------------------------
#
On my widows XP computer, W
_                           
platform       i386-pc-mingw32             
arch           i386                        
os             mingw32                     
system         i386, mingw32               
status                                     
major          2                           
minor          6.1                         
year           2007                        
month          11                          
day            26                          
svn rev        43537                       
language       R                           
version.string R version 2.6.1 (2007-11-26)

John Sorkin M.D., Ph.D.
Chief, Biostatistics and Informatics
University of Maryland School of Medicine Division of Gerontology
Baltimore VA Medical Center
10 North Greene Street
GRECC (BT/18/GR)
Baltimore, MD 21201-1524
(Phone) 410-605-7119
(Fax) 410-605-7913 (Please call phone number above prior to faxing)
On 10-Feb-08 18:07:56, Erin Hodgess wrote:
There is the "version" (a list) variable:

  version
# platform       i486-pc-linux-gnu
# arch           i486
# os             linux-gnu
# system         i486, linux-gnu
# status         Patched
# major          2
# minor          4.0
# year           2006
# month          11
# day            25
# svn rev        39997
# language       R

from which you can extract the "os" component:

  version$os
# [1] "linux-gnu"

I don;t know what this says on a Windows system,
but it surely won't mention Linux!

So testing this wil enable you to set a flag, e.g.

Linux<-ifelse(length(grep("linux",version$os))>0, TRUE, FALSE)

if(Linux){window<-function(...) X11(...)} else
         {window<-function(...) windows(...)}

Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 10-Feb-08                                       Time: 18:39:29
------------------------------ XFMail ------------------------------

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help 
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html 
and provide commented, minimal, self-contained, reproducible code.

Confidentiality Statement:
This email message, including any attachments, is for th...{{dropped:6}}
#
On Feb 10, 2008 1:20 PM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
Just to be a bit more definite try this:

 if (.Platform$OS.type == "windows") cat("I am on Windows\n") else
cat("I am not on Windows\n")
#
Erin Hodgess wrote:
Erin

Several people have indicated how to do this, but I encourage you to be 
sure you really need to do it. Many things can be made to work the same 
way on all OSs, and packages are much easier to maintain if you do not 
have several variants.  You might consider posting a few example of 
where you find this necessary, and ask if there is an OS independent way 
to do it.

Paul Gilbert
====================================================================================

La version fran?aise suit le texte anglais.

------------------------------------------------------------------------------------

This email may contain privileged and/or confidential in...{{dropped:26}}