[R-SIG-Mac] Building packages 4 Windows with macbook pro

Herve Pages hpages at fhcrc.org
Thu May 10 00:56:09 CEST 2007

Hi Sebastien,

Sebastien Durand wrote:
> Hello to all,
> I am a package developper and I would like to 
> know what is the best way to build package 
> binaries for both Windows and Mac installation of 
> R, using a macbook pro?
> The command I am presently using to create and build my packages binaries is :
> "R CMD BUILD ~/foo"  -> This produce foo.tar.gz 

You probably mean you are using 'R CMD build' ("BUILD" in upper case doesn't work
on my system) don't you?

I can only give a partial answer...

'R CMD build' by default is not intended to build a binary package but a source
package (yes, having called this "build" doesn't help but you will get used to it ;-)).

As you've found out, 'R CMD build ~/foo' produces something like foo_0.9.5.tar.gz
which is a _source_ package (source packages are always suffixed with _X.Y.Z.tar.gz).
This command ('R CMD build') is platform independent: it will produced the same tarball
(except maybe for the vignette, more on this below) on Unix/Linux, Windows and Mac OS X.
But in order to use 'R CMD build' you need to have the R development tools on your system
(compilers, make, Perl, etc...). Note that the exact requirements _are_ platform dependent
(they can be tricky to install on Windows).

So now you might wonder why those development tools are required if the resulting tarball
(foo_0.9.5.tar.gz) is more or less the result of packaging the source directory with 'tar zcf'.
Strangely, and as you might have already noticed, for some packages, it seems that 'R CMD build'
is invoking the C, C++ or Fortran compilers! This happens when a package contains a Sweave
vignette (.Rnw file): in order to create the PDF version of the vignette (so it can be included
in the packaging), 'R CMD build' needs to temporarily install the package. Hence the compilation
when the package contains native code.

Binary packages are of course platform dependent. They have the .zip suffix on Windows and
the .tgz suffix on Mac OS X. Note that Unix/Linux users are always expected to install a
package from source (from the source tarball) so you only need to get into the trouble of
building binary packages if you want to make your packages available to the Mac OS X and
Windows users that don't have the R development tools installed (those who have them can
always install from source with R CMD INSTALL foo_0.9.5.tar.gz).

There are different methods to build them:

  (1) Recommended on Windows: 'R CMD INSTALL --build foo_0.9.5.tar.gz' will
      produce foo_0.9.5.zip on Windows

  (2) 'R CMD INSTALL --library=LIB foo_0.9.5.tar.gz', then manually zip (on Windows)
      or tar the LIB/foo directory. When you use this method, it is your responsability
      to properly name the resulting file.

  (3) R CMD build --binary ~/foo

  o R CMD build --help
  o R CMD INSTALL --help
  o "Checking and building packages" in the "Writing R Extensions" manual
for more information.

Also, it's a good practice to always 'R CMD check' (see R CMD check --help) your packages
before building and distributing the binary versions.

Hopefully someone on this list will be able to tell you what's the recommended way to build
binary packages on Mac OS X (they use some modify version of (2) AFAIK).


> which cannot be used in a windows installation of 
> R.
> I would be very pleased if you could enligthen me
> Sebastien

More information about the R-SIG-Mac mailing list