Hex Artifact Content

Artifact f6aa807d464f31f7d9bfadeb8a549dbf4bd339b3:


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 2d 67 33 20 2d 67 67 64 62 33 20  AGS="-g3 -ggdb3 
18e0: 24 7b 43 46 4c 41 47 53 7d 20 24 7b 65 78 74 72  ${CFLAGS} ${extr
18f0: 61 44 65 66 69 6e 65 73 7d 22 20 43 50 50 46 4c  aDefines}" CPPFL
1900: 41 47 53 3d 22 24 7b 43 50 50 46 4c 41 47 53 7d  AGS="${CPPFLAGS}
1910: 20 24 7b 65 78 74 72 61 44 65 66 69 6e 65 73 7d   ${extraDefines}
1920: 22 20 4c 49 42 53 3d 22 24 7b 4c 49 42 53 7d 20  " LIBS="${LIBS} 
1930: 2d 4c 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65  -L${cackeyChrome
1940: 45 78 74 43 43 49 44 44 69 72 7d 2f 6c 69 62 20  ExtCCIDDir}/lib 
1950: 2d 6c 63 63 69 64 22 20 7c 7c 20 65 78 69 74 20  -lccid" || exit 
1960: 31 0a 09 09 6d 61 6b 65 20 56 3d 31 20 7c 7c 20  1...make V=1 || 
1970: 65 78 69 74 20 31 0a 09 09 6d 61 6b 65 20 56 3d  exit 1...make V=
1980: 31 20 44 45 53 54 44 49 52 3d 22 24 7b 69 6e 73  1 DESTDIR="${ins
1990: 74 64 69 72 7d 22 20 69 6e 73 74 61 6c 6c 20 7c  tdir}" install |
19a0: 7c 20 65 78 69 74 20 31 0a 09 29 20 7c 7c 20 72  | exit 1..) || r
19b0: 65 74 75 72 6e 20 31 0a 0a 09 72 6d 20 2d 72 66  eturn 1...rm -rf
19c0: 20 22 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65   "${cackeyChrome
19d0: 45 78 74 4c 69 62 55 53 42 44 69 72 7d 22 0a 09  ExtLibUSBDir}"..
19e0: 75 6e 73 65 74 20 4c 49 42 55 53 42 5f 4c 49 42  unset LIBUSB_LIB
19f0: 53 20 4c 49 42 55 53 42 5f 43 46 4c 41 47 53 0a  S LIBUSB_CFLAGS.
1a00: 0a 09 72 6d 20 2d 72 66 20 22 24 7b 63 61 63 6b  ..rm -rf "${cack
1a10: 65 79 43 68 72 6f 6d 65 45 78 74 43 43 49 44 44  eyChromeExtCCIDD
1a20: 69 72 7d 22 0a 09 72 6d 20 2d 72 66 20 22 24 7b  ir}"..rm -rf "${
1a30: 77 6f 72 6b 64 69 72 7d 22 0a 0a 09 63 61 63 6b  workdir}"...cack
1a40: 65 79 43 68 72 6f 6d 65 45 78 74 50 43 53 43 4c  eyChromeExtPCSCL
1a50: 69 74 65 44 69 72 3d 22 24 28 63 64 20 22 24 7b  iteDir="$(cd "${
1a60: 69 6e 73 74 64 69 72 7d 22 20 26 26 20 70 77 64  instdir}" && pwd
1a70: 29 22 0a 09 65 78 70 6f 72 74 20 50 43 53 43 5f  )"..export PCSC_
1a80: 43 46 4c 41 47 53 3d 22 2d 49 24 7b 63 61 63 6b  CFLAGS="-I${cack
1a90: 65 79 43 68 72 6f 6d 65 45 78 74 50 43 53 43 4c  eyChromeExtPCSCL
1aa0: 69 74 65 44 69 72 7d 2f 69 6e 63 6c 75 64 65 2f  iteDir}/include/
1ab0: 50 43 53 43 22 0a 09 65 78 70 6f 72 74 20 50 43  PCSC"..export PC
1ac0: 53 43 5f 4c 49 42 53 3d 22 2d 4c 24 7b 63 61 63  SC_LIBS="-L${cac
1ad0: 6b 65 79 43 68 72 6f 6d 65 45 78 74 50 43 53 43  keyChromeExtPCSC
1ae0: 4c 69 74 65 44 69 72 7d 2f 6c 69 62 2f 64 75 6d  LiteDir}/lib/dum
1af0: 6d 79 20 2d 6c 70 63 73 63 6c 69 74 65 22 0a 0a  my -lpcsclite"..
1b00: 09 23 20 43 72 65 61 74 65 20 64 75 6d 6d 79 20  .# Create dummy 
1b10: 50 43 2f 53 43 20 6c 69 62 72 61 72 79 20 2d 2d  PC/SC library --
1b20: 20 6a 75 73 74 20 65 6e 6f 75 67 68 20 74 6f 20   just enough to 
1b30: 70 61 73 74 20 43 41 43 4b 65 79 20 6c 69 6e 6b  past CACKey link
1b40: 69 6e 67 20 74 65 73 74 0a 09 6d 6b 64 69 72 20  ing test..mkdir 
1b50: 22 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45  "${cackeyChromeE
1b60: 78 74 50 43 53 43 4c 69 74 65 44 69 72 7d 2f 6c  xtPCSCLiteDir}/l
1b70: 69 62 2f 64 75 6d 6d 79 22 20 7c 7c 20 72 65 74  ib/dummy" || ret
1b80: 75 72 6e 20 31 0a 09 65 63 68 6f 20 27 76 6f 69  urn 1..echo 'voi
1b90: 64 20 53 43 61 72 64 45 73 74 61 62 6c 69 73 68  d SCardEstablish
1ba0: 43 6f 6e 74 65 78 74 28 76 6f 69 64 29 20 7b 20  Context(void) { 
1bb0: 72 65 74 75 72 6e 3b 20 7d 3b 20 76 6f 69 64 20  return; }; void 
1bc0: 53 43 61 72 64 43 6f 6e 6e 65 63 74 28 76 6f 69  SCardConnect(voi
1bd0: 64 29 20 7b 20 72 65 74 75 72 6e 3b 20 7d 27 20  d) { return; }' 
1be0: 7c 20 67 63 63 20 2d 78 20 63 20 2d 20 2d 66 50  | gcc -x c - -fP
1bf0: 49 43 20 2d 73 68 61 72 65 64 20 2d 6f 20 22 24  IC -shared -o "$
1c00: 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74  {cackeyChromeExt
1c10: 50 43 53 43 4c 69 74 65 44 69 72 7d 2f 6c 69 62  PCSCLiteDir}/lib
1c20: 2f 64 75 6d 6d 79 2f 6c 69 62 70 63 73 63 6c 69  /dummy/libpcscli
1c30: 74 65 2e 73 6f 22 0a 0a 09 23 20 43 6f 70 79 20  te.so"...# Copy 
1c40: 73 74 61 74 69 63 61 6c 6c 79 20 6c 69 6e 6b 65  statically linke
1c50: 64 20 22 70 63 73 63 64 22 20 6f 75 74 0a 09 63  d "pcscd" out..c
1c60: 70 20 22 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d  p "${cackeyChrom
1c70: 65 45 78 74 50 43 53 43 4c 69 74 65 44 69 72 7d  eExtPCSCLiteDir}
1c80: 2f 62 69 6e 2f 70 63 73 63 64 22 20 22 24 7b 6f  /bin/pcscd" "${o
1c90: 75 74 64 69 72 7d 22 20 7c 7c 20 72 65 74 75 72  utdir}" || retur
1ca0: 6e 20 31 0a 0a 09 72 65 74 75 72 6e 20 30 0a 7d  n 1...return 0.}
1cb0: 0a 0a 66 75 6e 63 74 69 6f 6e 20 62 75 69 6c 64  ..function build
1cc0: 43 41 43 4b 65 79 28 29 20 7b 0a 09 6c 6f 63 61  CACKey() {..loca
1cd0: 6c 20 70 6c 61 74 66 6f 72 6d 0a 09 6c 6f 63 61  l platform..loca
1ce0: 6c 20 66 69 6c 65 20 63 6f 70 69 65 64 0a 0a 09  l file copied...
1cf0: 70 6c 61 74 66 6f 72 6d 3d 22 24 31 22 0a 09 73  platform="$1"..s
1d00: 68 69 66 74 0a 0a 09 69 66 20 5b 20 2d 7a 20 22  hift...if [ -z "
1d10: 24 7b 70 6c 61 74 66 6f 72 6d 7d 22 20 5d 3b 20  ${platform}" ]; 
1d20: 74 68 65 6e 0a 09 09 65 63 68 6f 20 27 65 72 72  then...echo 'err
1d30: 6f 72 3a 20 50 6c 61 74 66 6f 72 6d 20 6e 6f 74  or: Platform not
1d40: 20 73 70 65 63 69 66 69 65 64 27 20 3e 26 32 0a   specified' >&2.
1d50: 0a 09 09 72 65 74 75 72 6e 20 31 0a 09 66 69 0a  ...return 1..fi.
1d60: 0a 09 28 0a 09 09 63 64 20 2e 2e 2f 2e 2e 20 7c  ..(...cd ../.. |
1d70: 7c 20 65 78 69 74 20 31 0a 0a 09 09 6d 61 6b 65  | exit 1....make
1d80: 20 64 69 73 74 63 6c 65 61 6e 0a 0a 09 09 2e 2f   distclean...../
1d90: 63 6f 6e 66 69 67 75 72 65 20 2d 2d 77 69 74 68  configure --with
1da0: 2d 70 63 73 63 2d 68 65 61 64 65 72 73 3d 22 24  -pcsc-headers="$
1db0: 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74  {cackeyChromeExt
1dc0: 50 43 53 43 4c 69 74 65 44 69 72 7d 2f 69 6e 63  PCSCLiteDir}/inc
1dd0: 6c 75 64 65 2f 50 43 53 43 22 20 2d 2d 77 69 74  lude/PCSC" --wit
1de0: 68 2d 70 63 73 63 2d 6c 69 62 73 3d 22 24 7b 50  h-pcsc-libs="${P
1df0: 43 53 43 5f 4c 49 42 53 7d 22 20 22 24 40 22 20  CSC_LIBS}" "$@" 
1e00: 7c 7c 20 65 78 69 74 20 31 0a 09 09 6d 61 6b 65  || exit 1...make
1e10: 20 7c 7c 20 65 78 69 74 20 31 0a 09 29 20 7c 7c   || exit 1..) ||
1e20: 20 72 65 74 75 72 6e 20 31 0a 0a 09 63 6f 70 69   return 1...copi
1e30: 65 64 3d 27 30 27 0a 09 66 6f 72 20 66 69 6c 65  ed='0'..for file
1e40: 20 69 6e 20 2e 2e 2f 2e 2e 2f 6c 69 62 63 61 63   in ../../libcac
1e50: 6b 65 79 7b 2c 5f 67 7d 2e 7b 73 6f 2c 64 6c 6c  key{,_g}.{so,dll
1e60: 2c 64 79 6c 69 62 7d 3b 20 64 6f 0a 09 09 69 66  ,dylib}; do...if
1e70: 20 5b 20 2d 66 20 22 24 7b 66 69 6c 65 7d 22 20   [ -f "${file}" 
1e80: 5d 3b 20 74 68 65 6e 0a 09 09 09 6d 6b 64 69 72  ]; then....mkdir
1e90: 20 2d 70 20 22 24 7b 6f 75 74 64 69 72 7d 2f 24   -p "${outdir}/$
1ea0: 7b 70 6c 61 74 66 6f 72 6d 7d 22 0a 0a 09 09 09  {platform}".....
1eb0: 63 70 20 22 24 7b 66 69 6c 65 7d 22 20 22 24 7b  cp "${file}" "${
1ec0: 6f 75 74 64 69 72 7d 2f 24 7b 70 6c 61 74 66 6f  outdir}/${platfo
1ed0: 72 6d 7d 22 0a 09 09 09 63 6f 70 69 65 64 3d 27  rm}"....copied='
1ee0: 31 27 0a 09 09 66 69 0a 09 64 6f 6e 65 0a 0a 09  1'...fi..done...
1ef0: 69 66 20 5b 20 22 24 7b 63 6f 70 69 65 64 7d 22  if [ "${copied}"
1f00: 20 3d 20 27 30 27 20 5d 3b 20 74 68 65 6e 0a 09   = '0' ]; then..
1f10: 09 65 63 68 6f 20 22 65 72 72 6f 72 3a 20 55 6e  .echo "error: Un
1f20: 61 62 6c 65 20 74 6f 20 63 6f 70 79 20 62 75 69  able to copy bui
1f30: 6c 74 20 6c 69 62 63 61 63 6b 65 79 20 74 6f 20  lt libcackey to 
1f40: 6c 6f 63 61 6c 20 64 69 72 65 63 74 6f 72 79 22  local directory"
1f50: 20 3e 26 32 0a 0a 09 09 72 65 74 75 72 6e 20 31   >&2....return 1
1f60: 0a 09 66 69 0a 0a 09 72 65 74 75 72 6e 20 30 0a  ..fi...return 0.
1f70: 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 63 6c 65 61  }..function clea
1f80: 6e 75 70 28 29 20 7b 0a 09 69 66 20 5b 20 2d 6e  nup() {..if [ -n
1f90: 20 22 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65   "${cackeyChrome
1fa0: 45 78 74 50 43 53 43 4c 69 74 65 44 69 72 7d 22  ExtPCSCLiteDir}"
1fb0: 20 5d 3b 20 74 68 65 6e 0a 09 09 72 6d 20 2d 72   ]; then...rm -r
1fc0: 66 20 22 24 7b 63 61 63 6b 65 79 43 68 72 6f 6d  f "${cackeyChrom
1fd0: 65 45 78 74 50 43 53 43 4c 69 74 65 44 69 72 7d  eExtPCSCLiteDir}
1fe0: 22 0a 09 09 75 6e 73 65 74 20 50 43 53 43 5f 43  "...unset PCSC_C
1ff0: 46 4c 41 47 53 20 50 43 53 43 5f 4c 49 42 53 0a  FLAGS PCSC_LIBS.
2000: 09 66 69 0a 0a 09 69 66 20 5b 20 2d 6e 20 22 24  .fi...if [ -n "$
2010: 7b 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74  {cackeyChromeExt
2020: 4c 69 62 55 53 42 44 69 72 7d 22 20 5d 3b 20 74  LibUSBDir}" ]; t
2030: 68 65 6e 0a 09 09 72 6d 20 2d 72 66 20 22 24 7b  hen...rm -rf "${
2040: 63 61 63 6b 65 79 43 68 72 6f 6d 65 45 78 74 4c  cackeyChromeExtL
2050: 69 62 55 53 42 44 69 72 7d 22 0a 09 09 75 6e 73  ibUSBDir}"...uns
2060: 65 74 20 4c 49 42 55 53 42 5f 4c 49 42 53 20 4c  et LIBUSB_LIBS L
2070: 49 42 55 53 42 5f 43 46 4c 41 47 53 0a 09 66 69  IBUSB_CFLAGS..fi
2080: 0a 7d 0a 0a 6f 75 74 64 69 72 3d 22 77 6f 72 6b  .}..outdir="work
2090: 64 69 72 2d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52  dir-${RANDOM}${R
20a0: 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24  ANDOM}${RANDOM}$
20b0: 7b 52 41 4e 44 4f 4d 7d 2e 6f 75 74 22 0a 72 6d  {RANDOM}.out".rm
20c0: 20 2d 72 66 20 22 24 7b 6f 75 74 64 69 72 7d 22   -rf "${outdir}"
20d0: 0a 6d 6b 64 69 72 20 22 24 7b 6f 75 74 64 69 72  .mkdir "${outdir
20e0: 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a 62 75  }" || exit 1..bu
20f0: 69 6c 64 50 43 53 43 4c 69 74 65 20 7c 7c 20 65  ildPCSCLite || e
2100: 78 69 74 20 31 0a 0a 62 75 69 6c 64 43 41 43 4b  xit 1..buildCACK
2110: 65 79 20 62 75 69 6c 64 20 7c 7c 20 65 78 69 74  ey build || exit
2120: 20 31 0a 0a 62 75 69 6c 64 4f 75 74 70 75 74 54   1..buildOutputT
2130: 79 70 65 3d 22 24 28 65 63 68 6f 20 27 69 6e 74  ype="$(echo 'int
2140: 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20   main(int argc, 
2150: 63 68 61 72 20 2a 2a 61 72 67 76 29 20 7b 20 72  char **argv) { r
2160: 65 74 75 72 6e 28 30 29 3b 20 7d 27 20 7c 20 22  eturn(0); }' | "
2170: 24 7b 43 43 3a 2d 63 63 7d 22 20 2d 78 20 63 20  ${CC:-cc}" -x c 
2180: 2d 20 2d 6f 20 2f 64 65 76 2f 73 74 64 6f 75 74  - -o /dev/stdout
2190: 20 7c 20 66 69 6c 65 20 2d 29 22 20 7c 7c 20 65   | file -)" || e
21a0: 78 69 74 20 31 0a 63 61 73 65 20 22 24 7b 62 75  xit 1.case "${bu
21b0: 69 6c 64 4f 75 74 70 75 74 54 79 70 65 7d 22 20  ildOutputType}" 
21c0: 69 6e 0a 09 2a 78 38 36 2d 36 34 2a 29 0a 09 09  in..*x86-64*)...
21d0: 6e 61 63 6c 54 6f 70 44 69 72 3d 27 6c 69 6e 75  naclTopDir='linu
21e0: 78 5f 78 38 36 5f 67 6c 69 62 63 27 0a 09 09 6e  x_x86_glibc'...n
21f0: 61 63 6c 50 6c 61 74 66 6f 72 6d 3d 27 78 38 36  aclPlatform='x86
2200: 5f 36 34 2d 6e 61 63 6c 27 0a 09 09 3b 3b 0a 09  _64-nacl'...;;..
2210: 2a 29 0a 09 09 65 63 68 6f 20 22 65 72 72 6f 72  *)...echo "error
2220: 3a 20 55 6e 72 65 63 6f 67 6e 69 7a 65 64 20 70  : Unrecognized p
2230: 6c 61 74 66 6f 72 6d 20 6f 75 74 70 75 74 3a 20  latform output: 
2240: 5c 22 24 7b 62 75 69 6c 64 4f 75 74 70 75 74 54  \"${buildOutputT
2250: 79 70 65 7d 5c 22 22 20 3e 26 32 0a 0a 09 09 65  ype}\"" >&2....e
2260: 78 69 74 20 31 0a 09 09 3b 3b 0a 65 73 61 63 0a  xit 1...;;.esac.
2270: 50 41 54 48 3d 22 24 7b 50 41 54 48 7d 3a 24 7b  PATH="${PATH}:${
2280: 4e 41 43 4c 5f 53 44 4b 5f 50 45 50 50 45 52 7d  NACL_SDK_PEPPER}
2290: 2f 74 6f 6f 6c 63 68 61 69 6e 2f 24 7b 6e 61 63  /toolchain/${nac
22a0: 6c 54 6f 70 44 69 72 7d 2f 62 69 6e 22 20 62 75  lTopDir}/bin" bu
22b0: 69 6c 64 43 41 43 4b 65 79 20 22 24 7b 6e 61 63  ildCACKey "${nac
22c0: 6c 50 6c 61 74 66 6f 72 6d 7d 22 20 2d 2d 68 6f  lPlatform}" --ho
22d0: 73 74 3d 22 24 7b 6e 61 63 6c 50 6c 61 74 66 6f  st="${naclPlatfo
22e0: 72 6d 7d 22 20 43 43 3d 24 7b 6e 61 63 6c 50 6c  rm}" CC=${naclPl
22f0: 61 74 66 6f 72 6d 7d 2d 67 63 63 20 4c 44 3d 24  atform}-gcc LD=$
2300: 7b 6e 61 63 6c 50 6c 61 74 66 6f 72 6d 7d 2d 6c  {naclPlatform}-l
2310: 64 20 4f 42 4a 43 4f 50 59 3d 24 7b 6e 61 63 6c  d OBJCOPY=${nacl
2320: 50 6c 61 74 66 6f 72 6d 7d 2d 6f 62 6a 63 6f 70  Platform}-objcop
2330: 79 20 53 54 52 49 50 3d 24 7b 6e 61 63 6c 50 6c  y STRIP=${naclPl
2340: 61 74 66 6f 72 6d 7d 2d 73 74 72 69 70 20 7c 7c  atform}-strip ||
2350: 20 65 78 69 74 20 31 0a 0a 63 6c 65 61 6e 75 70   exit 1..cleanup
2360: 0a 0a 65 78 69 74 20 30 0a                       ..exit 0.