Hex Artifact Content
Not logged in

Artifact 49d398b9f1ae98625c9a58cc9176c4f8285e2836:


0000: 23 21 2f 62 69 6e 2f 73 68 0a 23 20 43 6f 70 79  #!/bin/sh.# Copy
0010: 72 69 67 68 74 20 32 30 31 34 20 54 68 65 20 52  right 2014 The R
0020: 75 73 74 20 50 72 6f 6a 65 63 74 20 44 65 76 65  ust Project Deve
0030: 6c 6f 70 65 72 73 2e 20 53 65 65 20 74 68 65 20  lopers. See the 
0040: 43 4f 50 59 52 49 47 48 54 0a 23 20 66 69 6c 65  COPYRIGHT.# file
0050: 20 61 74 20 74 68 65 20 74 6f 70 2d 6c 65 76 65   at the top-leve
0060: 6c 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74  l directory of t
0070: 68 69 73 20 64 69 73 74 72 69 62 75 74 69 6f 6e  his distribution
0080: 20 61 6e 64 20 61 74 0a 23 20 68 74 74 70 3a 2f   and at.# http:/
0090: 2f 72 75 73 74 2d 6c 61 6e 67 2e 6f 72 67 2f 43  /rust-lang.org/C
00a0: 4f 50 59 52 49 47 48 54 2e 0a 23 0a 23 20 4c 69  OPYRIGHT..#.# Li
00b0: 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 68 65  censed under the
00c0: 20 41 70 61 63 68 65 20 4c 69 63 65 6e 73 65 2c   Apache License,
00d0: 20 56 65 72 73 69 6f 6e 20 32 2e 30 20 3c 4c 49   Version 2.0 <LI
00e0: 43 45 4e 53 45 2d 41 50 41 43 48 45 20 6f 72 0a  CENSE-APACHE or.
00f0: 23 20 68 74 74 70 3a 2f 2f 77 77 77 2e 61 70 61  # http://www.apa
0100: 63 68 65 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73  che.org/licenses
0110: 2f 4c 49 43 45 4e 53 45 2d 32 2e 30 3e 20 6f 72  /LICENSE-2.0> or
0120: 20 74 68 65 20 4d 49 54 20 6c 69 63 65 6e 73 65   the MIT license
0130: 0a 23 20 3c 4c 49 43 45 4e 53 45 2d 4d 49 54 20  .# <LICENSE-MIT 
0140: 6f 72 20 68 74 74 70 3a 2f 2f 6f 70 65 6e 73 6f  or http://openso
0150: 75 72 63 65 2e 6f 72 67 2f 6c 69 63 65 6e 73 65  urce.org/license
0160: 73 2f 4d 49 54 3e 2c 20 61 74 20 79 6f 75 72 0a  s/MIT>, at your.
0170: 23 20 6f 70 74 69 6f 6e 2e 20 54 68 69 73 20 66  # option. This f
0180: 69 6c 65 20 6d 61 79 20 6e 6f 74 20 62 65 20 63  ile may not be c
0190: 6f 70 69 65 64 2c 20 6d 6f 64 69 66 69 65 64 2c  opied, modified,
01a0: 20 6f 72 20 64 69 73 74 72 69 62 75 74 65 64 0a   or distributed.
01b0: 23 20 65 78 63 65 70 74 20 61 63 63 6f 72 64 69  # except accordi
01c0: 6e 67 20 74 6f 20 74 68 6f 73 65 20 74 65 72 6d  ng to those term
01d0: 73 2e 0a 0a 6d 73 67 28 29 20 7b 0a 20 20 20 20  s...msg() {.    
01e0: 65 63 68 6f 20 22 67 65 6e 2d 69 6e 73 74 61 6c  echo "gen-instal
01f0: 6c 2d 73 63 72 69 70 74 3a 20 24 31 22 0a 7d 0a  l-script: $1".}.
0200: 0a 73 74 65 70 5f 6d 73 67 28 29 20 7b 0a 20 20  .step_msg() {.  
0210: 20 20 6d 73 67 0a 20 20 20 20 6d 73 67 20 22 24    msg.    msg "$
0220: 31 22 0a 20 20 20 20 6d 73 67 0a 7d 0a 0a 77 61  1".    msg.}..wa
0230: 72 6e 28 29 20 7b 0a 20 20 20 20 65 63 68 6f 20  rn() {.    echo 
0240: 22 67 65 6e 2d 69 6e 73 74 61 6c 6c 2d 73 63 72  "gen-install-scr
0250: 69 70 74 3a 20 57 41 52 4e 49 4e 47 3a 20 24 31  ipt: WARNING: $1
0260: 22 0a 7d 0a 0a 65 72 72 28 29 20 7b 0a 20 20 20  ".}..err() {.   
0270: 20 65 63 68 6f 20 22 67 65 6e 2d 69 6e 73 74 61   echo "gen-insta
0280: 6c 6c 2d 73 63 72 69 70 74 3a 20 65 72 72 6f 72  ll-script: error
0290: 3a 20 24 31 22 0a 20 20 20 20 65 78 69 74 20 31  : $1".    exit 1
02a0: 0a 7d 0a 0a 6e 65 65 64 5f 6f 6b 28 29 20 7b 0a  .}..need_ok() {.
02b0: 20 20 20 20 69 66 20 5b 20 24 3f 20 2d 6e 65 20      if [ $? -ne 
02c0: 30 20 5d 0a 20 20 20 20 74 68 65 6e 0a 20 20 20  0 ].    then.   
02d0: 20 20 20 20 20 65 72 72 20 22 24 31 22 0a 20 20       err "$1".  
02e0: 20 20 66 69 0a 7d 0a 0a 6e 65 65 64 5f 63 6d 64    fi.}..need_cmd
02f0: 28 29 20 7b 0a 20 20 20 20 69 66 20 63 6f 6d 6d  () {.    if comm
0300: 61 6e 64 20 2d 76 20 24 31 20 3e 2f 64 65 76 2f  and -v $1 >/dev/
0310: 6e 75 6c 6c 20 32 3e 26 31 0a 20 20 20 20 74 68  null 2>&1.    th
0320: 65 6e 20 6d 73 67 20 22 66 6f 75 6e 64 20 24 31  en msg "found $1
0330: 22 0a 20 20 20 20 65 6c 73 65 20 65 72 72 20 22  ".    else err "
0340: 6e 65 65 64 20 24 31 22 0a 20 20 20 20 66 69 0a  need $1".    fi.
0350: 7d 0a 0a 70 75 74 76 61 72 28 29 20 7b 0a 20 20  }..putvar() {.  
0360: 20 20 6c 6f 63 61 6c 20 54 0a 20 20 20 20 65 76    local T.    ev
0370: 61 6c 20 54 3d 5c 24 24 31 0a 20 20 20 20 65 76  al T=\$$1.    ev
0380: 61 6c 20 54 4c 45 4e 3d 5c 24 7b 23 24 31 7d 0a  al TLEN=\${#$1}.
0390: 20 20 20 20 69 66 20 5b 20 24 54 4c 45 4e 20 2d      if [ $TLEN -
03a0: 67 74 20 33 35 20 5d 0a 20 20 20 20 74 68 65 6e  gt 35 ].    then
03b0: 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 20  .        printf 
03c0: 22 67 65 6e 2d 69 6e 73 74 61 6c 6c 2d 73 63 72  "gen-install-scr
03d0: 69 70 74 3a 20 25 2d 32 30 73 20 3a 3d 20 25 2e  ipt: %-20s := %.
03e0: 33 35 73 20 2e 2e 2e 5c 6e 22 20 24 31 20 22 24  35s ...\n" $1 "$
03f0: 54 22 0a 20 20 20 20 65 6c 73 65 0a 20 20 20 20  T".    else.    
0400: 20 20 20 20 70 72 69 6e 74 66 20 22 67 65 6e 2d      printf "gen-
0410: 69 6e 73 74 61 6c 6c 2d 73 63 72 69 70 74 3a 20  install-script: 
0420: 25 2d 32 30 73 20 3a 3d 20 25 73 20 25 73 5c 6e  %-20s := %s %s\n
0430: 22 20 24 31 20 22 24 54 22 20 22 24 32 22 0a 20  " $1 "$T" "$2". 
0440: 20 20 20 66 69 0a 7d 0a 0a 76 61 6c 6f 70 74 28     fi.}..valopt(
0450: 29 20 7b 0a 20 20 20 20 56 41 4c 5f 4f 50 54 49  ) {.    VAL_OPTI
0460: 4f 4e 53 3d 22 24 56 41 4c 5f 4f 50 54 49 4f 4e  ONS="$VAL_OPTION
0470: 53 20 24 31 22 0a 0a 20 20 20 20 6c 6f 63 61 6c  S $1"..    local
0480: 20 4f 50 3d 24 31 0a 20 20 20 20 6c 6f 63 61 6c   OP=$1.    local
0490: 20 44 45 46 41 55 4c 54 3d 24 32 0a 20 20 20 20   DEFAULT=$2.    
04a0: 73 68 69 66 74 0a 20 20 20 20 73 68 69 66 74 0a  shift.    shift.
04b0: 20 20 20 20 6c 6f 63 61 6c 20 44 4f 43 3d 22 24      local DOC="$
04c0: 2a 22 0a 20 20 20 20 69 66 20 5b 20 24 48 45 4c  *".    if [ $HEL
04d0: 50 20 2d 65 71 20 30 20 5d 0a 20 20 20 20 74 68  P -eq 0 ].    th
04e0: 65 6e 0a 20 20 20 20 20 20 20 20 6c 6f 63 61 6c  en.        local
04f0: 20 55 4f 50 3d 24 28 65 63 68 6f 20 24 4f 50 20   UOP=$(echo $OP 
0500: 7c 20 74 72 20 27 5b 3a 6c 6f 77 65 72 3a 5d 27  | tr '[:lower:]'
0510: 20 27 5b 3a 75 70 70 65 72 3a 5d 27 20 7c 20 74   '[:upper:]' | t
0520: 72 20 27 5c 2d 27 20 27 5c 5f 27 29 0a 20 20 20  r '\-' '\_').   
0530: 20 20 20 20 20 6c 6f 63 61 6c 20 56 3d 22 43 46       local V="CF
0540: 47 5f 24 7b 55 4f 50 7d 22 0a 20 20 20 20 20 20  G_${UOP}".      
0550: 20 20 65 76 61 6c 20 24 56 3d 22 24 44 45 46 41    eval $V="$DEFA
0560: 55 4c 54 22 0a 20 20 20 20 20 20 20 20 66 6f 72  ULT".        for
0570: 20 61 72 67 20 69 6e 20 24 43 46 47 5f 41 52 47   arg in $CFG_ARG
0580: 53 0a 20 20 20 20 20 20 20 20 64 6f 0a 20 20 20  S.        do.   
0590: 20 20 20 20 20 20 20 20 20 69 66 20 65 63 68 6f           if echo
05a0: 20 22 24 61 72 67 22 20 7c 20 67 72 65 70 20 2d   "$arg" | grep -
05b0: 71 20 2d 2d 20 22 2d 2d 24 4f 50 3d 22 0a 20 20  q -- "--$OP=".  
05c0: 20 20 20 20 20 20 20 20 20 20 74 68 65 6e 0a 20            then. 
05d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
05e0: 61 6c 3d 24 28 65 63 68 6f 20 22 24 61 72 67 22  al=$(echo "$arg"
05f0: 20 7c 20 63 75 74 20 2d 66 32 20 2d 64 3d 29 0a   | cut -f2 -d=).
0600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0610: 65 76 61 6c 20 24 56 3d 24 76 61 6c 0a 20 20 20  eval $V=$val.   
0620: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
0630: 20 20 20 20 64 6f 6e 65 0a 20 20 20 20 20 20 20      done.       
0640: 20 70 75 74 76 61 72 20 24 56 0a 20 20 20 20 65   putvar $V.    e
0650: 6c 73 65 0a 20 20 20 20 20 20 20 20 69 66 20 5b  lse.        if [
0660: 20 2d 7a 20 22 24 44 45 46 41 55 4c 54 22 20 5d   -z "$DEFAULT" ]
0670: 0a 20 20 20 20 20 20 20 20 74 68 65 6e 0a 20 20  .        then.  
0680: 20 20 20 20 20 20 20 20 20 20 44 45 46 41 55 4c            DEFAUL
0690: 54 3d 22 3c 6e 6f 6e 65 3e 22 0a 20 20 20 20 20  T="<none>".     
06a0: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 4f 50     fi.        OP
06b0: 3d 22 24 7b 4f 50 7d 3d 5b 24 7b 44 45 46 41 55  ="${OP}=[${DEFAU
06c0: 4c 54 7d 5d 22 0a 20 20 20 20 20 20 20 20 70 72  LT}]".        pr
06d0: 69 6e 74 66 20 22 20 20 20 20 2d 2d 25 2d 33 30  intf "    --%-30
06e0: 73 20 25 73 5c 6e 22 20 22 24 4f 50 22 20 22 24  s %s\n" "$OP" "$
06f0: 44 4f 43 22 0a 20 20 20 20 66 69 0a 7d 0a 0a 6f  DOC".    fi.}..o
0700: 70 74 28 29 20 7b 0a 20 20 20 20 42 4f 4f 4c 5f  pt() {.    BOOL_
0710: 4f 50 54 49 4f 4e 53 3d 22 24 42 4f 4f 4c 5f 4f  OPTIONS="$BOOL_O
0720: 50 54 49 4f 4e 53 20 24 31 22 0a 0a 20 20 20 20  PTIONS $1"..    
0730: 6c 6f 63 61 6c 20 4f 50 3d 24 31 0a 20 20 20 20  local OP=$1.    
0740: 6c 6f 63 61 6c 20 44 45 46 41 55 4c 54 3d 24 32  local DEFAULT=$2
0750: 0a 20 20 20 20 73 68 69 66 74 0a 20 20 20 20 73  .    shift.    s
0760: 68 69 66 74 0a 20 20 20 20 6c 6f 63 61 6c 20 44  hift.    local D
0770: 4f 43 3d 22 24 2a 22 0a 20 20 20 20 6c 6f 63 61  OC="$*".    loca
0780: 6c 20 46 4c 41 47 3d 22 22 0a 0a 20 20 20 20 69  l FLAG=""..    i
0790: 66 20 5b 20 24 44 45 46 41 55 4c 54 20 2d 65 71  f [ $DEFAULT -eq
07a0: 20 30 20 5d 0a 20 20 20 20 74 68 65 6e 0a 20 20   0 ].    then.  
07b0: 20 20 20 20 20 20 46 4c 41 47 3d 22 65 6e 61 62        FLAG="enab
07c0: 6c 65 22 0a 20 20 20 20 65 6c 73 65 0a 20 20 20  le".    else.   
07d0: 20 20 20 20 20 46 4c 41 47 3d 22 64 69 73 61 62       FLAG="disab
07e0: 6c 65 22 0a 20 20 20 20 20 20 20 20 44 4f 43 3d  le".        DOC=
07f0: 22 64 6f 6e 27 74 20 24 44 4f 43 22 0a 20 20 20  "don't $DOC".   
0800: 20 66 69 0a 0a 20 20 20 20 69 66 20 5b 20 24 48   fi..    if [ $H
0810: 45 4c 50 20 2d 65 71 20 30 20 5d 0a 20 20 20 20  ELP -eq 0 ].    
0820: 74 68 65 6e 0a 20 20 20 20 20 20 20 20 66 6f 72  then.        for
0830: 20 61 72 67 20 69 6e 20 24 43 46 47 5f 41 52 47   arg in $CFG_ARG
0840: 53 0a 20 20 20 20 20 20 20 20 64 6f 0a 20 20 20  S.        do.   
0850: 20 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24           if [ "$
0860: 61 72 67 22 20 3d 20 22 2d 2d 24 7b 46 4c 41 47  arg" = "--${FLAG
0870: 7d 2d 24 7b 4f 50 7d 22 20 5d 0a 20 20 20 20 20  }-${OP}" ].     
0880: 20 20 20 20 20 20 20 74 68 65 6e 0a 20 20 20 20         then.    
0890: 20 20 20 20 20 20 20 20 20 20 20 20 4f 50 3d 24              OP=$
08a0: 28 65 63 68 6f 20 24 4f 50 20 7c 20 74 72 20 27  (echo $OP | tr '
08b0: 61 2d 7a 2d 27 20 27 41 2d 5a 5f 27 29 0a 20 20  a-z-' 'A-Z_').  
08c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 4c                FL
08d0: 41 47 3d 24 28 65 63 68 6f 20 24 46 4c 41 47 20  AG=$(echo $FLAG 
08e0: 7c 20 74 72 20 27 61 2d 7a 27 20 27 41 2d 5a 27  | tr 'a-z' 'A-Z'
08f0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
0900: 20 20 6c 6f 63 61 6c 20 56 3d 22 43 46 47 5f 24    local V="CFG_$
0910: 7b 46 4c 41 47 7d 5f 24 7b 4f 50 7d 22 0a 20 20  {FLAG}_${OP}".  
0920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 76                ev
0930: 61 6c 20 24 56 3d 31 0a 20 20 20 20 20 20 20 20  al $V=1.        
0940: 20 20 20 20 20 20 20 20 70 75 74 76 61 72 20 24          putvar $
0950: 56 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  V.            fi
0960: 0a 20 20 20 20 20 20 20 20 64 6f 6e 65 0a 20 20  .        done.  
0970: 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20 69    else.        i
0980: 66 20 5b 20 21 20 2d 7a 20 22 24 4d 45 54 41 22  f [ ! -z "$META"
0990: 20 5d 0a 20 20 20 20 20 20 20 20 74 68 65 6e 0a   ].        then.
09a0: 20 20 20 20 20 20 20 20 20 20 20 20 4f 50 3d 22              OP="
09b0: 24 4f 50 3d 3c 24 4d 45 54 41 3e 22 0a 20 20 20  $OP=<$META>".   
09c0: 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20       fi.        
09d0: 70 72 69 6e 74 66 20 22 20 20 20 20 2d 2d 25 2d  printf "    --%-
09e0: 33 30 73 20 25 73 5c 6e 22 20 22 24 46 4c 41 47  30s %s\n" "$FLAG
09f0: 2d 24 4f 50 22 20 22 24 44 4f 43 22 0a 20 20 20  -$OP" "$DOC".   
0a00: 20 20 66 69 0a 7d 0a 0a 66 6c 61 67 28 29 20 7b    fi.}..flag() {
0a10: 0a 20 20 20 20 42 4f 4f 4c 5f 4f 50 54 49 4f 4e  .    BOOL_OPTION
0a20: 53 3d 22 24 42 4f 4f 4c 5f 4f 50 54 49 4f 4e 53  S="$BOOL_OPTIONS
0a30: 20 24 31 22 0a 0a 20 20 20 20 6c 6f 63 61 6c 20   $1"..    local 
0a40: 4f 50 3d 24 31 0a 20 20 20 20 73 68 69 66 74 0a  OP=$1.    shift.
0a50: 20 20 20 20 6c 6f 63 61 6c 20 44 4f 43 3d 22 24      local DOC="$
0a60: 2a 22 0a 0a 20 20 20 20 69 66 20 5b 20 24 48 45  *"..    if [ $HE
0a70: 4c 50 20 2d 65 71 20 30 20 5d 0a 20 20 20 20 74  LP -eq 0 ].    t
0a80: 68 65 6e 0a 20 20 20 20 20 20 20 20 66 6f 72 20  hen.        for 
0a90: 61 72 67 20 69 6e 20 24 43 46 47 5f 41 52 47 53  arg in $CFG_ARGS
0aa0: 0a 20 20 20 20 20 20 20 20 64 6f 0a 20 20 20 20  .        do.    
0ab0: 20 20 20 20 20 20 20 20 69 66 20 5b 20 22 24 61          if [ "$a
0ac0: 72 67 22 20 3d 20 22 2d 2d 24 7b 4f 50 7d 22 20  rg" = "--${OP}" 
0ad0: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ].            th
0ae0: 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  en.             
0af0: 20 20 20 4f 50 3d 24 28 65 63 68 6f 20 24 4f 50     OP=$(echo $OP
0b00: 20 7c 20 74 72 20 27 61 2d 7a 2d 27 20 27 41 2d   | tr 'a-z-' 'A-
0b10: 5a 5f 27 29 0a 20 20 20 20 20 20 20 20 20 20 20  Z_').           
0b20: 20 20 20 20 20 6c 6f 63 61 6c 20 56 3d 22 43 46       local V="CF
0b30: 47 5f 24 7b 4f 50 7d 22 0a 20 20 20 20 20 20 20  G_${OP}".       
0b40: 20 20 20 20 20 20 20 20 20 65 76 61 6c 20 24 56           eval $V
0b50: 3d 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =1.             
0b60: 20 20 20 70 75 74 76 61 72 20 24 56 0a 20 20 20     putvar $V.   
0b70: 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20           fi.    
0b80: 20 20 20 20 64 6f 6e 65 0a 20 20 20 20 65 6c 73      done.    els
0b90: 65 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 21  e.        if [ !
0ba0: 20 2d 7a 20 22 24 4d 45 54 41 22 20 5d 0a 20 20   -z "$META" ].  
0bb0: 20 20 20 20 20 20 74 68 65 6e 0a 20 20 20 20 20        then.     
0bc0: 20 20 20 20 20 20 20 4f 50 3d 22 24 4f 50 3d 3c         OP="$OP=<
0bd0: 24 4d 45 54 41 3e 22 0a 20 20 20 20 20 20 20 20  $META>".        
0be0: 66 69 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74  fi.        print
0bf0: 66 20 22 20 20 20 20 2d 2d 25 2d 33 30 73 20 25  f "    --%-30s %
0c00: 73 5c 6e 22 20 22 24 4f 50 22 20 22 24 44 4f 43  s\n" "$OP" "$DOC
0c10: 22 0a 20 20 20 20 20 66 69 0a 7d 0a 0a 76 61 6c  ".     fi.}..val
0c20: 69 64 61 74 65 5f 6f 70 74 20 28 29 20 7b 0a 20  idate_opt () {. 
0c30: 20 20 20 66 6f 72 20 61 72 67 20 69 6e 20 24 43     for arg in $C
0c40: 46 47 5f 41 52 47 53 0a 20 20 20 20 64 6f 0a 20  FG_ARGS.    do. 
0c50: 20 20 20 20 20 20 20 69 73 41 72 67 56 61 6c 69         isArgVali
0c60: 64 3d 30 0a 20 20 20 20 20 20 20 20 66 6f 72 20  d=0.        for 
0c70: 6f 70 74 69 6f 6e 20 69 6e 20 24 42 4f 4f 4c 5f  option in $BOOL_
0c80: 4f 50 54 49 4f 4e 53 0a 20 20 20 20 20 20 20 20  OPTIONS.        
0c90: 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  do.            i
0ca0: 66 20 74 65 73 74 20 2d 2d 64 69 73 61 62 6c 65  f test --disable
0cb0: 2d 24 6f 70 74 69 6f 6e 20 3d 20 24 61 72 67 0a  -$option = $arg.
0cc0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 6e              then
0cd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0ce0: 20 69 73 41 72 67 56 61 6c 69 64 3d 31 0a 20 20   isArgValid=1.  
0cf0: 20 20 20 20 20 20 20 20 20 20 66 69 0a 20 20 20            fi.   
0d00: 20 20 20 20 20 20 20 20 20 69 66 20 74 65 73 74           if test
0d10: 20 2d 2d 65 6e 61 62 6c 65 2d 24 6f 70 74 69 6f   --enable-$optio
0d20: 6e 20 3d 20 24 61 72 67 0a 20 20 20 20 20 20 20  n = $arg.       
0d30: 20 20 20 20 20 74 68 65 6e 0a 20 20 20 20 20 20       then.      
0d40: 20 20 20 20 20 20 20 20 20 20 69 73 41 72 67 56            isArgV
0d50: 61 6c 69 64 3d 31 0a 20 20 20 20 20 20 20 20 20  alid=1.         
0d60: 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 20 20     fi.          
0d70: 20 20 69 66 20 74 65 73 74 20 2d 2d 24 6f 70 74    if test --$opt
0d80: 69 6f 6e 20 3d 20 24 61 72 67 0a 20 20 20 20 20  ion = $arg.     
0d90: 20 20 20 20 20 20 20 74 68 65 6e 0a 20 20 20 20         then.    
0da0: 20 20 20 20 20 20 20 20 20 20 20 20 69 73 41 72              isAr
0db0: 67 56 61 6c 69 64 3d 31 0a 20 20 20 20 20 20 20  gValid=1.       
0dc0: 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20       fi.        
0dd0: 64 6f 6e 65 0a 20 20 20 20 20 20 20 20 66 6f 72  done.        for
0de0: 20 6f 70 74 69 6f 6e 20 69 6e 20 24 56 41 4c 5f   option in $VAL_
0df0: 4f 50 54 49 4f 4e 53 0a 20 20 20 20 20 20 20 20  OPTIONS.        
0e00: 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  do.            i
0e10: 66 20 65 63 68 6f 20 22 24 61 72 67 22 20 7c 20  f echo "$arg" | 
0e20: 67 72 65 70 20 2d 71 20 2d 2d 20 22 2d 2d 24 6f  grep -q -- "--$o
0e30: 70 74 69 6f 6e 3d 22 0a 20 20 20 20 20 20 20 20  ption=".        
0e40: 20 20 20 20 74 68 65 6e 0a 20 20 20 20 20 20 20      then.       
0e50: 20 20 20 20 20 20 20 20 20 69 73 41 72 67 56 61           isArgVa
0e60: 6c 69 64 3d 31 0a 20 20 20 20 20 20 20 20 20 20  lid=1.          
0e70: 20 20 66 69 0a 20 20 20 20 20 20 20 20 64 6f 6e    fi.        don
0e80: 65 0a 20 20 20 20 20 20 20 20 69 66 20 5b 20 22  e.        if [ "
0e90: 24 61 72 67 22 20 3d 20 22 2d 2d 68 65 6c 70 22  $arg" = "--help"
0ea0: 20 5d 0a 20 20 20 20 20 20 20 20 74 68 65 6e 0a   ].        then.
0eb0: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
0ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68  .            ech
0ed0: 6f 20 22 4e 6f 20 6d 6f 72 65 20 68 65 6c 70 20  o "No more help 
0ee0: 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 43 6f  available for Co
0ef0: 6e 66 69 67 75 72 65 20 6f 70 74 69 6f 6e 73 2c  nfigure options,
0f00: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 63  ".            ec
0f10: 68 6f 20 22 63 68 65 63 6b 20 74 68 65 20 57 69  ho "check the Wi
0f20: 6b 69 20 6f 72 20 6a 6f 69 6e 20 6f 75 72 20 49  ki or join our I
0f30: 52 43 20 63 68 61 6e 6e 65 6c 22 0a 20 20 20 20  RC channel".    
0f40: 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20          break.  
0f50: 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20        else.     
0f60: 20 20 20 20 20 20 20 69 66 20 74 65 73 74 20 24         if test $
0f70: 69 73 41 72 67 56 61 6c 69 64 20 2d 65 71 20 30  isArgValid -eq 0
0f80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65  .            the
0f90: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
0fa0: 20 20 65 72 72 20 22 4f 70 74 69 6f 6e 20 27 24    err "Option '$
0fb0: 61 72 67 27 20 69 73 20 6e 6f 74 20 72 65 63 6f  arg' is not reco
0fc0: 67 6e 69 7a 65 64 22 0a 20 20 20 20 20 20 20 20  gnized".        
0fd0: 20 20 20 20 66 69 0a 20 20 20 20 20 20 20 20 66      fi.        f
0fe0: 69 0a 20 20 20 20 64 6f 6e 65 0a 7d 0a 0a 6d 73  i.    done.}..ms
0ff0: 67 20 22 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 69  g "looking for i
1000: 6e 73 74 61 6c 6c 20 70 72 6f 67 72 61 6d 73 22  nstall programs"
1010: 0a 6d 73 67 0a 0a 6e 65 65 64 5f 63 6d 64 20 73  .msg..need_cmd s
1020: 65 64 0a 6e 65 65 64 5f 63 6d 64 20 63 68 6d 6f  ed.need_cmd chmo
1030: 64 0a 6e 65 65 64 5f 63 6d 64 20 63 61 74 0a 0a  d.need_cmd cat..
1040: 43 46 47 5f 53 52 43 5f 44 49 52 3d 22 24 28 63  CFG_SRC_DIR="$(c
1050: 64 20 24 28 64 69 72 6e 61 6d 65 20 24 30 29 20  d $(dirname $0) 
1060: 26 26 20 70 77 64 29 22 0a 43 46 47 5f 53 45 4c  && pwd)".CFG_SEL
1070: 46 3d 22 24 30 22 0a 43 46 47 5f 41 52 47 53 3d  F="$0".CFG_ARGS=
1080: 22 24 40 22 0a 0a 48 45 4c 50 3d 30 0a 69 66 20  "$@"..HELP=0.if 
1090: 5b 20 22 24 31 22 20 3d 20 22 2d 2d 68 65 6c 70  [ "$1" = "--help
10a0: 22 20 5d 0a 74 68 65 6e 0a 20 20 20 20 48 45 4c  " ].then.    HEL
10b0: 50 3d 31 0a 20 20 20 20 73 68 69 66 74 0a 20 20  P=1.    shift.  
10c0: 20 20 65 63 68 6f 0a 20 20 20 20 65 63 68 6f 20    echo.    echo 
10d0: 22 55 73 61 67 65 3a 20 24 43 46 47 5f 53 45 4c  "Usage: $CFG_SEL
10e0: 46 20 5b 6f 70 74 69 6f 6e 73 5d 22 0a 20 20 20  F [options]".   
10f0: 20 65 63 68 6f 0a 20 20 20 20 65 63 68 6f 20 22   echo.    echo "
1100: 4f 70 74 69 6f 6e 73 3a 22 0a 20 20 20 20 65 63  Options:".    ec
1110: 68 6f 0a 65 6c 73 65 0a 20 20 20 20 73 74 65 70  ho.else.    step
1120: 5f 6d 73 67 20 22 70 72 6f 63 65 73 73 69 6e 67  _msg "processing
1130: 20 24 43 46 47 5f 53 45 4c 46 20 61 72 67 73 22   $CFG_SELF args"
1140: 0a 66 69 0a 0a 76 61 6c 6f 70 74 20 70 72 6f 64  .fi..valopt prod
1150: 75 63 74 2d 6e 61 6d 65 20 22 50 72 6f 64 75 63  uct-name "Produc
1160: 74 22 20 22 54 68 65 20 6e 61 6d 65 20 6f 66 20  t" "The name of 
1170: 74 68 65 20 70 72 6f 64 75 63 74 2c 20 66 6f 72  the product, for
1180: 20 64 69 73 70 6c 61 79 22 0a 76 61 6c 6f 70 74   display".valopt
1190: 20 76 65 72 69 66 79 2d 62 69 6e 20 22 22 20 22   verify-bin "" "
11a0: 54 68 65 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 72  The command to r
11b0: 75 6e 20 77 69 74 68 20 2d 2d 76 65 72 73 69 6f  un with --versio
11c0: 6e 20 74 6f 20 76 65 72 69 66 79 20 74 68 65 20  n to verify the 
11d0: 69 6e 73 74 61 6c 6c 20 77 6f 72 6b 73 22 0a 76  install works".v
11e0: 61 6c 6f 70 74 20 72 65 6c 2d 6d 61 6e 69 66 65  alopt rel-manife
11f0: 73 74 2d 64 69 72 20 22 24 7b 43 46 47 5f 56 45  st-dir "${CFG_VE
1200: 52 49 46 59 5f 42 49 4e 7d 6c 69 62 22 20 22 54  RIFY_BIN}lib" "T
1210: 68 65 20 64 69 72 65 63 74 6f 72 79 20 75 6e 64  he directory und
1220: 65 72 20 6c 69 62 2f 20 77 68 65 72 65 20 74 68  er lib/ where th
1230: 65 20 6d 61 6e 69 66 65 73 74 20 6c 69 76 65 73  e manifest lives
1240: 22 0a 76 61 6c 6f 70 74 20 73 75 63 63 65 73 73  ".valopt success
1250: 2d 6d 65 73 73 61 67 65 20 22 49 6e 73 74 61 6c  -message "Instal
1260: 6c 65 64 2e 22 20 22 54 68 65 20 73 74 72 69 6e  led." "The strin
1270: 67 20 74 6f 20 70 72 69 6e 74 20 61 66 74 65 72  g to print after
1280: 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e 73 74   successful inst
1290: 61 6c 6c 61 74 69 6f 6e 22 0a 76 61 6c 6f 70 74  allation".valopt
12a0: 20 6f 75 74 70 75 74 2d 73 63 72 69 70 74 20 22   output-script "
12b0: 24 7b 43 46 47 5f 53 52 43 5f 44 49 52 7d 2f 69  ${CFG_SRC_DIR}/i
12c0: 6e 73 74 61 6c 6c 2e 73 68 22 20 22 54 68 65 20  nstall.sh" "The 
12d0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 75 74 70  name of the outp
12e0: 75 74 20 73 63 72 69 70 74 22 0a 76 61 6c 6f 70  ut script".valop
12f0: 74 20 6c 65 67 61 63 79 2d 6d 61 6e 69 66 65 73  t legacy-manifes
1300: 74 2d 64 69 72 73 20 22 22 20 22 50 6c 61 63 65  t-dirs "" "Place
1310: 73 20 74 6f 20 6c 6f 6f 6b 20 66 6f 72 20 6c 65  s to look for le
1320: 67 61 63 79 20 6d 61 6e 69 66 65 73 74 73 20 74  gacy manifests t
1330: 6f 20 75 6e 69 6e 73 74 61 6c 6c 22 0a 0a 69 66  o uninstall"..if
1340: 20 5b 20 24 48 45 4c 50 20 2d 65 71 20 31 20 5d   [ $HELP -eq 1 ]
1350: 0a 74 68 65 6e 0a 20 20 20 20 65 63 68 6f 0a 20  .then.    echo. 
1360: 20 20 20 65 78 69 74 20 30 0a 66 69 0a 0a 73 74     exit 0.fi..st
1370: 65 70 5f 6d 73 67 20 22 76 61 6c 69 64 61 74 69  ep_msg "validati
1380: 6e 67 20 24 43 46 47 5f 53 45 4c 46 20 61 72 67  ng $CFG_SELF arg
1390: 73 22 0a 76 61 6c 69 64 61 74 65 5f 6f 70 74 0a  s".validate_opt.
13a0: 0a 52 55 53 54 5f 49 4e 53 54 41 4c 4c 45 52 5f  .RUST_INSTALLER_
13b0: 56 45 52 53 49 4f 4e 3d 60 63 61 74 20 22 24 43  VERSION=`cat "$C
13c0: 46 47 5f 53 52 43 5f 44 49 52 2f 72 75 73 74 2d  FG_SRC_DIR/rust-
13d0: 69 6e 73 74 61 6c 6c 65 72 2d 76 65 72 73 69 6f  installer-versio
13e0: 6e 22 60 0a 0a 23 20 52 65 70 6c 61 63 65 20 64  n"`..# Replace d
13f0: 61 73 68 65 73 20 69 6e 20 74 68 65 20 73 75 63  ashes in the suc
1400: 63 65 73 73 20 6d 65 73 73 61 67 65 20 77 69 74  cess message wit
1410: 68 20 73 70 61 63 65 73 20 28 6f 75 72 20 61 72  h spaces (our ar
1420: 67 20 68 61 6e 64 6c 69 6e 67 20 62 6f 74 63 68  g handling botch
1430: 65 73 20 73 70 61 63 65 73 29 0a 43 46 47 5f 50  es spaces).CFG_P
1440: 52 4f 44 55 43 54 5f 4e 41 4d 45 3d 60 65 63 68  RODUCT_NAME=`ech
1450: 6f 20 22 24 43 46 47 5f 50 52 4f 44 55 43 54 5f  o "$CFG_PRODUCT_
1460: 4e 41 4d 45 22 20 7c 20 73 65 64 20 22 73 2f 2d  NAME" | sed "s/-
1470: 2f 20 2f 67 22 60 0a 0a 23 20 52 65 70 6c 61 63  / /g"`..# Replac
1480: 65 20 64 61 73 68 65 73 20 69 6e 20 74 68 65 20  e dashes in the 
1490: 73 75 63 63 65 73 73 20 6d 65 73 73 61 67 65 20  success message 
14a0: 77 69 74 68 20 73 70 61 63 65 73 20 28 6f 75 72  with spaces (our
14b0: 20 61 72 67 20 68 61 6e 64 6c 69 6e 67 20 62 6f   arg handling bo
14c0: 74 63 68 65 73 20 73 70 61 63 65 73 29 0a 43 46  tches spaces).CF
14d0: 47 5f 53 55 43 43 45 53 53 5f 4d 45 53 53 41 47  G_SUCCESS_MESSAG
14e0: 45 3d 60 65 63 68 6f 20 22 24 43 46 47 5f 53 55  E=`echo "$CFG_SU
14f0: 43 43 45 53 53 5f 4d 45 53 53 41 47 45 22 20 7c  CCESS_MESSAGE" |
1500: 20 73 65 64 20 22 73 2f 2d 2f 20 2f 67 22 60 0a   sed "s/-/ /g"`.
1510: 0a 53 43 52 49 50 54 5f 54 45 4d 50 4c 41 54 45  .SCRIPT_TEMPLATE
1520: 3d 60 63 61 74 20 22 24 7b 43 46 47 5f 53 52 43  =`cat "${CFG_SRC
1530: 5f 44 49 52 7d 2f 69 6e 73 74 61 6c 6c 2d 74 65  _DIR}/install-te
1540: 6d 70 6c 61 74 65 2e 73 68 22 60 0a 0a 23 20 55  mplate.sh"`..# U
1550: 73 69 6e 67 20 2f 62 69 6e 2f 65 63 68 6f 20 62  sing /bin/echo b
1560: 65 63 61 75 73 65 20 75 6e 64 65 72 20 73 68 20  ecause under sh 
1570: 65 6d 75 6c 61 74 69 6f 6e 20 64 61 73 68 20 2a  emulation dash *
1580: 73 65 65 6d 73 2a 20 74 6f 20 65 73 63 61 70 65  seems* to escape
1590: 20 5c 6e 2c 20 77 68 69 63 68 20 73 63 72 65 77   \n, which screw
15a0: 73 20 75 70 20 74 68 65 20 74 65 6d 70 6c 61 74  s up the templat
15b0: 65 0a 53 43 52 49 50 54 3d 60 2f 62 69 6e 2f 65  e.SCRIPT=`/bin/e
15c0: 63 68 6f 20 22 24 7b 53 43 52 49 50 54 5f 54 45  cho "${SCRIPT_TE
15d0: 4d 50 4c 41 54 45 7d 22 60 0a 53 43 52 49 50 54  MPLATE}"`.SCRIPT
15e0: 3d 60 2f 62 69 6e 2f 65 63 68 6f 20 22 24 7b 53  =`/bin/echo "${S
15f0: 43 52 49 50 54 7d 22 20 7c 20 73 65 64 20 22 73  CRIPT}" | sed "s
1600: 2f 25 25 54 45 4d 50 4c 41 54 45 5f 50 52 4f 44  /%%TEMPLATE_PROD
1610: 55 43 54 5f 4e 41 4d 45 25 25 2f 5c 22 24 7b 43  UCT_NAME%%/\"${C
1620: 46 47 5f 50 52 4f 44 55 43 54 5f 4e 41 4d 45 7d  FG_PRODUCT_NAME}
1630: 5c 22 2f 22 60 0a 53 43 52 49 50 54 3d 60 2f 62  \"/"`.SCRIPT=`/b
1640: 69 6e 2f 65 63 68 6f 20 22 24 7b 53 43 52 49 50  in/echo "${SCRIP
1650: 54 7d 22 20 7c 20 73 65 64 20 22 73 2f 25 25 54  T}" | sed "s/%%T
1660: 45 4d 50 4c 41 54 45 5f 56 45 52 49 46 59 5f 42  EMPLATE_VERIFY_B
1670: 49 4e 25 25 2f 24 7b 43 46 47 5f 56 45 52 49 46  IN%%/${CFG_VERIF
1680: 59 5f 42 49 4e 7d 2f 22 60 0a 53 43 52 49 50 54  Y_BIN}/"`.SCRIPT
1690: 3d 60 2f 62 69 6e 2f 65 63 68 6f 20 22 24 7b 53  =`/bin/echo "${S
16a0: 43 52 49 50 54 7d 22 20 7c 20 73 65 64 20 22 73  CRIPT}" | sed "s
16b0: 2f 25 25 54 45 4d 50 4c 41 54 45 5f 52 45 4c 5f  /%%TEMPLATE_REL_
16c0: 4d 41 4e 49 46 45 53 54 5f 44 49 52 25 25 2f 24  MANIFEST_DIR%%/$
16d0: 7b 43 46 47 5f 52 45 4c 5f 4d 41 4e 49 46 45 53  {CFG_REL_MANIFES
16e0: 54 5f 44 49 52 7d 2f 22 60 0a 53 43 52 49 50 54  T_DIR}/"`.SCRIPT
16f0: 3d 60 2f 62 69 6e 2f 65 63 68 6f 20 22 24 7b 53  =`/bin/echo "${S
1700: 43 52 49 50 54 7d 22 20 7c 20 73 65 64 20 22 73  CRIPT}" | sed "s
1710: 2f 25 25 54 45 4d 50 4c 41 54 45 5f 53 55 43 43  /%%TEMPLATE_SUCC
1720: 45 53 53 5f 4d 45 53 53 41 47 45 25 25 2f 5c 22  ESS_MESSAGE%%/\"
1730: 24 7b 43 46 47 5f 53 55 43 43 45 53 53 5f 4d 45  ${CFG_SUCCESS_ME
1740: 53 53 41 47 45 7d 5c 22 2f 22 60 0a 53 43 52 49  SSAGE}\"/"`.SCRI
1750: 50 54 3d 60 2f 62 69 6e 2f 65 63 68 6f 20 22 24  PT=`/bin/echo "$
1760: 7b 53 43 52 49 50 54 7d 22 20 7c 20 73 65 64 20  {SCRIPT}" | sed 
1770: 22 73 2f 25 25 54 45 4d 50 4c 41 54 45 5f 4c 45  "s/%%TEMPLATE_LE
1780: 47 41 43 59 5f 4d 41 4e 49 46 45 53 54 5f 44 49  GACY_MANIFEST_DI
1790: 52 53 25 25 2f 5c 22 24 7b 43 46 47 5f 4c 45 47  RS%%/\"${CFG_LEG
17a0: 41 43 59 5f 4d 41 4e 49 46 45 53 54 5f 44 49 52  ACY_MANIFEST_DIR
17b0: 53 7d 5c 22 2f 22 60 0a 53 43 52 49 50 54 3d 60  S}\"/"`.SCRIPT=`
17c0: 2f 62 69 6e 2f 65 63 68 6f 20 22 24 7b 53 43 52  /bin/echo "${SCR
17d0: 49 50 54 7d 22 20 7c 20 73 65 64 20 22 73 2f 25  IPT}" | sed "s/%
17e0: 25 54 45 4d 50 4c 41 54 45 5f 52 55 53 54 5f 49  %TEMPLATE_RUST_I
17f0: 4e 53 54 41 4c 4c 45 52 5f 56 45 52 53 49 4f 4e  NSTALLER_VERSION
1800: 25 25 2f 5c 22 24 52 55 53 54 5f 49 4e 53 54 41  %%/\"$RUST_INSTA
1810: 4c 4c 45 52 5f 56 45 52 53 49 4f 4e 5c 22 2f 22  LLER_VERSION\"/"
1820: 60 0a 0a 2f 62 69 6e 2f 65 63 68 6f 20 22 24 7b  `../bin/echo "${
1830: 53 43 52 49 50 54 7d 22 20 3e 20 22 24 7b 43 46  SCRIPT}" > "${CF
1840: 47 5f 4f 55 54 50 55 54 5f 53 43 52 49 50 54 7d  G_OUTPUT_SCRIPT}
1850: 22 0a 6e 65 65 64 5f 6f 6b 20 22 63 6f 75 6c 64  ".need_ok "could
1860: 6e 27 74 20 77 72 69 74 65 20 73 63 72 69 70 74  n't write script
1870: 22 0a 63 68 6d 6f 64 20 75 2b 78 20 22 24 7b 43  ".chmod u+x "${C
1880: 46 47 5f 4f 55 54 50 55 54 5f 53 43 52 49 50 54  FG_OUTPUT_SCRIPT
1890: 7d 22 0a 6e 65 65 64 5f 6f 6b 20 22 63 6f 75 6c  }".need_ok "coul
18a0: 64 6e 27 74 20 63 68 6d 6f 64 20 73 63 72 69 70  dn't chmod scrip
18b0: 74 22 0a                                         t".