Hex Artifact Content

Artifact d77e49c779c687e04d6f0373e04295c391986be5:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 62 61 73 68 0a 0a 23 20 66 32 34 33 35 33 64 30  bash..# f24353d0
0020: 32 64 39 30 66 39 37 63 37 32 62 36 39 37 37 66  2d90f97c72b6977f
0030: 33 61 38 61 30 35 30 30 36 61 64 30 36 31 32 30  3a8a05006ad06120
0040: 0a 0a 6f 75 72 53 63 72 69 70 74 3d 22 24 28 77  ..ourScript="$(w
0050: 68 69 63 68 20 22 24 30 22 29 22 0a 69 66 20 21  hich "$0")".if !
0060: 20 68 65 61 64 20 2d 33 20 22 24 7b 6f 75 72 53   head -3 "${ourS
0070: 63 72 69 70 74 7d 22 20 32 3e 2f 64 65 76 2f 6e  cript}" 2>/dev/n
0080: 75 6c 6c 20 7c 20 67 72 65 70 20 66 32 34 33 35  ull | grep f2435
0090: 33 64 30 32 64 39 30 66 39 37 63 37 32 62 36 39  3d02d90f97c72b69
00a0: 37 37 66 33 61 38 61 30 35 30 30 36 61 64 30 36  77f3a8a05006ad06
00b0: 31 32 30 20 3e 2f 64 65 76 2f 6e 75 6c 6c 3b 20  120 >/dev/null; 
00c0: 74 68 65 6e 0a 09 65 63 68 6f 20 22 65 72 72 6f  then..echo "erro
00d0: 72 3a 20 55 6e 61 62 6c 65 20 74 6f 20 66 69 6e  r: Unable to fin
00e0: 64 20 6f 75 72 73 65 6c 76 65 73 22 20 3e 26 32  d ourselves" >&2
00f0: 0a 0a 09 65 78 69 74 20 31 0a 66 69 0a 0a 63 64  ...exit 1.fi..cd
0100: 20 22 24 28 64 69 72 6e 61 6d 65 20 22 24 7b 6f   "$(dirname "${o
0110: 75 72 53 63 72 69 70 74 7d 22 29 22 20 7c 7c 20  urScript}")" || 
0120: 65 78 69 74 20 31 0a 0a 70 61 74 63 68 44 69 72  exit 1..patchDir
0130: 3d 22 24 28 70 77 64 29 2f 70 61 74 63 68 65 73  ="$(pwd)/patches
0140: 22 0a 0a 69 66 20 5b 20 2d 7a 20 22 24 7b 4e 41  "..if [ -z "${NA
0150: 43 4c 5f 53 44 4b 5f 50 45 50 50 45 52 7d 22 20  CL_SDK_PEPPER}" 
0160: 5d 3b 20 74 68 65 6e 0a 09 65 63 68 6f 20 22 65  ]; then..echo "e
0170: 72 72 6f 72 3a 20 50 6c 65 61 73 65 20 73 65 74  rror: Please set
0180: 20 4e 41 43 4c 5f 53 44 4b 5f 50 45 50 50 45 52   NACL_SDK_PEPPER
0190: 20 74 6f 20 74 68 65 20 70 61 74 68 20 6f 66 20   to the path of 
01a0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 65 70 70  the current pepp
01b0: 65 72 20 74 61 72 67 65 74 22 20 3e 26 32 0a 0a  er target" >&2..
01c0: 09 65 78 69 74 20 31 0a 66 69 0a 0a 66 75 6e 63  .exit 1.fi..func
01d0: 74 69 6f 6e 20 64 6f 77 6e 6c 6f 61 64 28 29 20  tion download() 
01e0: 7b 0a 09 6c 6f 63 61 6c 20 75 72 6c 20 66 69 6c  {..local url fil
01f0: 65 20 68 61 73 68 0a 09 6c 6f 63 61 6c 20 68 61  e hash..local ha
0200: 73 68 4d 65 74 68 6f 64 0a 09 6c 6f 63 61 6c 20  shMethod..local 
0210: 63 68 6b 48 61 73 68 0a 0a 09 75 72 6c 3d 22 24  chkHash...url="$
0220: 31 22 0a 09 66 69 6c 65 3d 22 24 32 22 0a 09 68  1"..file="$2"..h
0230: 61 73 68 3d 22 24 33 22 0a 0a 09 69 66 20 5b 20  ash="$3"...if [ 
0240: 2d 66 20 22 24 7b 66 69 6c 65 7d 22 20 5d 3b 20  -f "${file}" ]; 
0250: 74 68 65 6e 0a 09 09 72 65 74 75 72 6e 20 30 0a  then...return 0.
0260: 09 66 69 0a 0a 09 6d 6b 64 69 72 20 2d 70 20 22  .fi...mkdir -p "
0270: 24 28 64 69 72 6e 61 6d 65 20 22 24 7b 66 69 6c  $(dirname "${fil
0280: 65 7d 22 29 22 0a 0a 09 68 61 73 68 4d 65 74 68  e}")"...hashMeth
0290: 6f 64 3d 27 73 68 61 32 35 36 27 0a 0a 09 72 6d  od='sha256'...rm
02a0: 20 2d 66 20 22 24 7b 66 69 6c 65 7d 2e 6e 65 77   -f "${file}.new
02b0: 22 0a 09 77 67 65 74 20 2d 2d 68 65 61 64 65 72  "..wget --header
02c0: 20 22 58 2d 43 61 63 68 65 2d 55 52 4c 3a 20 24   "X-Cache-URL: $
02d0: 7b 75 72 6c 7d 22 20 2d 4f 20 22 24 7b 66 69 6c  {url}" -O "${fil
02e0: 65 7d 2e 6e 65 77 22 20 22 68 74 74 70 3a 2f 2f  e}.new" "http://
02f0: 68 61 73 68 63 61 63 68 65 2e 72 6b 65 65 6e 65  hashcache.rkeene
0300: 2e 6f 72 67 2f 24 7b 68 61 73 68 4d 65 74 68 6f  .org/${hashMetho
0310: 64 7d 2f 24 7b 68 61 73 68 7d 22 20 7c 7c 20 5c  d}/${hash}" || \
0320: 0a 09 09 77 67 65 74 20 2d 4f 20 22 24 7b 66 69  ...wget -O "${fi
0330: 6c 65 7d 2e 6e 65 77 22 20 22 24 7b 75 72 6c 7d  le}.new" "${url}
0340: 22 20 7c 7c 20 5c 0a 09 09 72 65 74 75 72 6e 20  " || \...return 
0350: 31 0a 0a 09 63 68 6b 48 61 73 68 3d 22 24 28 6f  1...chkHash="$(o
0360: 70 65 6e 73 73 6c 20 22 24 7b 68 61 73 68 4d 65  penssl "${hashMe
0370: 74 68 6f 64 7d 22 20 22 24 7b 66 69 6c 65 7d 2e  thod}" "${file}.
0380: 6e 65 77 22 20 7c 20 73 65 64 20 27 73 40 2e 2a  new" | sed 's@.*
0390: 3d 20 2a 40 40 27 29 22 0a 0a 09 69 66 20 5b 20  = *@@')"...if [ 
03a0: 22 24 7b 63 68 6b 48 61 73 68 7d 22 20 21 3d 20  "${chkHash}" != 
03b0: 22 24 7b 68 61 73 68 7d 22 20 5d 3b 20 74 68 65  "${hash}" ]; the
03c0: 6e 0a 09 09 65 63 68 6f 20 22 65 72 72 6f 72 3a  n...echo "error:
03d0: 20 43 68 65 63 6b 73 75 6d 20 6d 69 73 6d 61 74   Checksum mismat
03e0: 63 68 3a 20 47 6f 74 3a 20 24 7b 63 68 6b 48 61  ch: Got: ${chkHa
03f0: 73 68 7d 3b 20 45 78 70 65 63 74 65 64 3a 20 24  sh}; Expected: $
0400: 7b 68 61 73 68 7d 22 20 3e 26 32 0a 0a 09 09 72  {hash}" >&2....r
0410: 65 74 75 72 6e 20 31 0a 09 66 69 0a 0a 09 6d 76  eturn 1..fi...mv
0420: 20 22 24 7b 66 69 6c 65 7d 2e 6e 65 77 22 20 22   "${file}.new" "
0430: 24 7b 66 69 6c 65 7d 22 0a 0a 09 72 65 74 75 72  ${file}"...retur
0440: 6e 20 30 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20  n 0.}..function 
0450: 65 78 74 72 61 63 74 28 29 20 7b 0a 09 6c 6f 63  extract() {..loc
0460: 61 6c 20 66 69 6c 65 20 64 69 72 65 63 74 6f 72  al file director
0470: 79 0a 0a 09 66 69 6c 65 3d 22 24 31 22 0a 09 64  y...file="$1"..d
0480: 69 72 65 63 74 6f 72 79 3d 22 24 32 22 0a 0a 09  irectory="$2"...
0490: 69 66 20 5b 20 21 20 2d 66 20 22 24 7b 66 69 6c  if [ ! -f "${fil
04a0: 65 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09 65 63  e}" ]; then...ec
04b0: 68 6f 20 22 65 72 72 6f 72 3a 20 55 6e 61 62 6c  ho "error: Unabl
04c0: 65 20 74 6f 20 65 78 74 72 61 63 74 20 5c 22 24  e to extract \"$
04d0: 7b 66 69 6c 65 7d 5c 22 22 20 3e 26 32 0a 0a 09  {file}\"" >&2...
04e0: 09 72 65 74 75 72 6e 20 31 0a 09 66 69 0a 0a 09  .return 1..fi...
04f0: 72 6d 20 2d 72 66 20 22 24 7b 64 69 72 65 63 74  rm -rf "${direct
0500: 6f 72 79 7d 22 0a 0a 09 6d 6b 64 69 72 20 2d 70  ory}"...mkdir -p
0510: 20 22 24 7b 64 69 72 65 63 74 6f 72 79 7d 22 20   "${directory}" 
0520: 7c 7c 20 72 65 74 75 72 6e 20 31 0a 09 28 0a 09  || return 1..(..
0530: 09 63 64 20 22 24 7b 64 69 72 65 63 74 6f 72 79  .cd "${directory
0540: 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09  }" || exit 1....
0550: 63 61 73 65 20 22 24 7b 66 69 6c 65 7d 22 20 69  case "${file}" i
0560: 6e 0a 09 09 09 2a 2e 74 61 72 2e 62 7a 32 7c 2a  n....*.tar.bz2|*
0570: 2e 62 7a 32 29 0a 09 09 09 09 62 7a 69 70 32 20  .bz2).....bzip2 
0580: 2d 64 63 20 7c 20 74 61 72 20 2d 78 66 20 2d 20  -dc | tar -xf - 
0590: 7c 7c 20 65 78 69 74 20 31 0a 09 09 09 09 3b 3b  || exit 1.....;;
05a0: 0a 09 09 09 2a 2e 74 61 72 2e 67 7a 7c 2a 2e 74  ....*.tar.gz|*.t
05b0: 67 7a 29 0a 09 09 09 09 67 7a 69 70 20 2d 64 63  gz).....gzip -dc
05c0: 20 7c 20 74 61 72 20 2d 78 66 20 2d 20 7c 7c 20   | tar -xf - || 
05d0: 65 78 69 74 20 31 0a 09 09 09 09 3b 3b 0a 09 09  exit 1.....;;...
05e0: 09 2a 2e 74 61 72 2e 78 7a 7c 2a 2e 74 78 7a 29  .*.tar.xz|*.txz)
05f0: 0a 09 09 09 09 78 7a 20 2d 64 63 20 7c 20 74 61  .....xz -dc | ta
0600: 72 20 2d 78 66 20 2d 20 7c 7c 20 65 78 69 74 20  r -xf - || exit 
0610: 31 0a 09 09 09 09 3b 3b 0a 09 09 09 2a 29 0a 09  1.....;;....*)..
0620: 09 09 09 65 63 68 6f 20 22 65 72 72 6f 72 3a 20  ...echo "error: 
0630: 44 6f 6e 27 74 20 6b 6e 6f 77 20 77 68 61 74 20  Don't know what 
0640: 74 6f 20 64 6f 20 77 69 74 68 20 5c 22 24 7b 66  to do with \"${f
0650: 69 6c 65 7d 5c 22 22 20 3e 26 32 0a 0a 09 09 09  ile}\"" >&2.....
0660: 09 65 78 69 74 20 31 0a 09 09 09 09 3b 3b 0a 09  .exit 1.....;;..
0670: 09 65 73 61 63 0a 0a 09 09 69 66 20 5b 20 2d 64  .esac....if [ -d
0680: 20 22 24 28 65 63 68 6f 20 2a 29 22 20 5d 3b 20   "$(echo *)" ]; 
0690: 74 68 65 6e 0a 09 09 09 6d 76 20 2a 2f 2a 20 2e  then....mv */* .
06a0: 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e 2f 64   >/dev/null 2>/d
06b0: 65 76 2f 6e 75 6c 6c 0a 09 09 66 69 0a 09 29 20  ev/null...fi..) 
06c0: 3c 20 22 24 7b 66 69 6c 65 7d 22 20 7c 7c 20 72  < "${file}" || r
06d0: 65 74 75 72 6e 20 31 0a 0a 09 72 65 74 75 72 6e  eturn 1...return
06e0: 20 30 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 6d   0.}..function m
06f0: 61 6b 65 28 29 20 7b 0a 09 22 24 7b 4d 41 4b 45  ake() {.."${MAKE
0700: 3a 2d 24 28 77 68 69 63 68 20 6d 61 6b 65 29 7d  :-$(which make)}
0710: 22 20 22 24 40 22 0a 7d 0a 0a 66 75 6e 63 74 69  " "$@".}..functi
0720: 6f 6e 20 62 75 69 6c 64 4c 69 62 55 53 42 28 29  on buildLibUSB()
0730: 20 7b 0a 09 6c 6f 63 61 6c 20 76 65 72 73 69 6f   {..local versio
0740: 6e 20 75 72 6c 20 70 6b 67 20 73 68 61 32 35 36  n url pkg sha256
0750: 20 63 6f 6e 66 69 67 75 72 65 5f 65 78 74 72 61   configure_extra
0760: 0a 09 6c 6f 63 61 6c 20 61 72 63 68 69 76 65 20  ..local archive 
0770: 77 6f 72 6b 64 69 72 20 69 6e 73 74 64 69 72 0a  workdir instdir.
0780: 0a 09 70 6b 67 3d 27 6c 69 62 75 73 62 27 0a 09  ..pkg='libusb'..
0790: 76 65 72 73 69 6f 6e 3d 27 31 2e 30 2e 39 27 0a  version='1.0.9'.
07a0: 09 75 72 6c 3d 22 68 74 74 70 3a 2f 2f 73 6f 75  .url="http://sou
07b0: 72 63 65 66 6f 72 67 65 2e 6e 65 74 2f 70 72 6f  rceforge.net/pro
07c0: 6a 65 63 74 73 2f 6c 69 62 75 73 62 2f 66 69 6c  jects/libusb/fil
07d0: 65 73 2f 6c 69 62 75 73 62 2d 31 2e 30 2f 6c 69  es/libusb-1.0/li
07e0: 62 75 73 62 2d 24 7b 76 65 72 73 69 6f 6e 7d 2f  busb-${version}/
07f0: 6c 69 62 75 73 62 2d 24 7b 76 65 72 73 69 6f 6e  libusb-${version
0800: 7d 2e 74 61 72 2e 62 7a 32 22 0a 09 73 68 61 32  }.tar.bz2"..sha2
0810: 35 36 3d 27 65 39 32 30 65 65 64 63 32 64 30 36  56='e920eedc2d06
0820: 62 30 39 36 30 36 36 31 31 63 39 39 65 63 37 33  b09606611c99ec73
0830: 30 34 34 31 33 63 36 37 38 34 63 62 61 36 65 33  04413c6784cba6e3
0840: 33 39 32 38 65 37 38 32 34 33 64 33 32 33 31 39  3928e78243d32319
0850: 35 66 39 62 27 0a 09 63 6f 6e 66 69 67 75 72 65  5f9b'..configure
0860: 5f 65 78 74 72 61 3d 28 2d 2d 64 69 73 61 62 6c  _extra=(--disabl
0870: 65 2d 73 68 61 72 65 64 20 2d 2d 65 6e 61 62 6c  e-shared --enabl
0880: 65 2d 73 74 61 74 69 63 20 2d 2d 77 69 74 68 2d  e-static --with-
0890: 70 69 63 20 22 24 7b 67 6c 6f 62 61 6c 5f 63 6f  pic "${global_co
08a0: 6e 66 69 67 75 72 65 5f 65 78 74 72 61 5b 40 5d  nfigure_extra[@]
08b0: 7d 22 29 0a 0a 09 61 72 63 68 69 76 65 3d 22 61  }")...archive="a
08c0: 72 63 68 69 76 65 2f 24 7b 70 6b 67 7d 2d 24 7b  rchive/${pkg}-${
08d0: 76 65 72 73 69 6f 6e 7d 2e 74 61 72 2e 62 7a 32  version}.tar.bz2
08e0: 22 0a 09 77 6f 72 6b 64 69 72 3d 22 77 6f 72 6b  "..workdir="work
08f0: 64 69 72 2d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52  dir-${RANDOM}${R
0900: 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24  ANDOM}${RANDOM}$
0910: 7b 52 41 4e 44 4f 4d 7d 2e 62 75 69 6c 64 22 0a  {RANDOM}.build".
0920: 09 69 6e 73 74 64 69 72 3d 22 77 6f 72 6b 64 69  .instdir="workdi
0930: 72 2d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e  r-${RANDOM}${RAN
0940: 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52  DOM}${RANDOM}${R
0950: 41 4e 44 4f 4d 7d 2e 69 6e 73 74 22 0a 0a 09 64  ANDOM}.inst"...d
0960: 6f 77 6e 6c 6f 61 64 20 22 24 7b 75 72 6c 7d 22  ownload "${url}"
0970: 20 22 24 7b 61 72 63 68 69 76 65 7d 22 20 22 24   "${archive}" "$
0980: 7b 73 68 61 32 35 36 7d 22 20 7c 7c 20 72 65 74  {sha256}" || ret
0990: 75 72 6e 20 31 0a 09 65 78 74 72 61 63 74 20 22  urn 1..extract "
09a0: 24 7b 61 72 63 68 69 76 65 7d 22 20 22 24 7b 77  ${archive}" "${w
09b0: 6f 72 6b 64 69 72 7d 22 20 7c 7c 20 72 65 74 75  orkdir}" || retu
09c0: 72 6e 20 31 0a 0a 09 28 0a 09 09 6d 6b 64 69 72  rn 1...(...mkdir
09d0: 20 22 24 7b 69 6e 73 74 64 69 72 7d 22 0a 0a 09   "${instdir}"...
09e0: 09 69 6e 73 74 64 69 72 3d 22 24 28 63 64 20 22  .instdir="$(cd "
09f0: 24 7b 69 6e 73 74 64 69 72 7d 22 20 26 26 20 70  ${instdir}" && p
0a00: 77 64 29 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a  wd)" || exit 1..
0a10: 09 09 63 64 20 22 24 7b 77 6f 72 6b 64 69 72 7d  ..cd "${workdir}
0a20: 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09 2e  " || exit 1.....
0a30: 2f 63 6f 6e 66 69 67 75 72 65 20 2d 2d 70 72 65  /configure --pre
0a40: 66 69 78 3d 27 27 20 22 24 7b 63 6f 6e 66 69 67  fix='' "${config
0a50: 75 72 65 5f 65 78 74 72 61 5b 40 5d 7d 22 20 7c  ure_extra[@]}" |
0a60: 7c 20 65 78 69 74 20 31 0a 09 09 6d 61 6b 65 20  | exit 1...make 
0a70: 56 3d 31 20 7c 7c 20 65 78 69 74 20 31 0a 09 09  V=1 || exit 1...
0a80: 6d 61 6b 65 20 56 3d 31 20 44 45 53 54 44 49 52  make V=1 DESTDIR
0a90: 3d 22 24 7b 69 6e 73 74 64 69 72 7d 22 20 69 6e  ="${instdir}" in
0aa0: 73 74 61 6c 6c 20 7c 7c 20 65 78 69 74 20 31 0a  stall || exit 1.
0ab0: 09 29 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 0a  .) || return 1..
0ac0: 09 72 6d 20 2d 72 66 20 22 24 7b 77 6f 72 6b 64  .rm -rf "${workd
0ad0: 69 72 7d 22 0a 0a 09 63 61 63 6b 65 79 43 68 72  ir}"...cackeyChr
0ae0: 6f 6d 65 45 78 74 4c 69 62 55 53 42 44 69 72 3d  omeExtLibUSBDir=
0af0: 22 24 28 63 64 20 22 24 7b 69 6e 73 74 64 69 72  "$(cd "${instdir
0b00: 7d 22 20 26 26 20 70 77 64 29 22 20 7c 7c 20 72  }" && pwd)" || r
0b10: 65 74 75 72 6e 20 31 0a 09 65 78 70 6f 72 74 20  eturn 1..export 
0b20: 4c 49 42 55 53 42 5f 4c 49 42 53 3d 22 2d 4c 24  LIBUSB_LIBS="-L$
0b30: 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74  {cackeyChromeExt
0b40: 4c 69 62 55 53 42 44 69 72 7d 2f 6c 69 62 20 2d  LibUSBDir}/lib -
0b50: 6c 75 73 62 2d 31 2e 30 20 2d 6c 72 74 20 2d 70  lusb-1.0 -lrt -p
0b60: 74 68 72 65 61 64 22 0a 09 65 78 70 6f 72 74 20  thread"..export 
0b70: 4c 49 42 55 53 42 5f 43 46 4c 41 47 53 3d 22 2d  LIBUSB_CFLAGS="-
0b80: 49 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45  I${cackeyChromeE
0b90: 78 74 4c 69 62 55 53 42 44 69 72 7d 2f 69 6e 63  xtLibUSBDir}/inc
0ba0: 6c 75 64 65 2f 6c 69 62 75 73 62 2d 31 2e 30 22  lude/libusb-1.0"
0bb0: 0a 0a 09 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 66  ...return 0.}..f
0bc0: 75 6e 63 74 69 6f 6e 20 62 75 69 6c 64 43 43 49  unction buildCCI
0bd0: 44 28 29 20 7b 0a 09 6c 6f 63 61 6c 20 76 65 72  D() {..local ver
0be0: 73 69 6f 6e 20 75 72 6c 20 70 6b 67 20 73 68 61  sion url pkg sha
0bf0: 32 35 36 20 63 6f 6e 66 69 67 75 72 65 5f 65 78  256 configure_ex
0c00: 74 72 61 0a 09 6c 6f 63 61 6c 20 61 72 63 68 69  tra..local archi
0c10: 76 65 20 77 6f 72 6b 64 69 72 20 69 6e 73 74 64  ve workdir instd
0c20: 69 72 0a 0a 09 70 6b 67 3d 27 63 63 69 64 27 0a  ir...pkg='ccid'.
0c30: 09 76 65 72 73 69 6f 6e 3d 27 31 2e 34 2e 32 32  .version='1.4.22
0c40: 27 0a 09 75 72 6c 3d 22 68 74 74 70 73 3a 2f 2f  '..url="https://
0c50: 61 6c 69 6f 74 68 2e 64 65 62 69 61 6e 2e 6f 72  alioth.debian.or
0c60: 67 2f 66 72 73 2f 64 6f 77 6e 6c 6f 61 64 2e 70  g/frs/download.p
0c70: 68 70 2f 66 69 6c 65 2f 34 31 36 32 2f 63 63 69  hp/file/4162/cci
0c80: 64 2d 24 7b 76 65 72 73 69 6f 6e 7d 2e 74 61 72  d-${version}.tar
0c90: 2e 62 7a 32 22 0a 09 73 68 61 32 35 36 3d 27 39  .bz2"..sha256='9
0ca0: 63 35 63 38 62 65 34 36 35 62 36 64 33 33 33 31  c5c8be465b6d3331
0cb0: 36 62 65 37 61 37 65 61 37 32 30 63 32 34 61 37  6be7a7ea720c24a7
0cc0: 37 36 65 32 64 37 36 62 65 39 30 37 32 31 31 36  76e2d76be9072116
0cd0: 64 32 38 66 63 39 61 64 66 35 38 63 31 30 36 27  d28fc9adf58c106'
0ce0: 0a 09 63 6f 6e 66 69 67 75 72 65 5f 65 78 74 72  ..configure_extr
0cf0: 61 3d 28 0a 09 09 2d 2d 77 69 74 68 2d 70 69 63  a=(...--with-pic
0d00: 0a 09 09 2d 2d 64 69 73 61 62 6c 65 2d 73 68 61  ...--disable-sha
0d10: 72 65 64 20 2d 2d 65 6e 61 62 6c 65 2d 73 74 61  red --enable-sta
0d20: 74 69 63 20 2d 2d 65 6e 61 62 6c 65 2d 75 73 62  tic --enable-usb
0d30: 0a 09 09 2d 2d 65 6e 61 62 6c 65 2d 75 73 62 64  ...--enable-usbd
0d40: 72 6f 70 64 69 72 3d 2f 64 72 69 76 65 72 73 0a  ropdir=/drivers.
0d50: 09 09 22 24 7b 67 6c 6f 62 61 6c 5f 63 6f 6e 66  .."${global_conf
0d60: 69 67 75 72 65 5f 65 78 74 72 61 5b 40 5d 7d 22  igure_extra[@]}"
0d70: 0a 09 29 0a 0a 09 61 72 63 68 69 76 65 3d 22 61  ..)...archive="a
0d80: 72 63 68 69 76 65 2f 24 7b 70 6b 67 7d 2d 24 7b  rchive/${pkg}-${
0d90: 76 65 72 73 69 6f 6e 7d 2e 74 61 72 2e 62 7a 32  version}.tar.bz2
0da0: 22 0a 09 77 6f 72 6b 64 69 72 3d 22 77 6f 72 6b  "..workdir="work
0db0: 64 69 72 2d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52  dir-${RANDOM}${R
0dc0: 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24  ANDOM}${RANDOM}$
0dd0: 7b 52 41 4e 44 4f 4d 7d 2e 62 75 69 6c 64 22 0a  {RANDOM}.build".
0de0: 09 69 6e 73 74 64 69 72 3d 22 77 6f 72 6b 64 69  .instdir="workdi
0df0: 72 2d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e  r-${RANDOM}${RAN
0e00: 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52  DOM}${RANDOM}${R
0e10: 41 4e 44 4f 4d 7d 2e 69 6e 73 74 22 0a 0a 09 64  ANDOM}.inst"...d
0e20: 6f 77 6e 6c 6f 61 64 20 22 24 7b 75 72 6c 7d 22  ownload "${url}"
0e30: 20 22 24 7b 61 72 63 68 69 76 65 7d 22 20 22 24   "${archive}" "$
0e40: 7b 73 68 61 32 35 36 7d 22 20 7c 7c 20 72 65 74  {sha256}" || ret
0e50: 75 72 6e 20 31 0a 09 65 78 74 72 61 63 74 20 22  urn 1..extract "
0e60: 24 7b 61 72 63 68 69 76 65 7d 22 20 22 24 7b 77  ${archive}" "${w
0e70: 6f 72 6b 64 69 72 7d 22 20 7c 7c 20 72 65 74 75  orkdir}" || retu
0e80: 72 6e 20 31 0a 0a 09 28 0a 09 09 6d 6b 64 69 72  rn 1...(...mkdir
0e90: 20 22 24 7b 69 6e 73 74 64 69 72 7d 22 0a 0a 09   "${instdir}"...
0ea0: 09 69 6e 73 74 64 69 72 3d 22 24 28 63 64 20 22  .instdir="$(cd "
0eb0: 24 7b 69 6e 73 74 64 69 72 7d 22 20 26 26 20 70  ${instdir}" && p
0ec0: 77 64 29 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a  wd)" || exit 1..
0ed0: 09 09 63 64 20 22 24 7b 77 6f 72 6b 64 69 72 7d  ..cd "${workdir}
0ee0: 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09 2e  " || exit 1.....
0ef0: 2f 63 6f 6e 66 69 67 75 72 65 20 2d 2d 70 72 65  /configure --pre
0f00: 66 69 78 3d 27 27 20 22 24 7b 63 6f 6e 66 69 67  fix='' "${config
0f10: 75 72 65 5f 65 78 74 72 61 5b 40 5d 7d 22 20 7c  ure_extra[@]}" |
0f20: 7c 20 65 78 69 74 20 31 0a 0a 09 09 6d 61 6b 65  | exit 1....make
0f30: 20 56 3d 31 20 7c 7c 20 65 78 69 74 20 31 0a 0a   V=1 || exit 1..
0f40: 09 09 6d 6b 64 69 72 20 22 24 7b 69 6e 73 74 64  ..mkdir "${instd
0f50: 69 72 7d 2f 6c 69 62 22 0a 09 09 63 70 20 73 72  ir}/lib"...cp sr
0f60: 63 2f 2e 6c 69 62 73 2f 6c 69 62 63 63 69 64 2e  c/.libs/libccid.
0f70: 61 20 22 24 7b 69 6e 73 74 64 69 72 7d 2f 6c 69  a "${instdir}/li
0f80: 62 22 0a 0a 09 09 6d 6b 64 69 72 20 22 24 7b 69  b"....mkdir "${i
0f90: 6e 73 74 64 69 72 7d 2f 69 6e 63 6c 75 64 65 22  nstdir}/include"
0fa0: 0a 09 09 2e 2f 73 72 63 2f 63 72 65 61 74 65 5f  ..../src/create_
0fb0: 49 6e 66 6f 5f 70 6c 69 73 74 2e 70 6c 20 2e 2f  Info_plist.pl ./
0fc0: 72 65 61 64 65 72 73 2f 73 75 70 70 6f 72 74 65  readers/supporte
0fd0: 64 5f 72 65 61 64 65 72 73 2e 74 78 74 20 73 72  d_readers.txt sr
0fe0: 63 2f 49 6e 66 6f 2e 70 6c 69 73 74 2e 73 72 63  c/Info.plist.src
0ff0: 20 2d 2d 74 61 72 67 65 74 3d 6c 69 62 63 63 69   --target=libcci
1000: 64 2e 73 6f 20 2d 2d 76 65 72 73 69 6f 6e 3d 31  d.so --version=1
1010: 2e 30 2e 30 20 7c 20 5c 0a 09 09 09 73 65 64 20  .0.0 | \....sed 
1020: 27 2f 3c 6b 65 79 3e 69 66 64 44 72 69 76 65 72  '/<key>ifdDriver
1030: 4f 70 74 69 6f 6e 73 2f 20 7b 6e 3b 63 20 5c 27  Options/ {n;c \'
1040: 24 27 5c 6e 27 27 3c 73 74 72 69 6e 67 3e 30 78  $'\n''<string>0x
1050: 30 30 30 34 3c 2f 73 74 72 69 6e 67 3e 27 24 27  0004</string>'$'
1060: 5c 6e 27 27 70 7d 27 20 7c 20 5c 0a 09 09 09 6f  \n''p}' | \....o
1070: 64 20 2d 74 20 78 31 20 2d 76 20 7c 20 73 65 64  d -t x1 -v | sed
1080: 20 27 73 40 5e 5b 5e 20 5d 2a 20 40 40 3b 73 40   's@^[^ ]* @@;s@
1090: 20 40 40 67 3b 73 40 2e 2e 40 5c 5c 78 26 40 67   @@g;s@..@\\x&@g
10a0: 3b 24 20 64 3b 73 40 5e 40 22 40 3b 73 40 24 40  ;$ d;s@^@"@;s@$@
10b0: 22 40 27 20 3e 20 22 24 7b 69 6e 73 74 64 69 72  "@' > "${instdir
10c0: 7d 2f 69 6e 63 6c 75 64 65 2f 49 6e 66 6f 2e 70  }/include/Info.p
10d0: 6c 69 73 74 2e 68 22 0a 09 29 20 7c 7c 20 72 65  list.h"..) || re
10e0: 74 75 72 6e 20 31 0a 0a 09 72 6d 20 2d 72 66 20  turn 1...rm -rf 
10f0: 22 24 7b 77 6f 72 6b 64 69 72 7d 22 0a 0a 09 63  "${workdir}"...c
1100: 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74 43 43  ackeyChromeExtCC
1110: 49 44 44 69 72 3d 22 24 28 63 64 20 22 24 7b 69  IDDir="$(cd "${i
1120: 6e 73 74 64 69 72 7d 22 20 26 26 20 70 77 64 29  nstdir}" && pwd)
1130: 22 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 0a 09  " || return 1...
1140: 72 65 74 75 72 6e 20 30 0a 7d 0a 0a 66 75 6e 63  return 0.}..func
1150: 74 69 6f 6e 20 62 75 69 6c 64 50 43 53 43 4c 69  tion buildPCSCLi
1160: 74 65 28 29 20 7b 0a 09 6c 6f 63 61 6c 20 76 65  te() {..local ve
1170: 72 73 69 6f 6e 20 75 72 6c 20 70 6b 67 20 73 68  rsion url pkg sh
1180: 61 32 35 36 20 63 6f 6e 66 69 67 75 72 65 5f 65  a256 configure_e
1190: 78 74 72 61 0a 09 6c 6f 63 61 6c 20 61 72 63 68  xtra..local arch
11a0: 69 76 65 20 77 6f 72 6b 64 69 72 20 69 6e 73 74  ive workdir inst
11b0: 64 69 72 0a 0a 09 62 75 69 6c 64 4c 69 62 55 53  dir...buildLibUS
11c0: 42 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 0a 09  B || return 1...
11d0: 70 6b 67 3d 27 70 63 73 63 2d 6c 69 74 65 27 0a  pkg='pcsc-lite'.
11e0: 09 76 65 72 73 69 6f 6e 3d 27 31 2e 38 2e 31 35  .version='1.8.15
11f0: 27 0a 09 75 72 6c 3d 22 68 74 74 70 73 3a 2f 2f  '..url="https://
1200: 61 6c 69 6f 74 68 2e 64 65 62 69 61 6e 2e 6f 72  alioth.debian.or
1210: 67 2f 66 72 73 2f 64 6f 77 6e 6c 6f 61 64 2e 70  g/frs/download.p
1220: 68 70 2f 66 69 6c 65 2f 34 31 35 37 2f 70 63 73  hp/file/4157/pcs
1230: 63 2d 6c 69 74 65 2d 24 7b 76 65 72 73 69 6f 6e  c-lite-${version
1240: 7d 2e 74 61 72 2e 62 7a 32 22 0a 09 73 68 61 32  }.tar.bz2"..sha2
1250: 35 36 3d 27 61 64 38 62 31 66 33 64 32 63 35 39  56='ad8b1f3d2c59
1260: 64 33 61 39 36 36 63 62 32 30 33 66 63 37 34 35  d3a966cb203fc745
1270: 38 38 36 32 39 63 34 61 35 66 61 33 30 66 38 61  88629c4a5fa30f8a
1280: 64 39 30 30 35 65 30 36 65 66 37 61 61 34 34 35  d9005e06ef7aa445
1290: 64 33 34 31 27 0a 09 63 6f 6e 66 69 67 75 72 65  d341'..configure
12a0: 5f 65 78 74 72 61 3d 28 0a 09 09 2d 2d 64 69 73  _extra=(...--dis
12b0: 61 62 6c 65 2d 73 68 61 72 65 64 20 2d 2d 65 6e  able-shared --en
12c0: 61 62 6c 65 2d 73 74 61 74 69 63 20 2d 2d 65 6e  able-static --en
12d0: 61 62 6c 65 2d 75 73 62 20 2d 2d 64 69 73 61 62  able-usb --disab
12e0: 6c 65 2d 6c 69 62 75 64 65 76 20 2d 2d 64 69 73  le-libudev --dis
12f0: 61 62 6c 65 2d 70 6f 6c 6b 69 74 20 2d 2d 77 69  able-polkit --wi
1300: 74 68 2d 70 69 63 0a 09 09 22 24 7b 67 6c 6f 62  th-pic..."${glob
1310: 61 6c 5f 63 6f 6e 66 69 67 75 72 65 5f 65 78 74  al_configure_ext
1320: 72 61 5b 40 5d 7d 22 0a 09 29 0a 0a 09 61 72 63  ra[@]}"..)...arc
1330: 68 69 76 65 3d 22 61 72 63 68 69 76 65 2f 24 7b  hive="archive/${
1340: 70 6b 67 7d 2d 24 7b 76 65 72 73 69 6f 6e 7d 2e  pkg}-${version}.
1350: 74 61 72 2e 62 7a 32 22 0a 09 77 6f 72 6b 64 69  tar.bz2"..workdi
1360: 72 3d 22 77 6f 72 6b 64 69 72 2d 24 7b 52 41 4e  r="workdir-${RAN
1370: 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52  DOM}${RANDOM}${R
1380: 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 2e  ANDOM}${RANDOM}.
1390: 62 75 69 6c 64 22 0a 09 69 6e 73 74 64 69 72 3d  build"..instdir=
13a0: 22 77 6f 72 6b 64 69 72 2d 24 7b 52 41 4e 44 4f  "workdir-${RANDO
13b0: 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e  M}${RANDOM}${RAN
13c0: 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 2e 69 6e  DOM}${RANDOM}.in
13d0: 73 74 22 0a 0a 09 64 6f 77 6e 6c 6f 61 64 20 22  st"...download "
13e0: 24 7b 75 72 6c 7d 22 20 22 24 7b 61 72 63 68 69  ${url}" "${archi
13f0: 76 65 7d 22 20 22 24 7b 73 68 61 32 35 36 7d 22  ve}" "${sha256}"
1400: 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 09 65 78   || return 1..ex
1410: 74 72 61 63 74 20 22 24 7b 61 72 63 68 69 76 65  tract "${archive
1420: 7d 22 20 22 24 7b 77 6f 72 6b 64 69 72 7d 22 20  }" "${workdir}" 
1430: 7c 7c 20 72 65 74 75 72 6e 20 31 0a 0a 09 28 0a  || return 1...(.
1440: 09 09 6d 6b 64 69 72 20 22 24 7b 69 6e 73 74 64  ..mkdir "${instd
1450: 69 72 7d 22 0a 0a 09 09 69 6e 73 74 64 69 72 3d  ir}"....instdir=
1460: 22 24 28 63 64 20 22 24 7b 69 6e 73 74 64 69 72  "$(cd "${instdir
1470: 7d 22 20 26 26 20 70 77 64 29 22 20 7c 7c 20 65  }" && pwd)" || e
1480: 78 69 74 20 31 0a 0a 09 09 63 64 20 22 24 7b 77  xit 1....cd "${w
1490: 6f 72 6b 64 69 72 7d 22 20 7c 7c 20 65 78 69 74  orkdir}" || exit
14a0: 20 31 0a 0a 09 09 2e 2f 63 6f 6e 66 69 67 75 72   1...../configur
14b0: 65 20 2d 2d 70 72 65 66 69 78 3d 27 27 20 2d 2d  e --prefix='' --
14c0: 73 62 69 6e 64 69 72 3d 22 2f 62 69 6e 22 20 22  sbindir="/bin" "
14d0: 24 7b 63 6f 6e 66 69 67 75 72 65 5f 65 78 74 72  ${configure_extr
14e0: 61 5b 40 5d 7d 22 20 7c 7c 20 65 78 69 74 20 31  a[@]}" || exit 1
14f0: 0a 09 09 6d 61 6b 65 20 56 3d 31 20 7c 7c 20 65  ...make V=1 || e
1500: 78 69 74 20 31 0a 09 09 6d 61 6b 65 20 56 3d 31  xit 1...make V=1
1510: 20 44 45 53 54 44 49 52 3d 22 24 7b 69 6e 73 74   DESTDIR="${inst
1520: 64 69 72 7d 22 20 69 6e 73 74 61 6c 6c 20 7c 7c  dir}" install ||
1530: 20 65 78 69 74 20 31 0a 09 29 20 7c 7c 20 72 65   exit 1..) || re
1540: 74 75 72 6e 20 31 0a 0a 09 63 61 63 6b 65 79 43  turn 1...cackeyC
1550: 68 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74 65  hromeExtPCSCLite
1560: 44 69 72 3d 22 24 28 63 64 20 22 24 7b 69 6e 73  Dir="$(cd "${ins
1570: 74 64 69 72 7d 22 20 26 26 20 70 77 64 29 22 0a  tdir}" && pwd)".
1580: 09 65 78 70 6f 72 74 20 50 43 53 43 5f 43 46 4c  .export PCSC_CFL
1590: 41 47 53 3d 22 2d 49 24 7b 63 61 63 6b 65 79 43  AGS="-I${cackeyC
15a0: 68 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74 65  hromeExtPCSCLite
15b0: 44 69 72 7d 2f 69 6e 63 6c 75 64 65 2f 50 43 53  Dir}/include/PCS
15c0: 43 22 0a 09 65 78 70 6f 72 74 20 50 43 53 43 5f  C"..export PCSC_
15d0: 4c 49 42 53 3d 22 2d 4c 24 7b 63 61 63 6b 65 79  LIBS="-L${cackey
15e0: 43 68 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74  ChromeExtPCSCLit
15f0: 65 44 69 72 7d 2f 6c 69 62 20 2d 6c 70 63 73 63  eDir}/lib -lpcsc
1600: 6c 69 74 65 20 2d 70 74 68 72 65 61 64 22 0a 0a  lite -pthread"..
1610: 09 62 75 69 6c 64 43 43 49 44 20 7c 7c 20 72 65  .buildCCID || re
1620: 74 75 72 6e 20 31 0a 0a 09 72 6d 20 2d 72 66 20  turn 1...rm -rf 
1630: 22 24 7b 69 6e 73 74 64 69 72 7d 22 0a 09 75 6e  "${instdir}"..un
1640: 73 65 74 20 50 43 53 43 5f 43 46 4c 41 47 53 20  set PCSC_CFLAGS 
1650: 50 43 53 43 5f 4c 49 42 53 20 63 61 63 6b 65 79  PCSC_LIBS cackey
1660: 43 68 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74  ChromeExtPCSCLit
1670: 65 44 69 72 0a 0a 09 72 6d 20 2d 72 66 20 22 24  eDir...rm -rf "$
1680: 7b 77 6f 72 6b 64 69 72 7d 22 0a 09 65 78 74 72  {workdir}"..extr
1690: 61 63 74 20 22 24 7b 61 72 63 68 69 76 65 7d 22  act "${archive}"
16a0: 20 22 24 7b 77 6f 72 6b 64 69 72 7d 22 20 7c 7c   "${workdir}" ||
16b0: 20 72 65 74 75 72 6e 20 31 0a 0a 09 28 0a 09 09   return 1...(...
16c0: 6d 6b 64 69 72 20 22 24 7b 69 6e 73 74 64 69 72  mkdir "${instdir
16d0: 7d 22 0a 0a 09 09 69 6e 73 74 64 69 72 3d 22 24  }"....instdir="$
16e0: 28 63 64 20 22 24 7b 69 6e 73 74 64 69 72 7d 22  (cd "${instdir}"
16f0: 20 26 26 20 70 77 64 29 22 20 7c 7c 20 65 78 69   && pwd)" || exi
1700: 74 20 31 0a 0a 09 09 63 64 20 22 24 7b 77 6f 72  t 1....cd "${wor
1710: 6b 64 69 72 7d 22 20 7c 7c 20 65 78 69 74 20 31  kdir}" || exit 1
1720: 0a 0a 09 09 73 65 64 20 2d 69 20 27 73 40 5e 70  ....sed -i 's@^p
1730: 63 73 63 64 5f 4c 44 46 4c 41 47 53 5b 5b 3a 73  cscd_LDFLAGS[[:s
1740: 70 61 63 65 3a 5d 5d 2a 3d 40 26 20 2d 61 6c 6c  pace:]]*=@& -all
1750: 2d 73 74 61 74 69 63 20 40 27 20 73 72 63 2f 4d  -static @' src/M
1760: 61 6b 65 66 69 6c 65 2e 69 6e 0a 0a 09 09 66 6f  akefile.in....fo
1770: 72 20 70 61 74 63 68 46 69 6c 65 20 69 6e 20 22  r patchFile in "
1780: 24 7b 70 61 74 63 68 44 69 72 7d 22 2f 70 63 73  ${patchDir}"/pcs
1790: 63 2d 6c 69 74 65 2d 2a 2e 64 69 66 66 3b 20 64  c-lite-*.diff; d
17a0: 6f 0a 09 09 09 69 66 20 5b 20 21 20 2d 66 20 22  o....if [ ! -f "
17b0: 24 7b 70 61 74 63 68 46 69 6c 65 7d 22 20 5d 3b  ${patchFile}" ];
17c0: 20 74 68 65 6e 0a 09 09 09 09 63 6f 6e 74 69 6e   then.....contin
17d0: 75 65 0a 09 09 09 66 69 0a 0a 09 09 09 70 61 74  ue....fi.....pat
17e0: 63 68 20 2d 70 31 20 3c 20 22 24 7b 70 61 74 63  ch -p1 < "${patc
17f0: 68 46 69 6c 65 7d 22 20 7c 7c 20 65 78 69 74 20  hFile}" || exit 
1800: 31 0a 09 09 64 6f 6e 65 0a 0a 09 09 63 70 20 22  1...done....cp "
1810: 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78  ${cackeyChromeEx
1820: 74 43 43 49 44 44 69 72 7d 2f 69 6e 63 6c 75 64  tCCIDDir}/includ
1830: 65 2f 49 6e 66 6f 2e 70 6c 69 73 74 2e 68 22 20  e/Info.plist.h" 
1840: 73 72 63 2f 20 7c 7c 20 65 78 69 74 20 31 0a 0a  src/ || exit 1..
1850: 09 09 65 78 74 72 61 44 65 66 69 6e 65 73 3d 27  ..extraDefines='
1860: 2d 44 50 43 53 43 4c 49 54 45 5f 53 54 41 54 49  -DPCSCLITE_STATI
1870: 43 5f 44 52 49 56 45 52 20 2d 44 49 46 44 48 41  C_DRIVER -DIFDHA
1880: 4e 44 4c 45 52 76 33 27 0a 0a 09 09 2e 2f 63 6f  NDLERv3'...../co
1890: 6e 66 69 67 75 72 65 20 2d 2d 70 72 65 66 69 78  nfigure --prefix
18a0: 3d 27 27 20 2d 2d 73 62 69 6e 64 69 72 3d 22 2f  ='' --sbindir="/
18b0: 62 69 6e 22 20 22 24 7b 63 6f 6e 66 69 67 75 72  bin" "${configur
18c0: 65 5f 65 78 74 72 61 5b 40 5d 7d 22 20 43 46 4c  e_extra[@]}" CFL
18d0: 41 47 53 3d 22 24 7b 43 46 4c 41 47 53 7d 20 24  AGS="${CFLAGS} $
18e0: 7b 65 78 74 72 61 44 65 66 69 6e 65 73 7d 22 20  {extraDefines}" 
18f0: 43 50 50 46 4c 41 47 53 3d 22 24 7b 43 50 50 46  CPPFLAGS="${CPPF
1900: 4c 41 47 53 7d 20 24 7b 65 78 74 72 61 44 65 66  LAGS} ${extraDef
1910: 69 6e 65 73 7d 22 20 4c 49 42 53 3d 22 24 7b 4c  ines}" LIBS="${L
1920: 49 42 53 7d 20 2d 4c 24 7b 63 61 63 6b 65 79 43  IBS} -L${cackeyC
1930: 68 72 6f 6d 65 45 78 74 43 43 49 44 44 69 72 7d  hromeExtCCIDDir}
1940: 2f 6c 69 62 20 2d 6c 63 63 69 64 22 20 7c 7c 20  /lib -lccid" || 
1950: 65 78 69 74 20 31 0a 09 09 6d 61 6b 65 20 56 3d  exit 1...make V=
1960: 31 20 7c 7c 20 65 78 69 74 20 31 0a 09 09 6d 61  1 || exit 1...ma
1970: 6b 65 20 56 3d 31 20 44 45 53 54 44 49 52 3d 22  ke V=1 DESTDIR="
1980: 24 7b 69 6e 73 74 64 69 72 7d 22 20 69 6e 73 74  ${instdir}" inst
1990: 61 6c 6c 20 7c 7c 20 65 78 69 74 20 31 0a 09 29  all || exit 1..)
19a0: 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 0a 09 72   || return 1...r
19b0: 6d 20 2d 72 66 20 22 24 7b 63 61 63 6b 65 79 43  m -rf "${cackeyC
19c0: 68 72 6f 6d 65 45 78 74 4c 69 62 55 53 42 44 69  hromeExtLibUSBDi
19d0: 72 7d 22 0a 09 75 6e 73 65 74 20 4c 49 42 55 53  r}"..unset LIBUS
19e0: 42 5f 4c 49 42 53 20 4c 49 42 55 53 42 5f 43 46  B_LIBS LIBUSB_CF
19f0: 4c 41 47 53 0a 0a 09 72 6d 20 2d 72 66 20 22 24  LAGS...rm -rf "$
1a00: 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74  {cackeyChromeExt
1a10: 43 43 49 44 44 69 72 7d 22 0a 09 72 6d 20 2d 72  CCIDDir}"..rm -r
1a20: 66 20 22 24 7b 77 6f 72 6b 64 69 72 7d 22 0a 0a  f "${workdir}"..
1a30: 09 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74  .cackeyChromeExt
1a40: 50 43 53 43 4c 69 74 65 44 69 72 3d 22 24 28 63  PCSCLiteDir="$(c
1a50: 64 20 22 24 7b 69 6e 73 74 64 69 72 7d 22 20 26  d "${instdir}" &
1a60: 26 20 70 77 64 29 22 0a 09 65 78 70 6f 72 74 20  & pwd)"..export 
1a70: 50 43 53 43 5f 43 46 4c 41 47 53 3d 22 2d 49 24  PCSC_CFLAGS="-I$
1a80: 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74  {cackeyChromeExt
1a90: 50 43 53 43 4c 69 74 65 44 69 72 7d 2f 69 6e 63  PCSCLiteDir}/inc
1aa0: 6c 75 64 65 2f 50 43 53 43 22 0a 09 65 78 70 6f  lude/PCSC"..expo
1ab0: 72 74 20 50 43 53 43 5f 4c 49 42 53 3d 22 2d 4c  rt PCSC_LIBS="-L
1ac0: 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78  ${cackeyChromeEx
1ad0: 74 50 43 53 43 4c 69 74 65 44 69 72 7d 2f 6c 69  tPCSCLiteDir}/li
1ae0: 62 2f 64 75 6d 6d 79 20 2d 6c 70 63 73 63 6c 69  b/dummy -lpcscli
1af0: 74 65 22 0a 0a 09 23 20 43 72 65 61 74 65 20 64  te"...# Create d
1b00: 75 6d 6d 79 20 50 43 2f 53 43 20 6c 69 62 72 61  ummy PC/SC libra
1b10: 72 79 20 2d 2d 20 6a 75 73 74 20 65 6e 6f 75 67  ry -- just enoug
1b20: 68 20 74 6f 20 70 61 73 74 20 43 41 43 4b 65 79  h to past CACKey
1b30: 20 6c 69 6e 6b 69 6e 67 20 74 65 73 74 0a 09 6d   linking test..m
1b40: 6b 64 69 72 20 22 24 7b 63 61 63 6b 65 79 43 68  kdir "${cackeyCh
1b50: 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74 65 44  romeExtPCSCLiteD
1b60: 69 72 7d 2f 6c 69 62 2f 64 75 6d 6d 79 22 20 7c  ir}/lib/dummy" |
1b70: 7c 20 72 65 74 75 72 6e 20 31 0a 09 65 63 68 6f  | return 1..echo
1b80: 20 27 76 6f 69 64 20 53 43 61 72 64 45 73 74 61   'void SCardEsta
1b90: 62 6c 69 73 68 43 6f 6e 74 65 78 74 28 76 6f 69  blishContext(voi
1ba0: 64 29 20 7b 20 72 65 74 75 72 6e 3b 20 7d 3b 20  d) { return; }; 
1bb0: 76 6f 69 64 20 53 43 61 72 64 43 6f 6e 6e 65 63  void SCardConnec
1bc0: 74 28 76 6f 69 64 29 20 7b 20 72 65 74 75 72 6e  t(void) { return
1bd0: 3b 20 7d 27 20 7c 20 67 63 63 20 2d 78 20 63 20  ; }' | gcc -x c 
1be0: 2d 20 2d 66 50 49 43 20 2d 73 68 61 72 65 64 20  - -fPIC -shared 
1bf0: 2d 6f 20 22 24 7b 63 61 63 6b 65 79 43 68 72 6f  -o "${cackeyChro
1c00: 6d 65 45 78 74 50 43 53 43 4c 69 74 65 44 69 72  meExtPCSCLiteDir
1c10: 7d 2f 6c 69 62 2f 64 75 6d 6d 79 2f 6c 69 62 70  }/lib/dummy/libp
1c20: 63 73 63 6c 69 74 65 2e 73 6f 22 0a 0a 09 23 20  csclite.so"...# 
1c30: 43 6f 70 79 20 73 74 61 74 69 63 61 6c 6c 79 20  Copy statically 
1c40: 6c 69 6e 6b 65 64 20 22 70 63 73 63 64 22 20 6f  linked "pcscd" o
1c50: 75 74 0a 09 63 70 20 22 24 7b 63 61 63 6b 65 79  ut..cp "${cackey
1c60: 43 68 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74  ChromeExtPCSCLit
1c70: 65 44 69 72 7d 2f 62 69 6e 2f 70 63 73 63 64 22  eDir}/bin/pcscd"
1c80: 20 22 24 7b 6f 75 74 64 69 72 7d 22 20 7c 7c 20   "${outdir}" || 
1c90: 72 65 74 75 72 6e 20 31 0a 0a 09 72 65 74 75 72  return 1...retur
1ca0: 6e 20 30 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20  n 0.}..function 
1cb0: 62 75 69 6c 64 43 41 43 4b 65 79 28 29 20 7b 0a  buildCACKey() {.
1cc0: 09 6c 6f 63 61 6c 20 70 6c 61 74 66 6f 72 6d 0a  .local platform.
1cd0: 09 6c 6f 63 61 6c 20 66 69 6c 65 20 63 6f 70 69  .local file copi
1ce0: 65 64 0a 0a 09 70 6c 61 74 66 6f 72 6d 3d 22 24  ed...platform="$
1cf0: 31 22 0a 09 73 68 69 66 74 0a 0a 09 69 66 20 5b  1"..shift...if [
1d00: 20 2d 7a 20 22 24 7b 70 6c 61 74 66 6f 72 6d 7d   -z "${platform}
1d10: 22 20 5d 3b 20 74 68 65 6e 0a 09 09 65 63 68 6f  " ]; then...echo
1d20: 20 27 65 72 72 6f 72 3a 20 50 6c 61 74 66 6f 72   'error: Platfor
1d30: 6d 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 27  m not specified'
1d40: 20 3e 26 32 0a 0a 09 09 72 65 74 75 72 6e 20 31   >&2....return 1
1d50: 0a 09 66 69 0a 0a 09 28 0a 09 09 63 64 20 2e 2e  ..fi...(...cd ..
1d60: 2f 2e 2e 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09  /.. || exit 1...
1d70: 09 6d 61 6b 65 20 64 69 73 74 63 6c 65 61 6e 0a  .make distclean.
1d80: 0a 09 09 2e 2f 63 6f 6e 66 69 67 75 72 65 20 2d  ..../configure -
1d90: 2d 77 69 74 68 2d 70 63 73 63 2d 68 65 61 64 65  -with-pcsc-heade
1da0: 72 73 3d 22 24 7b 63 61 63 6b 65 79 43 68 72 6f  rs="${cackeyChro
1db0: 6d 65 45 78 74 50 43 53 43 4c 69 74 65 44 69 72  meExtPCSCLiteDir
1dc0: 7d 2f 69 6e 63 6c 75 64 65 2f 50 43 53 43 22 20  }/include/PCSC" 
1dd0: 2d 2d 77 69 74 68 2d 70 63 73 63 2d 6c 69 62 73  --with-pcsc-libs
1de0: 3d 22 24 7b 50 43 53 43 5f 4c 49 42 53 7d 22 20  ="${PCSC_LIBS}" 
1df0: 22 24 40 22 20 7c 7c 20 65 78 69 74 20 31 0a 09  "$@" || exit 1..
1e00: 09 6d 61 6b 65 20 7c 7c 20 65 78 69 74 20 31 0a  .make || exit 1.
1e10: 09 29 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 0a  .) || return 1..
1e20: 09 63 6f 70 69 65 64 3d 27 30 27 0a 09 66 6f 72  .copied='0'..for
1e30: 20 66 69 6c 65 20 69 6e 20 2e 2e 2f 2e 2e 2f 6c   file in ../../l
1e40: 69 62 63 61 63 6b 65 79 7b 2c 5f 67 7d 2e 7b 73  ibcackey{,_g}.{s
1e50: 6f 2c 64 6c 6c 2c 64 79 6c 69 62 7d 3b 20 64 6f  o,dll,dylib}; do
1e60: 0a 09 09 69 66 20 5b 20 2d 66 20 22 24 7b 66 69  ...if [ -f "${fi
1e70: 6c 65 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09 09  le}" ]; then....
1e80: 6d 6b 64 69 72 20 2d 70 20 22 24 7b 6f 75 74 64  mkdir -p "${outd
1e90: 69 72 7d 2f 24 7b 70 6c 61 74 66 6f 72 6d 7d 22  ir}/${platform}"
1ea0: 0a 0a 09 09 09 63 70 20 22 24 7b 66 69 6c 65 7d  .....cp "${file}
1eb0: 22 20 22 24 7b 6f 75 74 64 69 72 7d 2f 24 7b 70  " "${outdir}/${p
1ec0: 6c 61 74 66 6f 72 6d 7d 22 0a 09 09 09 63 6f 70  latform}"....cop
1ed0: 69 65 64 3d 27 31 27 0a 09 09 66 69 0a 09 64 6f  ied='1'...fi..do
1ee0: 6e 65 0a 0a 09 69 66 20 5b 20 22 24 7b 63 6f 70  ne...if [ "${cop
1ef0: 69 65 64 7d 22 20 3d 20 27 30 27 20 5d 3b 20 74  ied}" = '0' ]; t
1f00: 68 65 6e 0a 09 09 65 63 68 6f 20 22 65 72 72 6f  hen...echo "erro
1f10: 72 3a 20 55 6e 61 62 6c 65 20 74 6f 20 63 6f 70  r: Unable to cop
1f20: 79 20 62 75 69 6c 74 20 6c 69 62 63 61 63 6b 65  y built libcacke
1f30: 79 20 74 6f 20 6c 6f 63 61 6c 20 64 69 72 65 63  y to local direc
1f40: 74 6f 72 79 22 20 3e 26 32 0a 0a 09 09 72 65 74  tory" >&2....ret
1f50: 75 72 6e 20 31 0a 09 66 69 0a 0a 09 72 65 74 75  urn 1..fi...retu
1f60: 72 6e 20 30 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e  rn 0.}..function
1f70: 20 63 6c 65 61 6e 75 70 28 29 20 7b 0a 09 69 66   cleanup() {..if
1f80: 20 5b 20 2d 6e 20 22 24 7b 63 61 63 6b 65 79 43   [ -n "${cackeyC
1f90: 68 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74 65  hromeExtPCSCLite
1fa0: 44 69 72 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09  Dir}" ]; then...
1fb0: 72 6d 20 2d 72 66 20 22 24 7b 63 61 63 6b 65 79  rm -rf "${cackey
1fc0: 43 68 72 6f 6d 65 45 78 74 50 43 53 43 4c 69 74  ChromeExtPCSCLit
1fd0: 65 44 69 72 7d 22 0a 09 09 75 6e 73 65 74 20 50  eDir}"...unset P
1fe0: 43 53 43 5f 43 46 4c 41 47 53 20 50 43 53 43 5f  CSC_CFLAGS PCSC_
1ff0: 4c 49 42 53 0a 09 66 69 0a 0a 09 69 66 20 5b 20  LIBS..fi...if [ 
2000: 2d 6e 20 22 24 7b 63 61 63 6b 65 79 43 68 72 6f  -n "${cackeyChro
2010: 6d 65 45 78 74 4c 69 62 55 53 42 44 69 72 7d 22  meExtLibUSBDir}"
2020: 20 5d 3b 20 74 68 65 6e 0a 09 09 72 6d 20 2d 72   ]; then...rm -r
2030: 66 20 22 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d  f "${cackeyChrom
2040: 65 45 78 74 4c 69 62 55 53 42 44 69 72 7d 22 0a  eExtLibUSBDir}".
2050: 09 09 75 6e 73 65 74 20 4c 49 42 55 53 42 5f 4c  ..unset LIBUSB_L
2060: 49 42 53 20 4c 49 42 55 53 42 5f 43 46 4c 41 47  IBS LIBUSB_CFLAG
2070: 53 0a 09 66 69 0a 7d 0a 0a 6f 75 74 64 69 72 3d  S..fi.}..outdir=
2080: 22 77 6f 72 6b 64 69 72 2d 24 7b 52 41 4e 44 4f  "workdir-${RANDO
2090: 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e  M}${RANDOM}${RAN
20a0: 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 2e 6f 75  DOM}${RANDOM}.ou
20b0: 74 22 0a 72 6d 20 2d 72 66 20 22 24 7b 6f 75 74  t".rm -rf "${out
20c0: 64 69 72 7d 22 0a 6d 6b 64 69 72 20 22 24 7b 6f  dir}".mkdir "${o
20d0: 75 74 64 69 72 7d 22 20 7c 7c 20 65 78 69 74 20  utdir}" || exit 
20e0: 31 0a 0a 62 75 69 6c 64 50 43 53 43 4c 69 74 65  1..buildPCSCLite
20f0: 20 7c 7c 20 65 78 69 74 20 31 0a 0a 62 75 69 6c   || exit 1..buil
2100: 64 43 41 43 4b 65 79 20 62 75 69 6c 64 20 7c 7c  dCACKey build ||
2110: 20 65 78 69 74 20 31 0a 0a 62 75 69 6c 64 4f 75   exit 1..buildOu
2120: 74 70 75 74 54 79 70 65 3d 22 24 28 65 63 68 6f  tputType="$(echo
2130: 20 27 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20 61   'int main(int a
2140: 72 67 63 2c 20 63 68 61 72 20 2a 2a 61 72 67 76  rgc, char **argv
2150: 29 20 7b 20 72 65 74 75 72 6e 28 30 29 3b 20 7d  ) { return(0); }
2160: 27 20 7c 20 22 24 7b 43 43 3a 2d 63 63 7d 22 20  ' | "${CC:-cc}" 
2170: 2d 78 20 63 20 2d 20 2d 6f 20 2f 64 65 76 2f 73  -x c - -o /dev/s
2180: 74 64 6f 75 74 20 7c 20 66 69 6c 65 20 2d 29 22  tdout | file -)"
2190: 20 7c 7c 20 65 78 69 74 20 31 0a 63 61 73 65 20   || exit 1.case 
21a0: 22 24 7b 62 75 69 6c 64 4f 75 74 70 75 74 54 79  "${buildOutputTy
21b0: 70 65 7d 22 20 69 6e 0a 09 2a 78 38 36 2d 36 34  pe}" in..*x86-64
21c0: 2a 29 0a 09 09 6e 61 63 6c 54 6f 70 44 69 72 3d  *)...naclTopDir=
21d0: 27 6c 69 6e 75 78 5f 78 38 36 5f 67 6c 69 62 63  'linux_x86_glibc
21e0: 27 0a 09 09 6e 61 63 6c 50 6c 61 74 66 6f 72 6d  '...naclPlatform
21f0: 3d 27 78 38 36 5f 36 34 2d 6e 61 63 6c 27 0a 09  ='x86_64-nacl'..
2200: 09 3b 3b 0a 09 2a 29 0a 09 09 65 63 68 6f 20 22  .;;..*)...echo "
2210: 65 72 72 6f 72 3a 20 55 6e 72 65 63 6f 67 6e 69  error: Unrecogni
2220: 7a 65 64 20 70 6c 61 74 66 6f 72 6d 20 6f 75 74  zed platform out
2230: 70 75 74 3a 20 5c 22 24 7b 62 75 69 6c 64 4f 75  put: \"${buildOu
2240: 74 70 75 74 54 79 70 65 7d 5c 22 22 20 3e 26 32  tputType}\"" >&2
2250: 0a 0a 09 09 65 78 69 74 20 31 0a 09 09 3b 3b 0a  ....exit 1...;;.
2260: 65 73 61 63 0a 50 41 54 48 3d 22 24 7b 50 41 54  esac.PATH="${PAT
2270: 48 7d 3a 24 7b 4e 41 43 4c 5f 53 44 4b 5f 50 45  H}:${NACL_SDK_PE
2280: 50 50 45 52 7d 2f 74 6f 6f 6c 63 68 61 69 6e 2f  PPER}/toolchain/
2290: 24 7b 6e 61 63 6c 54 6f 70 44 69 72 7d 2f 62 69  ${naclTopDir}/bi
22a0: 6e 22 20 62 75 69 6c 64 43 41 43 4b 65 79 20 22  n" buildCACKey "
22b0: 24 7b 6e 61 63 6c 50 6c 61 74 66 6f 72 6d 7d 22  ${naclPlatform}"
22c0: 20 2d 2d 68 6f 73 74 3d 22 24 7b 6e 61 63 6c 50   --host="${naclP
22d0: 6c 61 74 66 6f 72 6d 7d 22 20 43 43 3d 24 7b 6e  latform}" CC=${n
22e0: 61 63 6c 50 6c 61 74 66 6f 72 6d 7d 2d 67 63 63  aclPlatform}-gcc
22f0: 20 4c 44 3d 24 7b 6e 61 63 6c 50 6c 61 74 66 6f   LD=${naclPlatfo
2300: 72 6d 7d 2d 6c 64 20 4f 42 4a 43 4f 50 59 3d 24  rm}-ld OBJCOPY=$
2310: 7b 6e 61 63 6c 50 6c 61 74 66 6f 72 6d 7d 2d 6f  {naclPlatform}-o
2320: 62 6a 63 6f 70 79 20 53 54 52 49 50 3d 24 7b 6e  bjcopy STRIP=${n
2330: 61 63 6c 50 6c 61 74 66 6f 72 6d 7d 2d 73 74 72  aclPlatform}-str
2340: 69 70 20 7c 7c 20 65 78 69 74 20 31 0a 0a 63 6c  ip || exit 1..cl
2350: 65 61 6e 75 70 0a 0a 65 78 69 74 20 30 0a        eanup..exit 0.