lib/scripts/patch-scripts.bash
changeset 6974 60b0e4bbe331
parent 6105 b4ec1af7053f
child 9789 7e5e6c47c0b5
equal deleted inserted replaced
6973:52f70b76a8b5 6974:60b0e4bbe331
     1 #
     1 #
     2 # $Id$
     2 # $Id$
     3 #
     3 #
     4 # patch-scripts.bash - relocate interpreter paths of executable scripts.
     4 # patch-scripts.bash - relocate interpreter paths of executable scripts and
       
     5 #   insert AUTO_BASH/AUTO_PERL values
     5 #
     6 #
     6 
     7 
     7 ## find binaries
     8 ## find binaries
     8 
     9 
     9 function findbin()
    10 function findbin()
    10 {
    11 {
    11   local DEFAULT="$1"
    12   local BASE="$1"
    12   local BASE=$(basename "$DEFAULT")
       
    13   local BINARY=""
    13   local BINARY=""
    14 
    14 
    15   BINARY=$(type -path "$BASE")
    15   BINARY=$(type -path "$BASE")
    16 
    16 
    17   if [ -n "$BINARY" ]; then
    17   if [ -n "$BINARY" ]; then
    18     echo "using $BINARY" >&2
    18     echo "found $BINARY" >&2
    19     echo "$BINARY"
    19     echo "$BINARY"
    20     return
       
    21   elif [ -f "$DEFAULT" ]; then
       
    22     echo "using $DEFAULT" >&2
       
    23     echo "$DEFAULT"
       
    24     return
    20     return
    25   else
    21   else
    26     echo "ERROR: $BASE not found!" >&2
    22     echo "ERROR: $BASE not found!" >&2
    27     echo "$DEFAULT"
    23     echo "$DEFAULT"
    28     return
    24     return
    30 }
    26 }
    31 
    27 
    32 
    28 
    33 ## main
    29 ## main
    34 
    30 
    35 BASH=$(findbin /bin/bash)
    31 [ -z "$BASH_PATH" ] && BASH_PATH=$(findbin bash)
    36 PERL=$(findbin /usr/bin/perl)
    32 [ -z "$PERL_PATH" ] && PERL_PATH=$(findbin perl)
       
    33 [ -z "$AUTO_BASH" ] && AUTO_BASH="$BASH_PATH"
       
    34 [ -z "$AUTO_PERL" ] && AUTO_PERL="$PERL_PATH"
    37 
    35 
    38 for FILE in $(find . -type f -print)
    36 for FILE in $(find . -type f -print)
    39 do
    37 do
    40   if [ -x "$FILE" ]; then
    38   if [ -x "$FILE" ]; then
    41     sed -e "s:^#!.*/bash:#!$BASH:" -e "s:^#!.*/perl:#!$PERL:" \
    39     sed -e "s:^#!.*/bash:#!$BASH_PATH:" -e "s:^#!.*/perl:#!$PERL_PATH:" \
    42       -e "s:^AUTO_BASH=.*bash:AUTO_BASH=$BASH:" \
    40       -e "s:^AUTO_BASH=.*bash:AUTO_BASH=$AUTO_BASH:" \
    43       -e "s:^AUTO_PERL=.*perl:AUTO_PERL=$PERL:" $FILE >$FILE~~
    41       -e "s:^AUTO_PERL=.*perl:AUTO_PERL=$AUTO_PERL:" $FILE >$FILE~~
    44     if cmp -s $FILE $FILE~~; then
    42     if cmp -s $FILE $FILE~~; then
    45       rm $FILE~~
    43       rm $FILE~~
    46     else
    44     else
    47       rm -f $FILE
    45       rm -f $FILE
    48       mv $FILE~~ $FILE
    46       mv $FILE~~ $FILE