[Rd] tar problem when using 'R CMD build' on Windows

Hervé Pagès hpages at fhcrc.org
Thu Sep 30 19:45:48 CEST 2010


Hi,

Already reported here:

   https://stat.ethz.ch/pipermail/r-devel/2010-September/058636.html

but it doesn't seem to be related (at least not in an obvious way) to
the problems described in that previous thread.

So the problem is that, with recent versions of R 2.12 (i.e.
current R-alpha but I've observed this with R-devel for at
least 2-3 months now), 'R CMD build <somepkg>' on Windows will
fail on a random set of Bioconductor packages because of a tar
problem. For example:

   R/bin/R.exe CMD build OLIN
   * checking for file 'OLIN/DESCRIPTION' ... OK
   * preparing 'OLIN':
   * checking DESCRIPTION meta-information ... OK
   /cygdrive/c/RTOOLS˜1/bin/tar: OLIN/data/sw.olin.RData: Cannot change 
ownership to uid 0, gid 401: Invalid argument
   /cygdrive/c/RTOOLS˜1/bin/tar: OLIN/data/sw.RData: Cannot change 
ownership to uid 0, gid 401: Invalid argument
   /cygdrive/c/RTOOLS˜1/bin/tar: OLIN/data/sw.xy.RData: Cannot change 
ownership to uid 0, gid 401: Invalid argument
   /cygdrive/c/RTOOLS˜1/bin/tar: OLIN/data: Cannot change ownership to 
uid 0, gid 401: Invalid argument
   ...
   [many lines like this]
   ...
   /cygdrive/c/RTOOLS˜1/bin/tar: OLIN: Cannot change ownership to uid 0, 
gid 401: Invalid argument
   /cygdrive/c/RTOOLS˜1/bin/tar: Exiting with failure status due to 
previous errors
    ERROR
   copying to build directory failed

19 Bioconductor packages were victim of that bug during yesterday's 
builds, 22 the day before, etc... this looks completely random and
therefore is hard to reproduce.

The following patch:

Index: src/library/tools/R/build.R
===================================================================
--- src/library/tools/R/build.R	(revision 53069)
+++ src/library/tools/R/build.R	(working copy)
@@ -515,7 +515,7 @@
      ## The tar.exe in Rtools has --force-local by default, but this
      ## enables people to use Cygwin or MSYS tar.
      TAR <- Sys.getenv("TAR", NA)
-    TAR <- if (is.na(TAR)) {if (WINDOWS) "tar --force-local" else "tar"}
+    TAR <- if (is.na(TAR)) {if (WINDOWS) "tar --force-local 
--no-same-owner" else "tar"}
      else shQuote(TAR)
      GZIP <- Sys.getenv("R_GZIPCMD")
      if (!nzchar(GZIP)) GZIP <- "gzip"

seems to address the problem even though I admit it doesn't provide
a lot of insight about what's really going on. But it seems safe.

Could it be applied as a workaround?

If that is not desirable, could the tools:::.build_packages() function
not put quotes around the value of the TAR environment variable (the
code does shQuote(TAR)), at least on Windows, so I can set this
variable to

   tar --no-same-owner


Note that the use of quotes around TAR is inconsistent across
utils::untar(), utils::tar() and tools:::.build_packages() (only
the first doesn't put them) but that's another story.

Thanks!
H.


-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M2-B876
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the R-devel mailing list