ellis@stat.harvard.edu
2004-Apr-27 16:19 UTC
[Rd] 'R CMD build' fails when there are spaces in the path (PR#6830)
Full_Name: Byron Ellis Version: R 1.9.0 (and 2.0.0) OS: Linux (Redhat Fedora Core) Submission from: (NULL) (140.247.241.197) It appears that `R CMD build` cannot handle spaces in the path when building packages for distribution. For instance: [ellis@net-78815 ~/Bayesian Networks]$ R CMD build bnsl * checking for file 'bnsl/DESCRIPTION' ... OK * preparing 'bnsl': * cleaning src * removing junk files * building 'bnsl_0.0.1.tar.gz' tar: Networks/bnsl_0.0.1.tar: Cannot stat: No such file or directory tar: Error exit delayed from previous errors tar: Networks/bnsl_0.0.1.tar: Not found in archive tar: Error exit delayed from previous errors Error: cannot open file 'bnsl/DESCRIPTION' for reading [ellis@net-78815 ~/Bayesian Networks]$ Results in a file named "Bayesian" (that appears to be the uncompressed tar file) in ~/. I suspect some missing quotes somewhere.
Kurt Hornik
2004-Apr-27 20:26 UTC
[Rd] 'R CMD build' fails when there are spaces in the path (PR#6830)
>>>>> ellis writes:> Full_Name: Byron Ellis > Version: R 1.9.0 (and 2.0.0) > OS: Linux (Redhat Fedora Core) > Submission from: (NULL) (140.247.241.197)> It appears that `R CMD build` cannot handle spaces in the path when > building packages for distribution. For instance:> [ellis@net-78815 ~/Bayesian Networks]$ R CMD build bnsl > * checking for file 'bnsl/DESCRIPTION' ... OK > * preparing 'bnsl': > * cleaning src > * removing junk files > * building 'bnsl_0.0.1.tar.gz' > tar: Networks/bnsl_0.0.1.tar: Cannot stat: No such file or directory > tar: Error exit delayed from previous errors > tar: Networks/bnsl_0.0.1.tar: Not found in archive > tar: Error exit delayed from previous errors > Error: cannot open file 'bnsl/DESCRIPTION' for reading > [ellis@net-78815 ~/Bayesian Networks]$> Results in a file named "Bayesian" (that appears to be the > uncompressed tar file) in ~/. I suspect some missing quotes somewhere.The problem definitely occurs when calling R CMD build from a dir whose file path contains white space. Now in R CMD build we have $ grep filepath build.in my $filepath = &file_path($startdir, $filename); R_system("zip -r9X $filepath.zip $pkgs $topLevelFiles"); R_system("$tar chf $filepath $pkgs $topLevelFiles"); R_system("gzip -9f $filepath"); my $filepath = &file_path($startdir, $filename); my $origfilepath = $filepath; $filepath =~ s+^([A-Za-x]):+/cygdrive/\1+; R_system("$tar chf $filepath $pkgname"); R_system("$tar xhf $filepath"); R_system("$tar chf $filepath $pkgname"); R_system("gzip -9f $origfilepath"); so in fact in none of the calls to R_system() with $filepath do we currently perform any kind of quoting or shell escaping. A simple improvement would be quoting all filepaths in R_system() calls via \"...\" or '...'. Unless someone has a better idea or wants to put in more effort ... -k