Hex Artifact Content

Artifact 035611c6f506a30376dd5ae20d1738d52b31e187:


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 52 4f 4f 54 7d 22 20 5d 3b  CL_SDK_ROOT}" ];
0160: 20 74 68 65 6e 0a 09 65 63 68 6f 20 22 65 72 72   then..echo "err
0170: 6f 72 3a 20 50 6c 65 61 73 65 20 73 65 74 20 4e  or: Please set N
0180: 41 43 4c 5f 53 44 4b 5f 52 4f 4f 54 20 74 6f 20  ACL_SDK_ROOT to 
0190: 74 68 65 20 70 61 74 68 20 6f 66 20 74 68 65 20  the path of the 
01a0: 63 75 72 72 65 6e 74 20 4e 61 43 6c 20 53 44 4b  current NaCl SDK
01b0: 20 74 61 72 67 65 74 22 20 3e 26 32 0a 0a 09 65   target" >&2...e
01c0: 78 69 74 20 31 0a 66 69 0a 0a 69 66 20 5b 20 21  xit 1.fi..if [ !
01d0: 20 2d 64 20 22 24 7b 4e 41 43 4c 5f 53 44 4b 5f   -d "${NACL_SDK_
01e0: 52 4f 4f 54 7d 2f 74 6f 6f 6c 63 68 61 69 6e 22  ROOT}/toolchain"
01f0: 20 5d 3b 20 74 68 65 6e 0a 09 65 63 68 6f 20 22   ]; then..echo "
0200: 65 72 72 6f 72 3a 20 49 6e 76 61 6c 69 64 20 4e  error: Invalid N
0210: 41 43 4c 5f 53 44 4b 5f 52 4f 4f 54 2c 20 6e 6f  ACL_SDK_ROOT, no
0220: 74 20 66 6f 75 6e 64 3a 20 24 7b 4e 41 43 4c 5f  t found: ${NACL_
0230: 53 44 4b 5f 52 4f 4f 54 7d 2f 74 6f 6f 6c 63 68  SDK_ROOT}/toolch
0240: 61 69 6e 22 20 3e 26 32 0a 0a 09 65 78 69 74 20  ain" >&2...exit 
0250: 31 0a 66 69 0a 0a 23 20 53 65 74 75 70 20 63 72  1.fi..# Setup cr
0260: 6f 73 73 2d 63 6f 6d 70 69 6c 65 72 20 74 6f 6f  oss-compiler too
0270: 6c 63 68 61 69 6e 0a 23 23 20 53 65 74 20 70 61  lchain.## Set pa
0280: 74 68 20 74 6f 20 69 6e 63 6c 75 64 65 20 74 68  th to include th
0290: 65 20 74 6f 6f 6c 73 0a 50 41 54 48 3d 22 24 7b  e tools.PATH="${
02a0: 50 41 54 48 7d 3a 24 7b 4e 41 43 4c 5f 53 44 4b  PATH}:${NACL_SDK
02b0: 5f 52 4f 4f 54 7d 2f 74 6f 6f 6c 63 68 61 69 6e  _ROOT}/toolchain
02c0: 2f 6c 69 6e 75 78 5f 70 6e 61 63 6c 2f 62 69 6e  /linux_pnacl/bin
02d0: 22 0a 65 78 70 6f 72 74 20 50 41 54 48 0a 0a 23  ".export PATH..#
02e0: 23 20 53 65 74 20 76 61 72 69 61 62 6c 65 73 20  # Set variables 
02f0: 6e 65 65 64 65 64 20 62 79 20 70 72 6f 6a 65 63  needed by projec
0300: 74 73 0a 48 4f 53 54 5f 43 43 3d 22 24 28 77 68  ts.HOST_CC="$(wh
0310: 69 63 68 20 22 24 7b 43 43 3a 2d 63 63 7d 22 29  ich "${CC:-cc}")
0320: 22 0a 42 55 49 4c 44 5f 43 43 3d 22 24 7b 48 4f  ".BUILD_CC="${HO
0330: 53 54 5f 43 43 7d 22 0a 43 43 5f 46 4f 52 5f 42  ST_CC}".CC_FOR_B
0340: 55 49 4c 44 3d 22 24 7b 48 4f 53 54 5f 43 43 7d  UILD="${HOST_CC}
0350: 22 0a 41 52 3d 70 6e 61 63 6c 2d 61 72 0a 41 53  ".AR=pnacl-ar.AS
0360: 3d 70 6e 61 63 6c 2d 61 73 0a 4c 44 3d 70 6e 61  =pnacl-as.LD=pna
0370: 63 6c 2d 6c 64 0a 43 43 3d 70 6e 61 63 6c 2d 63  cl-ld.CC=pnacl-c
0380: 6c 61 6e 67 0a 43 58 58 3d 70 6e 61 63 6c 2d 63  lang.CXX=pnacl-c
0390: 6c 61 6e 67 2b 2b 0a 52 41 4e 4c 49 42 3d 70 6e  lang++.RANLIB=pn
03a0: 61 63 6c 2d 72 61 6e 6c 69 62 0a 53 54 52 49 50  acl-ranlib.STRIP
03b0: 3d 70 6e 61 63 6c 2d 73 74 72 69 70 0a 4f 42 4a  =pnacl-strip.OBJ
03c0: 43 4f 50 59 3d 70 6e 61 63 6c 2d 6f 62 6a 63 6f  COPY=pnacl-objco
03d0: 70 79 0a 65 78 70 6f 72 74 20 48 4f 53 54 5f 43  py.export HOST_C
03e0: 43 20 42 55 49 4c 44 5f 43 43 20 43 43 5f 46 4f  C BUILD_CC CC_FO
03f0: 52 5f 42 55 49 4c 44 20 41 52 20 41 53 20 4c 44  R_BUILD AR AS LD
0400: 20 43 43 20 43 58 58 20 52 41 4e 4c 49 42 20 53   CC CXX RANLIB S
0410: 54 52 49 50 20 4f 42 4a 43 4f 50 59 0a 0a 23 23  TRIP OBJCOPY..##
0420: 20 53 65 74 20 73 6f 6d 65 20 43 46 4c 41 47 53   Set some CFLAGS
0430: 20 74 68 61 74 20 74 68 65 20 63 6f 6d 70 69 6c   that the compil
0440: 65 72 20 66 61 69 6c 73 20 74 6f 20 69 6e 74 65  er fails to inte
0450: 72 6e 61 6c 6c 79 20 73 65 74 0a 43 46 4c 41 47  rnally set.CFLAG
0460: 53 3d 22 2d 49 24 7b 4e 41 43 4c 5f 53 44 4b 5f  S="-I${NACL_SDK_
0470: 52 4f 4f 54 7d 2f 69 6e 63 6c 75 64 65 22 0a 43  ROOT}/include".C
0480: 58 58 46 4c 41 47 53 3d 22 24 7b 43 46 4c 41 47  XXFLAGS="${CFLAG
0490: 53 7d 22 0a 43 50 50 46 4c 41 47 53 3d 22 24 7b  S}".CPPFLAGS="${
04a0: 43 46 4c 41 47 53 7d 22 0a 65 78 70 6f 72 74 20  CFLAGS}".export 
04b0: 43 46 4c 41 47 53 20 43 58 58 46 4c 41 47 53 20  CFLAGS CXXFLAGS 
04c0: 43 50 50 46 4c 41 47 53 0a 0a 23 20 46 75 6e 63  CPPFLAGS..# Func
04d0: 74 69 6f 6e 20 74 6f 20 64 6f 77 6e 6c 6f 61 64  tion to download
04e0: 20 66 69 6c 65 73 20 66 72 6f 6d 20 74 68 65 20   files from the 
04f0: 69 6e 74 65 72 77 65 62 73 20 61 6e 64 20 76 65  interwebs and ve
0500: 72 69 66 79 20 74 68 65 6d 0a 66 75 6e 63 74 69  rify them.functi
0510: 6f 6e 20 64 6f 77 6e 6c 6f 61 64 28 29 20 7b 0a  on download() {.
0520: 09 6c 6f 63 61 6c 20 75 72 6c 20 66 69 6c 65 20  .local url file 
0530: 68 61 73 68 0a 09 6c 6f 63 61 6c 20 68 61 73 68  hash..local hash
0540: 4d 65 74 68 6f 64 0a 09 6c 6f 63 61 6c 20 63 68  Method..local ch
0550: 6b 48 61 73 68 0a 0a 09 75 72 6c 3d 22 24 31 22  kHash...url="$1"
0560: 0a 09 66 69 6c 65 3d 22 24 32 22 0a 09 68 61 73  ..file="$2"..has
0570: 68 3d 22 24 33 22 0a 0a 09 69 66 20 5b 20 2d 66  h="$3"...if [ -f
0580: 20 22 24 7b 66 69 6c 65 7d 22 20 5d 3b 20 74 68   "${file}" ]; th
0590: 65 6e 0a 09 09 72 65 74 75 72 6e 20 30 0a 09 66  en...return 0..f
05a0: 69 0a 0a 09 6d 6b 64 69 72 20 2d 70 20 22 24 28  i...mkdir -p "$(
05b0: 64 69 72 6e 61 6d 65 20 22 24 7b 66 69 6c 65 7d  dirname "${file}
05c0: 22 29 22 0a 0a 09 68 61 73 68 4d 65 74 68 6f 64  ")"...hashMethod
05d0: 3d 27 73 68 61 32 35 36 27 0a 0a 09 72 6d 20 2d  ='sha256'...rm -
05e0: 66 20 22 24 7b 66 69 6c 65 7d 2e 6e 65 77 22 0a  f "${file}.new".
05f0: 09 77 67 65 74 20 2d 2d 68 65 61 64 65 72 20 22  .wget --header "
0600: 58 2d 43 61 63 68 65 2d 55 52 4c 3a 20 24 7b 75  X-Cache-URL: ${u
0610: 72 6c 7d 22 20 2d 4f 20 22 24 7b 66 69 6c 65 7d  rl}" -O "${file}
0620: 2e 6e 65 77 22 20 22 68 74 74 70 3a 2f 2f 68 61  .new" "http://ha
0630: 73 68 63 61 63 68 65 2e 72 6b 65 65 6e 65 2e 6f  shcache.rkeene.o
0640: 72 67 2f 24 7b 68 61 73 68 4d 65 74 68 6f 64 7d  rg/${hashMethod}
0650: 2f 24 7b 68 61 73 68 7d 22 20 7c 7c 20 5c 0a 09  /${hash}" || \..
0660: 09 77 67 65 74 20 2d 4f 20 22 24 7b 66 69 6c 65  .wget -O "${file
0670: 7d 2e 6e 65 77 22 20 22 24 7b 75 72 6c 7d 22 20  }.new" "${url}" 
0680: 7c 7c 20 5c 0a 09 09 72 65 74 75 72 6e 20 31 0a  || \...return 1.
0690: 0a 09 63 68 6b 48 61 73 68 3d 22 24 28 6f 70 65  ..chkHash="$(ope
06a0: 6e 73 73 6c 20 22 24 7b 68 61 73 68 4d 65 74 68  nssl "${hashMeth
06b0: 6f 64 7d 22 20 22 24 7b 66 69 6c 65 7d 2e 6e 65  od}" "${file}.ne
06c0: 77 22 20 7c 20 73 65 64 20 27 73 40 2e 2a 3d 20  w" | sed 's@.*= 
06d0: 2a 40 40 27 29 22 0a 0a 09 69 66 20 5b 20 22 24  *@@')"...if [ "$
06e0: 7b 63 68 6b 48 61 73 68 7d 22 20 21 3d 20 22 24  {chkHash}" != "$
06f0: 7b 68 61 73 68 7d 22 20 2d 61 20 22 24 7b 68 61  {hash}" -a "${ha
0700: 73 68 7d 22 20 21 3d 20 27 2d 27 20 5d 3b 20 74  sh}" != '-' ]; t
0710: 68 65 6e 0a 09 09 65 63 68 6f 20 22 65 72 72 6f  hen...echo "erro
0720: 72 3a 20 43 68 65 63 6b 73 75 6d 20 6d 69 73 6d  r: Checksum mism
0730: 61 74 63 68 3a 20 47 6f 74 3a 20 24 7b 63 68 6b  atch: Got: ${chk
0740: 48 61 73 68 7d 3b 20 45 78 70 65 63 74 65 64 3a  Hash}; Expected:
0750: 20 24 7b 68 61 73 68 7d 22 20 3e 26 32 0a 0a 09   ${hash}" >&2...
0760: 09 72 65 74 75 72 6e 20 31 0a 09 66 69 0a 0a 09  .return 1..fi...
0770: 6d 76 20 22 24 7b 66 69 6c 65 7d 2e 6e 65 77 22  mv "${file}.new"
0780: 20 22 24 7b 66 69 6c 65 7d 22 0a 0a 09 72 65 74   "${file}"...ret
0790: 75 72 6e 20 30 0a 7d 0a 0a 23 20 45 78 74 72 61  urn 0.}..# Extra
07a0: 63 74 20 61 6e 20 61 72 63 68 69 76 65 20 69 6e  ct an archive in
07b0: 74 6f 20 61 20 64 69 72 65 63 74 6f 72 79 2c 20  to a directory, 
07c0: 73 74 72 69 70 70 69 6e 67 20 74 68 65 20 74 6f  stripping the to
07d0: 70 2d 6c 65 76 65 6c 20 64 69 72 65 63 74 6f 72  p-level director
07e0: 79 0a 23 20 69 66 20 74 68 61 74 20 69 73 20 61  y.# if that is a
07f0: 6c 6c 20 74 68 61 74 20 69 74 20 63 6f 6e 74 61  ll that it conta
0800: 69 6e 73 0a 66 75 6e 63 74 69 6f 6e 20 65 78 74  ins.function ext
0810: 72 61 63 74 28 29 20 7b 0a 09 6c 6f 63 61 6c 20  ract() {..local 
0820: 66 69 6c 65 20 64 69 72 65 63 74 6f 72 79 0a 0a  file directory..
0830: 09 66 69 6c 65 3d 22 24 31 22 0a 09 64 69 72 65  .file="$1"..dire
0840: 63 74 6f 72 79 3d 22 24 32 22 0a 0a 09 69 66 20  ctory="$2"...if 
0850: 5b 20 21 20 2d 66 20 22 24 7b 66 69 6c 65 7d 22  [ ! -f "${file}"
0860: 20 5d 3b 20 74 68 65 6e 0a 09 09 65 63 68 6f 20   ]; then...echo 
0870: 22 65 72 72 6f 72 3a 20 55 6e 61 62 6c 65 20 74  "error: Unable t
0880: 6f 20 65 78 74 72 61 63 74 20 5c 22 24 7b 66 69  o extract \"${fi
0890: 6c 65 7d 5c 22 22 20 3e 26 32 0a 0a 09 09 72 65  le}\"" >&2....re
08a0: 74 75 72 6e 20 31 0a 09 66 69 0a 0a 09 72 6d 20  turn 1..fi...rm 
08b0: 2d 72 66 20 22 24 7b 64 69 72 65 63 74 6f 72 79  -rf "${directory
08c0: 7d 22 0a 0a 09 6d 6b 64 69 72 20 2d 70 20 22 24  }"...mkdir -p "$
08d0: 7b 64 69 72 65 63 74 6f 72 79 7d 22 20 7c 7c 20  {directory}" || 
08e0: 72 65 74 75 72 6e 20 31 0a 09 28 0a 09 09 63 64  return 1..(...cd
08f0: 20 22 24 7b 64 69 72 65 63 74 6f 72 79 7d 22 20   "${directory}" 
0900: 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09 63 61 73  || exit 1....cas
0910: 65 20 22 24 7b 66 69 6c 65 7d 22 20 69 6e 0a 09  e "${file}" in..
0920: 09 09 2a 2e 74 61 72 2e 62 7a 32 7c 2a 2e 62 7a  ..*.tar.bz2|*.bz
0930: 32 29 0a 09 09 09 09 62 7a 69 70 32 20 2d 64 63  2).....bzip2 -dc
0940: 20 7c 20 74 61 72 20 2d 78 66 20 2d 20 7c 7c 20   | tar -xf - || 
0950: 65 78 69 74 20 31 0a 09 09 09 09 3b 3b 0a 09 09  exit 1.....;;...
0960: 09 2a 2e 74 61 72 2e 67 7a 7c 2a 2e 74 67 7a 29  .*.tar.gz|*.tgz)
0970: 0a 09 09 09 09 67 7a 69 70 20 2d 64 63 20 7c 20  .....gzip -dc | 
0980: 74 61 72 20 2d 78 66 20 2d 20 7c 7c 20 65 78 69  tar -xf - || exi
0990: 74 20 31 0a 09 09 09 09 3b 3b 0a 09 09 09 2a 2e  t 1.....;;....*.
09a0: 74 61 72 2e 78 7a 7c 2a 2e 74 78 7a 29 0a 09 09  tar.xz|*.txz)...
09b0: 09 09 78 7a 20 2d 64 63 20 7c 20 74 61 72 20 2d  ..xz -dc | tar -
09c0: 78 66 20 2d 20 7c 7c 20 65 78 69 74 20 31 0a 09  xf - || exit 1..
09d0: 09 09 09 3b 3b 0a 09 09 09 2a 2e 7a 69 70 29 0a  ...;;....*.zip).
09e0: 09 09 09 09 63 61 74 20 3e 20 78 2e 7a 69 70 20  ....cat > x.zip 
09f0: 7c 7c 20 65 78 69 74 20 31 0a 09 09 09 09 75 6e  || exit 1.....un
0a00: 7a 69 70 20 78 2e 7a 69 70 20 7c 7c 20 65 78 69  zip x.zip || exi
0a10: 74 20 31 0a 09 09 09 09 72 6d 20 2d 66 20 78 2e  t 1.....rm -f x.
0a20: 7a 69 70 0a 09 09 09 09 3b 3b 0a 09 09 09 2a 29  zip.....;;....*)
0a30: 0a 09 09 09 09 65 63 68 6f 20 22 65 72 72 6f 72  .....echo "error
0a40: 3a 20 44 6f 6e 27 74 20 6b 6e 6f 77 20 77 68 61  : Don't know wha
0a50: 74 20 74 6f 20 64 6f 20 77 69 74 68 20 5c 22 24  t to do with \"$
0a60: 7b 66 69 6c 65 7d 5c 22 22 20 3e 26 32 0a 0a 09  {file}\"" >&2...
0a70: 09 09 09 65 78 69 74 20 31 0a 09 09 09 09 3b 3b  ...exit 1.....;;
0a80: 0a 09 09 65 73 61 63 0a 0a 09 09 69 66 20 5b 20  ...esac....if [ 
0a90: 2d 64 20 22 24 28 65 63 68 6f 20 2a 29 22 20 5d  -d "$(echo *)" ]
0aa0: 3b 20 74 68 65 6e 0a 09 09 09 6d 76 20 2a 2f 2a  ; then....mv */*
0ab0: 20 2e 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32 3e   . >/dev/null 2>
0ac0: 2f 64 65 76 2f 6e 75 6c 6c 0a 09 09 66 69 0a 09  /dev/null...fi..
0ad0: 29 20 3c 20 22 24 7b 66 69 6c 65 7d 22 20 7c 7c  ) < "${file}" ||
0ae0: 20 72 65 74 75 72 6e 20 31 0a 0a 09 72 65 74 75   return 1...retu
0af0: 72 6e 20 30 0a 7d 0a 0a 23 20 55 73 65 72 2d 6f  rn 0.}..# User-o
0b00: 76 65 72 72 69 64 61 62 6c 65 20 22 6d 61 6b 65  verridable "make
0b10: 22 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 6b 65 28  ".function make(
0b20: 29 20 7b 0a 09 22 24 7b 4d 41 4b 45 3a 2d 24 28  ) {.."${MAKE:-$(
0b30: 77 68 69 63 68 20 6d 61 6b 65 29 7d 22 20 22 24  which make)}" "$
0b40: 40 22 0a 7d 0a 0a 23 20 42 75 69 6c 64 20 22 7a  @".}..# Build "z
0b50: 6c 69 62 22 0a 66 75 6e 63 74 69 6f 6e 20 62 75  lib".function bu
0b60: 69 6c 64 5a 6c 69 62 28 29 20 7b 0a 09 6c 6f 63  ildZlib() {..loc
0b70: 61 6c 20 76 65 72 73 69 6f 6e 20 75 72 6c 20 70  al version url p
0b80: 6b 67 20 73 68 61 32 35 36 20 63 6f 6e 66 69 67  kg sha256 config
0b90: 75 72 65 5f 65 78 74 72 61 0a 09 6c 6f 63 61 6c  ure_extra..local
0ba0: 20 61 72 63 68 69 76 65 20 77 6f 72 6b 64 69 72   archive workdir
0bb0: 0a 0a 09 70 6b 67 3d 27 7a 6c 69 62 27 0a 09 76  ...pkg='zlib'..v
0bc0: 65 72 73 69 6f 6e 3d 27 31 2e 32 2e 38 27 0a 09  ersion='1.2.8'..
0bd0: 75 72 6c 3d 22 68 74 74 70 3a 2f 2f 7a 6c 69 62  url="http://zlib
0be0: 2e 6e 65 74 2f 7a 6c 69 62 2d 24 7b 76 65 72 73  .net/zlib-${vers
0bf0: 69 6f 6e 7d 2e 74 61 72 2e 67 7a 22 0a 09 73 68  ion}.tar.gz"..sh
0c00: 61 32 35 36 3d 27 33 36 36 35 38 63 62 37 36 38  a256='36658cb768
0c10: 61 35 34 63 31 64 34 64 65 63 34 33 63 33 31 31  a54c1d4dec43c311
0c20: 36 63 32 37 65 64 38 39 33 65 38 38 62 30 32 65  6c27ed893e88b02e
0c30: 63 66 63 62 34 34 66 32 31 36 36 66 39 63 30 62  cfcb44f2166f9c0b
0c40: 37 66 32 61 30 64 27 0a 0a 09 61 72 63 68 69 76  7f2a0d'...archiv
0c50: 65 3d 22 61 72 63 68 69 76 65 2f 24 7b 70 6b 67  e="archive/${pkg
0c60: 7d 2d 24 7b 76 65 72 73 69 6f 6e 7d 2e 74 61 72  }-${version}.tar
0c70: 2e 67 7a 22 0a 09 77 6f 72 6b 64 69 72 3d 22 77  .gz"..workdir="w
0c80: 6f 72 6b 64 69 72 2d 24 7b 52 41 4e 44 4f 4d 7d  orkdir-${RANDOM}
0c90: 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f  ${RANDOM}${RANDO
0ca0: 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 2e 62 75 69 6c  M}${RANDOM}.buil
0cb0: 64 22 0a 0a 09 64 6f 77 6e 6c 6f 61 64 20 22 24  d"...download "$
0cc0: 7b 75 72 6c 7d 22 20 22 24 7b 61 72 63 68 69 76  {url}" "${archiv
0cd0: 65 7d 22 20 22 24 7b 73 68 61 32 35 36 7d 22 20  e}" "${sha256}" 
0ce0: 7c 7c 20 72 65 74 75 72 6e 20 31 0a 09 65 78 74  || return 1..ext
0cf0: 72 61 63 74 20 22 24 7b 61 72 63 68 69 76 65 7d  ract "${archive}
0d00: 22 20 22 24 7b 77 6f 72 6b 64 69 72 7d 22 20 7c  " "${workdir}" |
0d10: 7c 20 72 65 74 75 72 6e 20 31 0a 0a 09 28 0a 09  | return 1...(..
0d20: 09 63 64 20 22 24 7b 77 6f 72 6b 64 69 72 7d 22  .cd "${workdir}"
0d30: 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09 2e 2f   || exit 1...../
0d40: 63 6f 6e 66 69 67 75 72 65 20 2d 2d 70 72 65 66  configure --pref
0d50: 69 78 3d 2f 20 2d 2d 6c 69 62 64 69 72 3d 2f 6c  ix=/ --libdir=/l
0d60: 69 62 20 2d 2d 73 74 61 74 69 63 20 7c 7c 20 65  ib --static || e
0d70: 78 69 74 20 31 0a 09 09 6d 61 6b 65 20 7c 7c 20  xit 1...make || 
0d80: 65 78 69 74 20 31 0a 09 09 6d 61 6b 65 20 44 45  exit 1...make DE
0d90: 53 54 44 49 52 3d 22 24 7b 69 6e 73 74 64 69 72  STDIR="${instdir
0da0: 7d 22 20 69 6e 73 74 61 6c 6c 20 7c 7c 20 65 78  }" install || ex
0db0: 69 74 20 31 0a 09 29 20 7c 7c 20 72 65 74 75 72  it 1..) || retur
0dc0: 6e 20 31 0a 0a 09 72 6d 20 2d 72 66 20 22 24 7b  n 1...rm -rf "${
0dd0: 77 6f 72 6b 64 69 72 7d 22 0a 0a 09 72 65 74 75  workdir}"...retu
0de0: 72 6e 20 30 0a 7d 0a 0a 23 20 42 75 69 6c 64 20  rn 0.}..# Build 
0df0: 74 68 65 20 6c 69 62 70 63 73 63 20 77 65 20 6e  the libpcsc we n
0e00: 65 65 64 0a 66 75 6e 63 74 69 6f 6e 20 62 75 69  eed.function bui
0e10: 6c 64 50 43 53 43 28 29 20 7b 0a 09 6c 6f 63 61  ldPCSC() {..loca
0e20: 6c 20 76 65 72 73 69 6f 6e 20 75 72 6c 20 70 6b  l version url pk
0e30: 67 20 73 68 61 32 35 36 20 63 6f 6e 66 69 67 75  g sha256 configu
0e40: 72 65 5f 65 78 74 72 61 0a 09 6c 6f 63 61 6c 20  re_extra..local 
0e50: 61 72 63 68 69 76 65 20 77 6f 72 6b 64 69 72 0a  archive workdir.
0e60: 0a 09 70 6b 67 3d 27 6e 61 63 6c 2d 6c 69 62 70  ..pkg='nacl-libp
0e70: 63 73 63 27 0a 09 76 65 72 73 69 6f 6e 3d 27 65  csc'..version='e
0e80: 31 66 63 35 61 35 65 39 38 34 36 33 66 65 38 35  1fc5a5e98463fe85
0e90: 63 34 38 66 37 39 31 65 33 34 39 65 62 62 35 63  c48f791e349ebb5c
0ea0: 66 35 64 63 34 32 61 27 0a 09 75 72 6c 3d 22 68  f5dc42a'..url="h
0eb0: 74 74 70 73 3a 2f 2f 63 68 69 73 65 6c 61 70 70  ttps://chiselapp
0ec0: 2e 63 6f 6d 2f 75 73 65 72 2f 72 6b 65 65 6e 65  .com/user/rkeene
0ed0: 2f 72 65 70 6f 73 69 74 6f 72 79 2f 6e 61 63 6c  /repository/nacl
0ee0: 2d 6c 69 62 70 63 73 63 2f 74 61 72 62 61 6c 6c  -libpcsc/tarball
0ef0: 2f 6e 61 63 6c 2d 6c 69 62 70 63 73 63 2d 24 7b  /nacl-libpcsc-${
0f00: 76 65 72 73 69 6f 6e 7d 2e 74 61 72 2e 67 7a 3f  version}.tar.gz?
0f10: 75 75 69 64 3d 24 7b 76 65 72 73 69 6f 6e 7d 22  uuid=${version}"
0f20: 0a 09 73 68 61 32 35 36 3d 27 2d 27 0a 0a 09 61  ..sha256='-'...a
0f30: 72 63 68 69 76 65 3d 22 61 72 63 68 69 76 65 2f  rchive="archive/
0f40: 24 7b 70 6b 67 7d 2d 24 7b 76 65 72 73 69 6f 6e  ${pkg}-${version
0f50: 7d 2e 74 61 72 2e 67 7a 22 0a 09 77 6f 72 6b 64  }.tar.gz"..workd
0f60: 69 72 3d 22 77 6f 72 6b 64 69 72 2d 24 7b 52 41  ir="workdir-${RA
0f70: 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 24 7b  NDOM}${RANDOM}${
0f80: 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d  RANDOM}${RANDOM}
0f90: 2e 62 75 69 6c 64 22 0a 0a 09 64 6f 77 6e 6c 6f  .build"...downlo
0fa0: 61 64 20 22 24 7b 75 72 6c 7d 22 20 22 24 7b 61  ad "${url}" "${a
0fb0: 72 63 68 69 76 65 7d 22 20 22 24 7b 73 68 61 32  rchive}" "${sha2
0fc0: 35 36 7d 22 20 7c 7c 20 72 65 74 75 72 6e 20 31  56}" || return 1
0fd0: 0a 09 65 78 74 72 61 63 74 20 22 24 7b 61 72 63  ..extract "${arc
0fe0: 68 69 76 65 7d 22 20 22 24 7b 77 6f 72 6b 64 69  hive}" "${workdi
0ff0: 72 7d 22 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a  r}" || return 1.
1000: 0a 09 28 0a 09 09 63 64 20 22 24 7b 77 6f 72 6b  ..(...cd "${work
1010: 64 69 72 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a  dir}" || exit 1.
1020: 0a 09 09 69 66 20 5b 20 21 20 2d 64 20 70 63 73  ...if [ ! -d pcs
1030: 63 2f 73 72 63 20 5d 3b 20 74 68 65 6e 0a 09 09  c/src ]; then...
1040: 09 2e 2f 62 75 69 6c 64 2f 61 73 73 65 6d 62 6c  ../build/assembl
1050: 65 2d 73 6f 75 72 63 65 2d 66 72 6f 6d 2d 67 6f  e-source-from-go
1060: 6f 67 6c 65 2e 73 68 20 7c 7c 20 65 78 69 74 20  ogle.sh || exit 
1070: 31 0a 09 09 66 69 0a 09 29 20 7c 7c 20 72 65 74  1...fi..) || ret
1080: 75 72 6e 20 31 0a 0a 09 6d 61 6b 65 20 2d 43 20  urn 1...make -C 
1090: 22 24 7b 77 6f 72 6b 64 69 72 7d 22 20 70 72 65  "${workdir}" pre
10a0: 66 69 78 3d 22 24 7b 69 6e 73 74 64 69 72 7d 22  fix="${instdir}"
10b0: 20 69 6e 73 74 61 6c 6c 20 7c 7c 20 72 65 74 75   install || retu
10c0: 72 6e 20 31 0a 0a 09 72 6d 20 2d 72 66 20 22 24  rn 1...rm -rf "$
10d0: 7b 77 6f 72 6b 64 69 72 7d 22 0a 0a 09 72 65 74  {workdir}"...ret
10e0: 75 72 6e 20 30 0a 7d 0a 0a 23 20 42 75 69 6c 64  urn 0.}..# Build
10f0: 20 6f 75 72 20 43 41 43 4b 65 79 0a 66 75 6e 63   our CACKey.func
1100: 74 69 6f 6e 20 62 75 69 6c 64 43 41 43 4b 65 79  tion buildCACKey
1110: 28 29 20 7b 0a 09 6c 6f 63 61 6c 20 70 6c 61 74  () {..local plat
1120: 66 6f 72 6d 0a 09 6c 6f 63 61 6c 20 66 69 6c 65  form..local file
1130: 20 63 6f 70 69 65 64 0a 09 6c 6f 63 61 6c 20 74   copied..local t
1140: 61 72 67 65 74 73 0a 0a 09 62 75 69 6c 64 5a 6c  argets...buildZl
1150: 69 62 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 09  ib || return 1..
1160: 62 75 69 6c 64 50 43 53 43 20 7c 7c 20 72 65 74  buildPCSC || ret
1170: 75 72 6e 20 31 0a 0a 09 28 0a 09 09 63 64 20 2e  urn 1...(...cd .
1180: 2e 2f 2e 2e 20 7c 7c 20 65 78 69 74 20 31 0a 0a  ./.. || exit 1..
1190: 09 09 6d 61 6b 65 20 64 69 73 74 63 6c 65 61 6e  ..make distclean
11a0: 0a 0a 09 09 2e 2f 63 6f 6e 66 69 67 75 72 65 20  ...../configure 
11b0: 2d 2d 68 6f 73 74 3d 6e 61 63 6c 20 2d 2d 77 69  --host=nacl --wi
11c0: 74 68 2d 70 63 73 63 2d 68 65 61 64 65 72 73 3d  th-pcsc-headers=
11d0: 22 24 7b 69 6e 73 74 64 69 72 7d 2f 69 6e 63 6c  "${instdir}/incl
11e0: 75 64 65 2f 50 43 53 43 22 20 2d 2d 77 69 74 68  ude/PCSC" --with
11f0: 2d 70 63 73 63 2d 6c 69 62 73 3d 22 2d 6c 70 63  -pcsc-libs="-lpc
1200: 73 63 22 20 63 61 63 6b 65 79 5f 63 76 5f 70 63  sc" cackey_cv_pc
1210: 73 63 5f 77 6f 72 6b 73 3d 6f 6b 61 79 20 2d 2d  sc_works=okay --
1220: 64 69 73 61 62 6c 65 2d 64 6f 64 2d 63 65 72 74  disable-dod-cert
1230: 73 20 43 46 4c 41 47 53 3d 27 2d 67 33 20 2d 67  s CFLAGS='-g3 -g
1240: 67 64 62 33 20 2d 57 61 6c 6c 27 20 7c 7c 20 65  gdb3 -Wall' || e
1250: 78 69 74 20 31 0a 09 09 6d 61 6b 65 20 7c 7c 20  xit 1...make || 
1260: 65 78 69 74 20 31 0a 09 29 20 7c 7c 20 72 65 74  exit 1..) || ret
1270: 75 72 6e 20 31 0a 0a 09 6d 6b 64 69 72 20 2d 70  urn 1...mkdir -p
1280: 20 22 24 7b 69 6e 73 74 64 69 72 7d 2f 6c 69 62   "${instdir}/lib
1290: 22 0a 09 63 70 20 2e 2e 2f 2e 2e 2f 6c 69 62 63  "..cp ../../libc
12a0: 61 63 6b 65 79 2e 61 20 2e 2e 2f 2e 2e 2f 6c 69  ackey.a ../../li
12b0: 62 63 61 63 6b 65 79 5f 67 2e 61 20 22 24 7b 69  bcackey_g.a "${i
12c0: 6e 73 74 64 69 72 7d 2f 6c 69 62 22 20 7c 7c 20  nstdir}/lib" || 
12d0: 72 65 74 75 72 6e 20 31 0a 0a 09 72 65 74 75 72  return 1...retur
12e0: 6e 20 30 0a 7d 0a 0a 69 6e 73 74 64 69 72 3d 22  n 0.}..instdir="
12f0: 77 6f 72 6b 64 69 72 2d 24 7b 52 41 4e 44 4f 4d  workdir-${RANDOM
1300: 7d 24 7b 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44  }${RANDOM}${RAND
1310: 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d 2e 69 6e 73  OM}${RANDOM}.ins
1320: 74 22 0a 72 6d 20 2d 72 66 20 22 24 7b 69 6e 73  t".rm -rf "${ins
1330: 74 64 69 72 7d 22 0a 6d 6b 64 69 72 20 22 24 7b  tdir}".mkdir "${
1340: 69 6e 73 74 64 69 72 7d 22 20 7c 7c 20 65 78 69  instdir}" || exi
1350: 74 20 31 0a 69 6e 73 74 64 69 72 3d 22 24 28 63  t 1.instdir="$(c
1360: 64 20 22 24 7b 69 6e 73 74 64 69 72 7d 22 20 26  d "${instdir}" &
1370: 26 20 70 77 64 29 22 20 7c 7c 20 65 78 69 74 20  & pwd)" || exit 
1380: 31 0a 0a 43 46 4c 41 47 53 3d 22 24 7b 43 46 4c  1..CFLAGS="${CFL
1390: 41 47 53 7d 20 2d 49 24 7b 69 6e 73 74 64 69 72  AGS} -I${instdir
13a0: 7d 2f 69 6e 63 6c 75 64 65 22 0a 43 50 50 46 4c  }/include".CPPFL
13b0: 41 47 53 3d 22 24 7b 43 50 50 46 4c 41 47 53 7d  AGS="${CPPFLAGS}
13c0: 20 2d 49 24 7b 69 6e 73 74 64 69 72 7d 2f 69 6e   -I${instdir}/in
13d0: 63 6c 75 64 65 22 0a 43 58 58 46 4c 41 47 53 3d  clude".CXXFLAGS=
13e0: 22 24 7b 43 58 58 46 4c 41 47 53 7d 20 2d 49 24  "${CXXFLAGS} -I$
13f0: 7b 69 6e 73 74 64 69 72 7d 2f 69 6e 63 6c 75 64  {instdir}/includ
1400: 65 22 0a 4c 44 46 4c 41 47 53 3d 22 24 7b 4c 44  e".LDFLAGS="${LD
1410: 46 4c 41 47 53 7d 20 2d 4c 24 7b 69 6e 73 74 64  FLAGS} -L${instd
1420: 69 72 7d 2f 6c 69 62 22 0a 65 78 70 6f 72 74 20  ir}/lib".export 
1430: 43 46 4c 41 47 53 20 43 50 50 46 4c 41 47 53 20  CFLAGS CPPFLAGS 
1440: 43 58 58 46 4c 41 47 53 20 4c 44 46 4c 41 47 53  CXXFLAGS LDFLAGS
1450: 0a 0a 62 75 69 6c 64 43 41 43 4b 65 79 20 7c 7c  ..buildCACKey ||
1460: 20 65 78 69 74 20 31 0a 0a 65 78 69 74 20 30 0a   exit 1..exit 0.