From p.lijnzaad at med.uu.nl  Fri Dec  2 17:42:05 2005
From: p.lijnzaad at med.uu.nl (p.lijnzaad@med.uu.nl)
Date: Fri,  2 Dec 2005 17:42:05 +0100 (CET)
Subject: [Rd] R CMD INSTALL fails if cd prints stuff to stdout ... (PR#8363)
Message-ID: <20051202164205.4E5B815ADE@slim.kubism.ku.dk>


--Boundary_(ID_erFAa+o6kWefQxXf6GD2RA)
Content-type: text/plain; charset="us-ascii"
Content-disposition: inline
Content-transfer-encoding: 7bit

Dear all,

I came across puzzling behaviour of R CMD INSTALL, which I tracked down to the 
fact that in some shells (or in some user customizations of them), the cd 
command prints out the new directory. As a result, the $pkgs variable gets a 
wrong value, e.g.in the following transcript: 

philip at gen031:tmp$ R CMD INSTALL  GlobalAncova          
/usr/lib/R/bin/INSTALL: line 873: cd: /home/philip/tmp/GlobalAncova
/var/tmp/philip/misc/GlobalAncova: No such file or directory
sed: can't read DESCRIPTION: No such file or directory
ERROR: no 'Package' field in 'DESCRIPTION'
philip at gen031:tmp$ 

The error at line 873 is due to the variable $pkgs containing the string 
'/home/philip/tmp/GlobalAncova
/var/tmp/philip/misc/GlobalAncova'

(i.e. including the new line. Incidentally, /home/philip/tmp dir is a symlink 
to /var/tmp/philip/misc; hence the non-identical directory names). 

A simple fix (cd "${1}" > /dev/null 2>&1 && ${GETWD}) takes care of this, and 
should work under sh, ksh, bourne shell, zsh. A context diff is attached; I 
hope this will prove useful. Kind regards,


                                                                       Philip

-- 
Philip Lijnzaad
Genomics Laboratory
Dept. of Biomedical Genetics
University Medical Center (UMC), Utrecht
Stratenum room 2.201 (on Mondays and Thursdays not in after 14.45)
MSN chat (*NOT* email): philip_lijnzaad at hotmail.com
P.O. Box 85060, 3508 AB Utrecht
(Universiteitsweg 100, 3584 CG Utrecht)
The Netherlands
tel: +31 (0)30 253 8464
fax: +31 (0)30 253 8479

--Boundary_(ID_erFAa+o6kWefQxXf6GD2RA)
Content-type: text/x-diff; charset="us-ascii"; name="INSTALL.patch"
Content-disposition: attachment; filename="INSTALL.patch"
Content-transfer-encoding: 7bit

*** INSTALL~	Wed Jun 22 11:09:59 2005
--- INSTALL	Fri Dec  2 17:08:50 2005
***************
*** 127,136 ****
  get_packages () {
    ## get the full path names to all packages contained in $1.
    ## NOTE: modifies pkgs!
    if grep "^Contains:" "${1}/DESCRIPTION" >/dev/null; then
      bundlepkg=`get_dcf_field Contains "${1}/DESCRIPTION"`
      for p in ${bundlepkg}; do
!       pkgs="${pkgs} \"`cd "${1}/${p}" && ${GETWD}`\""
        if test -f "${1}/${p}/DESCRIPTION.in"; then
          ## Try being defensive about missing final newlines, or extra
  	## empty lines.
--- 127,138 ----
  get_packages () {
    ## get the full path names to all packages contained in $1.
    ## NOTE: modifies pkgs!
+   PROMPT_COMMAND=
+   BASH_COMMAND=
    if grep "^Contains:" "${1}/DESCRIPTION" >/dev/null; then
      bundlepkg=`get_dcf_field Contains "${1}/DESCRIPTION"`
      for p in ${bundlepkg}; do
!       pkgs="${pkgs} \"`cd "${1}/${p}>/dev/null 2>&1" && ${GETWD}`\""
        if test -f "${1}/${p}/DESCRIPTION.in"; then
          ## Try being defensive about missing final newlines, or extra
  	## empty lines.
***************
*** 139,145 ****
        fi
      done
    else
!     pkgs="${pkgs} \"`cd "${1}" && ${GETWD}`\""
    fi
  }
  
--- 141,147 ----
        fi
      done
    else
!     pkgs="${pkgs} \"`cd "${1}" > /dev/null 2>&1 && ${GETWD}`\""
    fi
  }
  

--Boundary_(ID_erFAa+o6kWefQxXf6GD2RA)--



[Rd] R CMD INSTALL fails if cd prints stuff to stdout ... (PR#8363)
p.lijnzaad@med.uu.nl