Hex Artifact Content

Artifact 86421397e13a46d75b1fd608166760d3b3902af4:


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 23 23 23 23 23 23 23 23 23  bash..##########
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0030: 23 23 23 23 23 0a 23 23 20 55 50 53 54 52 45 41  #####.## UPSTREA
0040: 4d 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23  M ##############
0050: 23 23 23 23 23 0a 23 23 23 23 23 23 23 23 23 23  #####.##########
0060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0070: 23 23 23 23 23 0a 66 75 73 65 5f 76 65 72 73 69  #####.fuse_versi
0080: 6f 6e 3d 27 32 2e 39 2e 37 27 0a 66 75 73 65 5f  on='2.9.7'.fuse_
0090: 75 72 6c 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74  url="https://git
00a0: 68 75 62 2e 63 6f 6d 2f 6c 69 62 66 75 73 65 2f  hub.com/libfuse/
00b0: 6c 69 62 66 75 73 65 2f 72 65 6c 65 61 73 65 73  libfuse/releases
00c0: 2f 64 6f 77 6e 6c 6f 61 64 2f 66 75 73 65 2d 24  /download/fuse-$
00d0: 7b 66 75 73 65 5f 76 65 72 73 69 6f 6e 7d 2f 66  {fuse_version}/f
00e0: 75 73 65 2d 24 7b 66 75 73 65 5f 76 65 72 73 69  use-${fuse_versi
00f0: 6f 6e 7d 2e 74 61 72 2e 67 7a 22 0a 66 75 73 65  on}.tar.gz".fuse
0100: 5f 73 68 61 32 35 36 3d 27 38 33 32 34 33 32 64  _sha256='832432d
0110: 31 61 64 34 66 38 33 33 63 32 30 65 31 33 62 35  1ad4f833c20e13b5
0120: 37 63 66 34 30 63 65 35 32 37 37 61 39 64 33 33  7cf40ce5277a9d33
0130: 65 34 38 33 32 30 35 66 63 36 33 63 37 38 31 31  e483205fc63c7811
0140: 31 62 33 33 35 38 38 37 34 27 0a 0a 6b 69 74 63  1b3358874'..kitc
0150: 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 3d 27  reator_version='
0160: 30 2e 31 30 2e 30 27 0a 6b 69 74 63 72 65 61 74  0.10.0'.kitcreat
0170: 6f 72 5f 75 72 6c 3d 22 68 74 74 70 3a 2f 2f 72  or_url="http://r
0180: 6b 65 65 6e 65 2e 6f 72 67 2f 64 65 76 65 6c 2f  keene.org/devel/
0190: 6b 69 74 63 72 65 61 74 6f 72 2d 24 7b 6b 69 74  kitcreator-${kit
01a0: 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 7d  creator_version}
01b0: 2e 74 61 72 2e 67 7a 22 0a 6b 69 74 63 72 65 61  .tar.gz".kitcrea
01c0: 74 6f 72 5f 73 68 61 32 35 36 3d 27 61 63 38 31  tor_sha256='ac81
01d0: 35 62 37 34 37 30 39 64 32 37 37 39 31 30 32 31  5b74709d27791021
01e0: 30 39 39 34 31 38 63 66 31 36 63 32 66 66 37 66  099418cf16c2ff7f
01f0: 35 30 39 36 64 33 66 62 37 62 31 37 63 35 30 65  5096d3fb7b17c50e
0200: 36 37 34 32 66 35 61 31 61 32 62 62 27 0a 0a 23  6742f5a1a2bb'..#
0210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23  ##############.#
0230: 23 20 55 53 45 52 20 53 55 50 50 4c 49 45 44 20  # USER SUPPLIED 
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23  ##############.#
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 5f  ##############._
0270: 73 65 74 75 70 5f 63 63 3d 22 24 7b 48 4f 4d 45  setup_cc="${HOME
0280: 7d 2f 72 6f 6f 74 2f 63 72 6f 73 73 2d 63 6f 6d  }/root/cross-com
0290: 70 69 6c 65 72 73 2f 73 65 74 75 70 2d 63 63 22  pilers/setup-cc"
02a0: 0a 5f 63 6f 6e 66 69 67 5f 73 75 62 3d 22 24 28  ._config_sub="$(
02b0: 6c 73 20 2d 31 20 2f 75 73 72 2f 73 68 61 72 65  ls -1 /usr/share
02c0: 2f 61 75 74 6f 6d 61 6b 65 2d 2a 2f 63 6f 6e 66  /automake-*/conf
02d0: 69 67 2e 73 75 62 20 32 3e 2f 64 65 76 2f 6e 75  ig.sub 2>/dev/nu
02e0: 6c 6c 20 7c 20 68 65 61 64 20 2d 6e 20 31 29 22  ll | head -n 1)"
02f0: 0a 61 70 70 66 73 5f 74 61 72 62 61 6c 6c 3d 22  .appfs_tarball="
0300: 24 31 22 0a 68 6f 73 74 5f 70 6c 61 74 66 6f 72  $1".host_platfor
0310: 6d 3d 22 24 32 22 0a 69 66 20 5b 20 2d 7a 20 22  m="$2".if [ -z "
0320: 24 7b 61 70 70 66 73 5f 74 61 72 62 61 6c 6c 7d  ${appfs_tarball}
0330: 22 20 5d 3b 20 74 68 65 6e 0a 09 65 63 68 6f 20  " ]; then..echo 
0340: 22 55 73 61 67 65 3a 20 6d 61 6b 65 2d 73 74 61  "Usage: make-sta
0350: 74 69 63 2d 61 72 63 68 69 76 65 20 3c 74 61 72  tic-archive <tar
0360: 62 61 6c 6c 3e 20 5b 3c 68 6f 73 74 5f 70 6c 61  ball> [<host_pla
0370: 74 66 6f 72 6d 3e 5d 22 20 3e 26 32 0a 0a 09 65  tform>]" >&2...e
0380: 78 69 74 20 31 0a 66 69 0a 0a 61 70 70 66 73 5f  xit 1.fi..appfs_
0390: 74 61 72 62 61 6c 6c 3d 22 24 28 72 65 61 64 6c  tarball="$(readl
03a0: 69 6e 6b 20 2d 66 20 22 24 7b 61 70 70 66 73 5f  ink -f "${appfs_
03b0: 74 61 72 62 61 6c 6c 7d 22 29 22 0a 69 66 20 5b  tarball}")".if [
03c0: 20 21 20 2d 65 20 22 24 7b 61 70 70 66 73 5f 74   ! -e "${appfs_t
03d0: 61 72 62 61 6c 6c 7d 22 20 5d 3b 20 74 68 65 6e  arball}" ]; then
03e0: 0a 09 65 63 68 6f 20 22 41 72 63 68 69 76 65 20  ..echo "Archive 
03f0: 28 24 7b 61 70 70 66 73 5f 74 61 72 62 61 6c 6c  (${appfs_tarball
0400: 7d 29 20 6e 6f 74 20 66 6f 75 6e 64 2e 22 20 3e  }) not found." >
0410: 26 32 0a 0a 09 65 78 69 74 20 31 0a 66 69 0a 0a  &2...exit 1.fi..
0420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
0440: 23 23 20 48 45 4c 50 45 52 53 20 23 23 23 23 23  ## HELPERS #####
0450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
0480: 66 75 6e 63 74 69 6f 6e 20 64 6f 77 6e 6c 6f 61  function downloa
0490: 64 28 29 20 7b 0a 09 6c 6f 63 61 6c 20 61 72 63  d() {..local arc
04a0: 68 69 76 65 20 75 72 6c 20 73 68 61 32 35 36 0a  hive url sha256.
04b0: 09 6c 6f 63 61 6c 20 74 6d 70 66 69 6c 65 20 74  .local tmpfile t
04c0: 6d 70 66 69 6c 65 5f 73 68 61 32 35 36 0a 0a 09  mpfile_sha256...
04d0: 61 72 63 68 69 76 65 3d 22 24 31 22 0a 09 75 72  archive="$1"..ur
04e0: 6c 3d 22 24 32 22 0a 09 73 68 61 32 35 36 3d 22  l="$2"..sha256="
04f0: 24 33 22 0a 0a 09 74 6d 70 66 69 6c 65 3d 22 24  $3"...tmpfile="$
0500: 7b 61 72 63 68 69 76 65 7d 2e 74 6d 70 22 0a 0a  {archive}.tmp"..
0510: 09 72 6d 20 2d 66 20 22 24 7b 74 6d 70 66 69 6c  .rm -f "${tmpfil
0520: 65 7d 22 0a 09 63 75 72 6c 20 2d 73 53 20 2d 4c  e}"..curl -sS -L
0530: 20 2d 6f 20 22 24 7b 74 6d 70 66 69 6c 65 7d 22   -o "${tmpfile}"
0540: 20 22 24 7b 75 72 6c 7d 22 20 7c 7c 20 72 65 74   "${url}" || ret
0550: 75 72 6e 20 31 0a 0a 09 74 6d 70 66 69 6c 65 5f  urn 1...tmpfile_
0560: 73 68 61 32 35 36 3d 22 24 28 6f 70 65 6e 73 73  sha256="$(openss
0570: 6c 20 64 67 73 74 20 2d 73 68 61 32 35 36 20 22  l dgst -sha256 "
0580: 24 7b 74 6d 70 66 69 6c 65 7d 22 20 7c 20 73 65  ${tmpfile}" | se
0590: 64 20 27 73 40 5e 2e 2a 3d 20 2a 40 40 27 29 22  d 's@^.*= *@@')"
05a0: 0a 09 69 66 20 5b 20 22 24 7b 74 6d 70 66 69 6c  ..if [ "${tmpfil
05b0: 65 5f 73 68 61 32 35 36 7d 22 20 21 3d 20 22 24  e_sha256}" != "$
05c0: 7b 73 68 61 32 35 36 7d 22 20 5d 3b 20 74 68 65  {sha256}" ]; the
05d0: 6e 0a 09 09 65 63 68 6f 20 22 53 48 41 2d 32 35  n...echo "SHA-25
05e0: 36 20 6d 69 73 6d 61 74 63 68 2e 20 20 47 6f 74  6 mismatch.  Got
05f0: 3a 20 24 7b 74 6d 70 66 69 6c 65 5f 73 68 61 32  : ${tmpfile_sha2
0600: 35 36 7d 3b 20 45 78 70 65 63 74 65 64 3a 20 24  56}; Expected: $
0610: 7b 73 68 61 32 35 36 7d 22 20 3e 26 32 0a 0a 09  {sha256}" >&2...
0620: 09 72 65 74 75 72 6e 20 31 0a 09 66 69 0a 0a 09  .return 1..fi...
0630: 72 6d 20 2d 66 20 22 24 7b 61 72 63 68 69 76 65  rm -f "${archive
0640: 7d 22 0a 09 6d 76 20 22 24 7b 74 6d 70 66 69 6c  }"..mv "${tmpfil
0650: 65 7d 22 20 22 24 7b 61 72 63 68 69 76 65 7d 22  e}" "${archive}"
0660: 20 7c 7c 20 72 65 74 75 72 6e 20 31 0a 0a 09 72   || return 1...r
0670: 65 74 75 72 6e 20 30 0a 7d 0a 0a 66 75 6e 63 74  eturn 0.}..funct
0680: 69 6f 6e 20 65 78 74 72 61 63 74 28 29 20 7b 0a  ion extract() {.
0690: 09 6c 6f 63 61 6c 20 61 72 63 68 69 76 65 20 64  .local archive d
06a0: 69 72 65 63 74 6f 72 79 0a 09 6c 6f 63 61 6c 20  irectory..local 
06b0: 6d 61 72 6b 65 72 0a 0a 09 6d 61 72 6b 65 72 3d  marker...marker=
06c0: 22 24 28 6f 70 65 6e 73 73 6c 20 72 61 6e 64 20  "$(openssl rand 
06d0: 32 30 20 2d 68 65 78 29 22 0a 0a 09 61 72 63 68  20 -hex)"...arch
06e0: 69 76 65 3d 22 24 31 22 0a 09 64 69 72 65 63 74  ive="$1"..direct
06f0: 6f 72 79 3d 22 24 32 22 0a 0a 09 6d 6b 64 69 72  ory="$2"...mkdir
0700: 20 2d 70 20 22 24 7b 64 69 72 65 63 74 6f 72 79   -p "${directory
0710: 7d 2f 2e 24 7b 6d 61 72 6b 65 72 7d 22 20 7c 7c  }/.${marker}" ||
0720: 20 72 65 74 75 72 6e 20 31 0a 09 63 61 74 20 22   return 1..cat "
0730: 24 7b 61 72 63 68 69 76 65 7d 22 20 7c 20 28 0a  ${archive}" | (.
0740: 09 09 63 64 20 22 24 7b 64 69 72 65 63 74 6f 72  ..cd "${director
0750: 79 7d 2f 2e 24 7b 6d 61 72 6b 65 72 7d 22 20 7c  y}/.${marker}" |
0760: 7c 20 65 78 69 74 20 31 0a 09 09 67 7a 69 70 20  | exit 1...gzip 
0770: 2d 64 63 20 7c 20 74 61 72 20 2d 78 66 20 2d 0a  -dc | tar -xf -.
0780: 0a 09 09 69 66 20 5b 20 2d 64 20 22 24 28 65 63  ...if [ -d "$(ec
0790: 68 6f 20 2a 29 22 20 5d 3b 20 74 68 65 6e 0a 09  ho *)" ]; then..
07a0: 09 09 6d 76 20 2a 20 2e 54 4d 50 0a 09 09 09 6d  ..mv * .TMP....m
07b0: 76 20 2e 54 4d 50 2f 2a 20 2e 0a 09 09 09 72 6d  v .TMP/* .....rm
07c0: 20 2d 72 66 20 2e 54 4d 50 0a 09 09 66 69 0a 0a   -rf .TMP...fi..
07d0: 09 09 66 69 6e 64 20 2e 20 2d 70 72 69 6e 74 30  ..find . -print0
07e0: 20 7c 20 63 70 69 6f 20 2d 30 20 2d 75 6d 70 20   | cpio -0 -ump 
07f0: 2e 2e 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09  .. || exit 1....
0800: 65 78 69 74 20 30 0a 09 29 20 7c 7c 20 72 65 74  exit 0..) || ret
0810: 75 72 6e 20 31 0a 0a 09 72 6d 20 2d 72 66 20 22  urn 1...rm -rf "
0820: 24 7b 64 69 72 65 63 74 6f 72 79 7d 2f 2e 24 7b  ${directory}/.${
0830: 6d 61 72 6b 65 72 7d 22 0a 0a 09 72 65 74 75 72  marker}"...retur
0840: 6e 20 30 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23  n 0.}..#########
0850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0860: 23 23 23 23 23 23 0a 23 23 20 4d 41 49 4e 20 23  ######.## MAIN #
0870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0880: 23 23 23 23 23 23 0a 23 23 23 23 23 23 23 23 23  ######.#########
0890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
08a0: 23 23 23 23 23 23 0a 0a 23 20 31 2e 20 43 72 65  ######..# 1. Cre
08b0: 61 74 65 20 61 20 77 6f 72 6b 73 70 61 63 65 0a  ate a workspace.
08c0: 77 6f 72 6b 64 69 72 3d 22 24 28 6d 6b 74 65 6d  workdir="$(mktem
08d0: 70 20 2d 64 29 22 20 7c 7c 20 65 78 69 74 20 31  p -d)" || exit 1
08e0: 0a 73 74 61 72 74 64 69 72 3d 22 24 28 70 77 64  .startdir="$(pwd
08f0: 29 22 20 7c 7c 20 65 78 69 74 20 31 0a 63 64 20  )" || exit 1.cd 
0900: 22 24 7b 77 6f 72 6b 64 69 72 7d 22 20 7c 7c 20  "${workdir}" || 
0910: 65 78 69 74 20 31 0a 0a 23 20 32 2e 20 43 6f 6e  exit 1..# 2. Con
0920: 66 69 67 75 72 65 20 63 72 6f 73 73 2d 63 6f 6d  figure cross-com
0930: 70 69 6c 69 6e 67 20 65 6e 76 69 72 6f 6e 6d 65  piling environme
0940: 6e 74 0a 23 23 20 32 2e 61 2e 20 53 65 74 20 63  nt.## 2.a. Set c
0950: 6f 6e 66 69 67 75 72 65 20 6f 70 74 69 6f 6e 73  onfigure options
0960: 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 6f 75 72   to point to our
0970: 20 66 61 6b 65 20 72 6f 6f 74 20 64 69 72 65 63   fake root direc
0980: 74 6f 72 79 0a 63 6f 6e 66 69 67 75 72 65 5f 65  tory.configure_e
0990: 78 74 72 61 3d 28 2d 2d 70 72 65 66 69 78 3d 22  xtra=(--prefix="
09a0: 24 7b 77 6f 72 6b 64 69 72 7d 2f 72 6f 6f 74 22  ${workdir}/root"
09b0: 20 2d 2d 6c 69 62 64 69 72 3d 22 24 7b 77 6f 72   --libdir="${wor
09c0: 6b 64 69 72 7d 2f 72 6f 6f 74 2f 6c 69 62 22 29  kdir}/root/lib")
09d0: 0a 0a 23 23 20 32 2e 62 2e 20 53 65 74 75 70 20  ..## 2.b. Setup 
09e0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 74 6f 20 6d  environment to m
09f0: 61 74 63 68 20 72 65 71 75 65 73 74 65 64 20 70  atch requested p
0a00: 6c 61 74 66 6f 72 6d 0a 69 66 20 5b 20 2d 6e 20  latform.if [ -n 
0a10: 22 24 7b 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d  "${host_platform
0a20: 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 65 76 61 6c  }" ]; then..eval
0a30: 20 24 28 22 24 7b 5f 73 65 74 75 70 5f 63 63 7d   $("${_setup_cc}
0a40: 22 20 22 24 7b 68 6f 73 74 5f 70 6c 61 74 66 6f  " "${host_platfo
0a50: 72 6d 7d 22 29 0a 09 75 6e 73 65 74 20 50 4b 47  rm}")..unset PKG
0a60: 5f 43 4f 4e 46 49 47 0a 0a 09 63 6f 6e 66 69 67  _CONFIG...config
0a70: 75 72 65 5f 65 78 74 72 61 5f 63 6f 6d 6d 6f 6e  ure_extra_common
0a80: 3d 28 22 24 7b 63 6f 6e 66 69 67 75 72 65 5f 65  =("${configure_e
0a90: 78 74 72 61 5f 63 6f 6d 6d 6f 6e 5b 40 5d 7d 22  xtra_common[@]}"
0aa0: 20 2d 2d 68 6f 73 74 3d 22 24 7b 68 6f 73 74 5f   --host="${host_
0ab0: 70 6c 61 74 66 6f 72 6d 7d 22 29 0a 66 69 0a 63  platform}").fi.c
0ac0: 6f 6e 66 69 67 75 72 65 5f 65 78 74 72 61 3d 28  onfigure_extra=(
0ad0: 22 24 7b 63 6f 6e 66 69 67 75 72 65 5f 65 78 74  "${configure_ext
0ae0: 72 61 5b 40 5d 7d 22 20 22 24 7b 63 6f 6e 66 69  ra[@]}" "${confi
0af0: 67 75 72 65 5f 65 78 74 72 61 5f 63 6f 6d 6d 6f  gure_extra_commo
0b00: 6e 5b 40 5d 7d 22 29 0a 0a 23 20 33 2e 20 43 6f  n[@]}")..# 3. Co
0b10: 6d 70 69 6c 65 20 46 55 53 45 0a 23 23 20 33 2e  mpile FUSE.## 3.
0b20: 61 2e 20 44 6f 77 6e 6c 6f 61 64 20 46 55 53 45  a. Download FUSE
0b30: 0a 64 6f 77 6e 6c 6f 61 64 20 66 75 73 65 2e 74  .download fuse.t
0b40: 61 72 2e 67 7a 20 22 24 7b 66 75 73 65 5f 75 72  ar.gz "${fuse_ur
0b50: 6c 7d 22 20 22 24 7b 66 75 73 65 5f 73 68 61 32  l}" "${fuse_sha2
0b60: 35 36 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a  56}" || exit 1..
0b70: 23 23 20 33 2e 62 2e 20 45 78 74 72 61 63 74 20  ## 3.b. Extract 
0b80: 46 55 53 45 0a 65 78 74 72 61 63 74 20 66 75 73  FUSE.extract fus
0b90: 65 2e 74 61 72 2e 67 7a 20 66 75 73 65 20 7c 7c  e.tar.gz fuse ||
0ba0: 20 65 78 69 74 20 31 0a 72 6d 20 2d 66 20 66 75   exit 1.rm -f fu
0bb0: 73 65 2e 74 61 72 2e 67 7a 0a 0a 23 23 20 33 2e  se.tar.gz..## 3.
0bc0: 63 2e 20 43 6f 6d 70 69 6c 65 20 46 55 53 45 0a  c. Compile FUSE.
0bd0: 28 0a 09 63 64 20 66 75 73 65 20 7c 7c 20 65 78  (..cd fuse || ex
0be0: 69 74 20 31 0a 0a 09 2e 2f 63 6f 6e 66 69 67 75  it 1..../configu
0bf0: 72 65 20 2d 2d 64 69 73 61 62 6c 65 2d 73 68 61  re --disable-sha
0c00: 72 65 64 20 2d 2d 65 6e 61 62 6c 65 2d 73 74 61  red --enable-sta
0c10: 74 69 63 20 22 24 7b 63 6f 6e 66 69 67 75 72 65  tic "${configure
0c20: 5f 65 78 74 72 61 5b 40 5d 7d 22 20 7c 7c 20 65  _extra[@]}" || e
0c30: 78 69 74 20 31 0a 09 6d 61 6b 65 20 2d 6a 35 20  xit 1..make -j5 
0c40: 7c 7c 20 65 78 69 74 20 31 0a 09 6d 61 6b 65 20  || exit 1..make 
0c50: 69 6e 73 74 61 6c 6c 20 4d 4f 55 4e 54 5f 46 55  install MOUNT_FU
0c60: 53 45 5f 50 41 54 48 3d 22 24 7b 77 6f 72 6b 64  SE_PATH="${workd
0c70: 69 72 7d 2f 72 6f 6f 74 2f 62 69 6e 22 20 49 4e  ir}/root/bin" IN
0c80: 49 54 5f 44 5f 50 41 54 48 3d 22 24 7b 77 6f 72  IT_D_PATH="${wor
0c90: 6b 64 69 72 7d 2f 72 6f 6f 74 2f 65 74 63 2f 69  kdir}/root/etc/i
0ca0: 6e 69 74 2e 64 22 20 55 44 45 56 5f 52 55 4c 45  nit.d" UDEV_RULE
0cb0: 53 5f 50 41 54 48 3d 22 24 7b 77 6f 72 6b 64 69  S_PATH="${workdi
0cc0: 72 7d 2f 72 6f 6f 74 2f 65 74 63 2f 75 64 65 76  r}/root/etc/udev
0cd0: 2f 72 75 6c 65 73 2e 64 22 20 7c 7c 20 65 78 69  /rules.d" || exi
0ce0: 74 20 31 0a 0a 09 65 78 69 74 20 30 0a 29 20 7c  t 1...exit 0.) |
0cf0: 7c 20 65 78 69 74 20 31 0a 72 6d 20 2d 72 66 20  | exit 1.rm -rf 
0d00: 66 75 73 65 0a 0a 23 20 34 2e 20 43 6f 6d 70 69  fuse..# 4. Compi
0d10: 6c 65 20 53 74 61 74 69 63 20 4b 69 74 44 4c 4c  le Static KitDLL
0d20: 0a 23 23 20 34 2e 61 2e 20 44 6f 77 6e 6c 6f 61  .## 4.a. Downloa
0d30: 64 20 4b 69 74 43 72 65 61 74 6f 72 0a 64 6f 77  d KitCreator.dow
0d40: 6e 6c 6f 61 64 20 6b 69 74 63 72 65 61 74 6f 72  nload kitcreator
0d50: 2e 74 61 72 2e 67 7a 20 22 24 7b 6b 69 74 63 72  .tar.gz "${kitcr
0d60: 65 61 74 6f 72 5f 75 72 6c 7d 22 20 22 24 7b 6b  eator_url}" "${k
0d70: 69 74 63 72 65 61 74 6f 72 5f 73 68 61 32 35 36  itcreator_sha256
0d80: 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a 23 23  }" || exit 1..##
0d90: 20 34 2e 62 2e 20 45 78 74 72 61 63 74 20 4b 69   4.b. Extract Ki
0da0: 74 43 72 65 61 74 6f 72 0a 65 78 74 72 61 63 74  tCreator.extract
0db0: 20 6b 69 74 63 72 65 61 74 6f 72 2e 74 61 72 2e   kitcreator.tar.
0dc0: 67 7a 20 6b 69 74 63 72 65 61 74 6f 72 20 7c 7c  gz kitcreator ||
0dd0: 20 65 78 69 74 20 31 0a 72 6d 20 2d 66 20 6b 69   exit 1.rm -f ki
0de0: 74 63 72 65 61 74 6f 72 2e 74 61 72 2e 67 7a 0a  tcreator.tar.gz.
0df0: 0a 23 23 20 34 2e 63 2e 20 50 61 74 63 68 20 4b  .## 4.c. Patch K
0e00: 69 74 43 72 65 61 74 6f 72 20 74 6f 20 62 75 69  itCreator to bui
0e10: 6c 64 20 61 20 63 6f 72 72 65 63 74 20 54 63 6c  ld a correct Tcl
0e20: 0a 23 23 23 20 58 58 58 3a 54 4f 44 4f 0a 0a 23  .### XXX:TODO..#
0e30: 23 20 34 2e 64 2e 20 43 6f 6d 70 69 6c 65 20 4b  # 4.d. Compile K
0e40: 69 74 43 72 65 61 74 6f 72 0a 28 0a 09 63 64 20  itCreator.(..cd 
0e50: 6b 69 74 63 72 65 61 74 6f 72 20 7c 7c 20 65 78  kitcreator || ex
0e60: 69 74 20 31 0a 0a 09 65 78 70 6f 72 74 20 4b 49  it 1...export KI
0e70: 54 43 52 45 41 54 4f 52 5f 50 4b 47 53 3d 27 6b  TCREATOR_PKGS='k
0e80: 69 74 64 6c 6c 27 0a 09 65 78 70 6f 72 74 20 4b  itdll'..export K
0e90: 49 54 43 52 45 41 54 4f 52 5f 53 54 41 54 49 43  ITCREATOR_STATIC
0ea0: 5f 4b 49 54 44 4c 4c 3d 27 31 27 0a 09 65 78 70  _KITDLL='1'..exp
0eb0: 6f 72 74 20 4b 43 5f 54 43 4c 5f 53 54 41 54 49  ort KC_TCL_STATI
0ec0: 43 50 4b 47 53 3d 27 31 27 0a 09 65 78 70 6f 72  CPKGS='1'..expor
0ed0: 74 20 4b 43 5f 54 43 4c 5f 43 46 4c 41 47 53 3d  t KC_TCL_CFLAGS=
0ee0: 27 2d 44 50 55 52 49 46 59 3d 31 27 0a 09 65 78  '-DPURIFY=1'..ex
0ef0: 70 6f 72 74 20 4b 43 5f 54 43 4c 5f 43 50 50 46  port KC_TCL_CPPF
0f00: 4c 41 47 53 3d 27 2d 44 50 55 52 49 46 59 3d 31  LAGS='-DPURIFY=1
0f10: 27 0a 0a 09 2e 2f 6b 69 74 63 72 65 61 74 6f 72  '..../kitcreator
0f20: 20 22 24 7b 63 6f 6e 66 69 67 75 72 65 5f 65 78   "${configure_ex
0f30: 74 72 61 5f 63 6f 6d 6d 6f 6e 5b 40 5d 7d 22 20  tra_common[@]}" 
0f40: 74 63 6c 5f 63 76 5f 73 74 72 74 6f 75 6c 5f 75  tcl_cv_strtoul_u
0f50: 6e 62 72 6f 6b 65 6e 3d 6f 6b 20 7c 7c 20 65 78  nbroken=ok || ex
0f60: 69 74 20 31 0a 29 20 7c 7c 20 65 78 69 74 20 31  it 1.) || exit 1
0f70: 0a 6c 69 62 74 63 6c 6b 69 74 5f 73 64 6b 5f 61  .libtclkit_sdk_a
0f80: 72 63 68 69 76 65 3d 22 24 28 65 63 68 6f 20 6b  rchive="$(echo k
0f90: 69 74 63 72 65 61 74 6f 72 2f 6c 69 62 74 63 6c  itcreator/libtcl
0fa0: 6b 69 74 2a 2e 74 61 72 2e 67 7a 29 22 0a 0a 23  kit*.tar.gz)"..#
0fb0: 23 20 34 2e 65 2e 20 45 78 74 72 61 63 74 20 53  # 4.e. Extract S
0fc0: 44 4b 0a 65 78 74 72 61 63 74 20 22 24 7b 6c 69  DK.extract "${li
0fd0: 62 74 63 6c 6b 69 74 5f 73 64 6b 5f 61 72 63 68  btclkit_sdk_arch
0fe0: 69 76 65 7d 22 20 72 6f 6f 74 20 7c 7c 20 65 78  ive}" root || ex
0ff0: 69 74 20 31 0a 72 6d 20 2d 72 66 20 6b 69 74 63  it 1.rm -rf kitc
1000: 72 65 61 74 6f 72 0a 0a 23 20 35 2e 20 43 6f 6d  reator..# 5. Com
1010: 70 69 6c 65 20 41 70 70 46 53 0a 23 23 20 35 2e  pile AppFS.## 5.
1020: 61 2e 20 45 78 74 72 61 63 74 20 41 70 70 46 53  a. Extract AppFS
1030: 0a 65 78 74 72 61 63 74 20 22 24 7b 61 70 70 66  .extract "${appf
1040: 73 5f 74 61 72 62 61 6c 6c 7d 22 20 61 70 70 66  s_tarball}" appf
1050: 73 20 7c 7c 20 65 78 69 74 20 31 0a 0a 23 23 20  s || exit 1..## 
1060: 35 2e 62 2e 20 50 61 74 63 68 20 41 70 70 46 53  5.b. Patch AppFS
1070: 20 28 74 65 6d 70 6f 72 61 72 79 29 0a 73 65 64   (temporary).sed
1080: 20 2d 69 20 27 73 2f 7b 54 43 4c 5f 4c 49 42 5f   -i 's/{TCL_LIB_
1090: 53 50 45 43 7d 2f 26 20 24 24 7b 54 43 4c 5f 4c  SPEC}/& $${TCL_L
10a0: 49 42 53 7d 2f 27 20 61 70 70 66 73 2f 4d 61 6b  IBS}/' appfs/Mak
10b0: 65 66 69 6c 65 0a 0a 23 23 20 35 2e 63 2e 20 43  efile..## 5.c. C
10c0: 6f 6d 70 69 6c 65 20 41 70 70 46 53 0a 28 0a 09  ompile AppFS.(..
10d0: 63 64 20 61 70 70 66 73 20 7c 7c 20 65 78 69 74  cd appfs || exit
10e0: 20 31 0a 0a 09 65 78 70 6f 72 74 20 50 4b 47 5f   1...export PKG_
10f0: 43 4f 4e 46 49 47 5f 50 41 54 48 3d 22 24 7b 77  CONFIG_PATH="${w
1100: 6f 72 6b 64 69 72 7d 2f 72 6f 6f 74 2f 6c 69 62  orkdir}/root/lib
1110: 2f 70 6b 67 63 6f 6e 66 69 67 3a 24 7b 50 4b 47  /pkgconfig:${PKG
1120: 5f 43 4f 4e 46 49 47 5f 50 41 54 48 3a 2d 2f 64  _CONFIG_PATH:-/d
1130: 65 76 2f 6e 75 6c 6c 2f 6e 75 6c 6c 7d 22 0a 0a  ev/null/null}"..
1140: 09 69 66 20 5b 20 2d 6e 20 22 24 7b 43 43 7d 22  .if [ -n "${CC}"
1150: 20 5d 3b 20 74 68 65 6e 0a 09 09 6d 61 6b 65 5f   ]; then...make_
1160: 65 78 74 72 61 3d 28 22 24 7b 6d 61 6b 65 5f 65  extra=("${make_e
1170: 78 74 72 61 5b 40 5d 7d 22 20 43 43 3d 22 24 7b  xtra[@]}" CC="${
1180: 43 43 7d 22 29 0a 09 66 69 0a 0a 09 69 66 20 5b  CC}")..fi...if [
1190: 20 2d 6e 20 22 24 7b 50 4b 47 5f 43 4f 4e 46 49   -n "${PKG_CONFI
11a0: 47 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 09 6d 61  G}" ]; then...ma
11b0: 6b 65 5f 65 78 74 72 61 3d 28 22 24 7b 6d 61 6b  ke_extra=("${mak
11c0: 65 5f 65 78 74 72 61 5b 40 5d 7d 22 20 50 4b 47  e_extra[@]}" PKG
11d0: 5f 43 4f 4e 46 49 47 3d 22 24 7b 50 4b 47 5f 43  _CONFIG="${PKG_C
11e0: 4f 4e 46 49 47 7d 22 29 0a 09 66 69 0a 0a 09 6d  ONFIG}")..fi...m
11f0: 61 6b 65 5f 65 78 74 72 61 3d 28 22 24 7b 6d 61  ake_extra=("${ma
1200: 6b 65 5f 65 78 74 72 61 5b 40 5d 7d 22 20 54 43  ke_extra[@]}" TC
1210: 4c 4b 49 54 5f 53 44 4b 5f 44 49 52 3d 22 24 7b  LKIT_SDK_DIR="${
1220: 77 6f 72 6b 64 69 72 7d 2f 72 6f 6f 74 22 20 54  workdir}/root" T
1230: 43 4c 5f 4c 44 46 4c 41 47 53 3d 27 27 20 4c 44  CL_LDFLAGS='' LD
1240: 46 4c 41 47 53 3d 27 2d 73 74 61 74 69 63 27 20  FLAGS='-static' 
1250: 50 52 45 46 49 58 3d 27 27 29 0a 0a 09 6d 61 6b  PREFIX='')...mak
1260: 65 20 22 24 7b 6d 61 6b 65 5f 65 78 74 72 61 5b  e "${make_extra[
1270: 40 5d 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 09  @]}" || exit 1..
1280: 6d 61 6b 65 20 69 6e 73 74 61 6c 6c 20 44 45 53  make install DES
1290: 54 44 49 52 3d 22 24 7b 77 6f 72 6b 64 69 72 7d  TDIR="${workdir}
12a0: 2f 6f 75 74 70 75 74 22 20 22 24 7b 6d 61 6b 65  /output" "${make
12b0: 5f 65 78 74 72 61 5b 40 5d 7d 22 20 7c 7c 20 65  _extra[@]}" || e
12c0: 78 69 74 20 31 0a 0a 09 6d 61 6b 65 20 64 69 73  xit 1...make dis
12d0: 74 63 6c 65 61 6e 20 7c 7c 20 65 78 69 74 20 31  tclean || exit 1
12e0: 0a 09 6d 61 6b 65 20 41 50 50 46 53 5f 44 45 42  ..make APPFS_DEB
12f0: 55 47 5f 42 55 49 4c 44 3d 31 20 22 24 7b 6d 61  UG_BUILD=1 "${ma
1300: 6b 65 5f 65 78 74 72 61 5b 40 5d 7d 22 20 7c 7c  ke_extra[@]}" ||
1310: 20 65 78 69 74 20 31 0a 09 63 70 20 61 70 70 66   exit 1..cp appf
1320: 73 64 20 22 24 7b 77 6f 72 6b 64 69 72 7d 2f 6f  sd "${workdir}/o
1330: 75 74 70 75 74 2f 73 62 69 6e 2f 61 70 70 66 73  utput/sbin/appfs
1340: 64 5f 67 22 20 7c 7c 20 65 78 69 74 20 31 0a 29  d_g" || exit 1.)
1350: 20 7c 7c 20 65 78 69 74 20 31 0a 0a 23 20 36 2e   || exit 1..# 6.
1360: 20 43 72 65 61 74 65 20 61 72 63 68 69 76 65 0a   Create archive.
1370: 23 23 20 36 2e 61 2e 20 44 65 74 65 72 6d 69 6e  ## 6.a. Determin
1380: 65 20 41 70 70 46 53 20 76 65 72 73 69 6f 6e 20  e AppFS version 
1390: 61 6e 64 20 63 6f 6d 70 69 6c 65 64 20 70 6c 61  and compiled pla
13a0: 74 66 6f 72 6d 20 74 61 72 67 65 74 0a 23 23 23  tform target.###
13b0: 20 56 65 72 73 69 6f 6e 0a 61 70 70 66 73 5f 76   Version.appfs_v
13c0: 65 72 73 69 6f 6e 3d 22 24 28 67 72 65 70 20 27  ersion="$(grep '
13d0: 5e 41 50 50 46 53 5f 56 45 52 53 49 4f 4e 2e 2a  ^APPFS_VERSION.*
13e0: 3d 27 20 61 70 70 66 73 2f 4d 61 6b 65 66 69 6c  =' appfs/Makefil
13f0: 65 20 7c 20 73 65 64 20 27 73 40 2e 2a 3d 20 2a  e | sed 's@.*= *
1400: 40 40 27 29 22 0a 0a 23 23 23 20 50 6c 61 74 66  @@')"..### Platf
1410: 6f 72 6d 0a 68 6f 73 74 5f 70 6c 61 74 66 6f 72  orm.host_platfor
1420: 6d 5f 73 69 6d 70 6c 65 3d 22 24 28 24 7b 43 43  m_simple="$(${CC
1430: 3a 2d 63 63 7d 20 2d 64 75 6d 70 6d 61 63 68 69  :-cc} -dumpmachi
1440: 6e 65 29 22 0a 0a 68 6f 73 74 5f 70 6c 61 74 66  ne)"..host_platf
1450: 6f 72 6d 5f 73 69 6d 70 6c 65 5f 72 65 73 6f 6c  orm_simple_resol
1460: 76 65 64 3d 22 24 28 22 24 7b 5f 63 6f 6e 66 69  ved="$("${_confi
1470: 67 5f 73 75 62 3a 2d 65 63 68 6f 7d 22 20 22 24  g_sub:-echo}" "$
1480: 7b 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d 5f 73  {host_platform_s
1490: 69 6d 70 6c 65 7d 22 20 32 3e 2f 64 65 76 2f 6e  imple}" 2>/dev/n
14a0: 75 6c 6c 29 22 0a 69 66 20 5b 20 2d 6e 20 22 24  ull)".if [ -n "$
14b0: 7b 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d 5f 73  {host_platform_s
14c0: 69 6d 70 6c 65 5f 72 65 73 6f 6c 76 65 64 7d 22  imple_resolved}"
14d0: 20 5d 3b 20 74 68 65 6e 0a 09 68 6f 73 74 5f 70   ]; then..host_p
14e0: 6c 61 74 66 6f 72 6d 5f 73 69 6d 70 6c 65 3d 22  latform_simple="
14f0: 24 7b 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d 5f  ${host_platform_
1500: 73 69 6d 70 6c 65 5f 72 65 73 6f 6c 76 65 64 7d  simple_resolved}
1510: 22 0a 66 69 0a 0a 63 61 73 65 20 22 24 7b 68 6f  ".fi..case "${ho
1520: 73 74 5f 70 6c 61 74 66 6f 72 6d 5f 73 69 6d 70  st_platform_simp
1530: 6c 65 7d 22 20 69 6e 0a 09 27 27 29 0a 09 09 68  le}" in..'')...h
1540: 6f 73 74 5f 70 6c 61 74 66 6f 72 6d 5f 73 69 6d  ost_platform_sim
1550: 70 6c 65 5f 6f 73 3d 22 75 6e 6b 6e 6f 77 6e 22  ple_os="unknown"
1560: 0a 09 09 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d  ...host_platform
1570: 5f 73 69 6d 70 6c 65 5f 63 70 75 3d 22 75 6e 6b  _simple_cpu="unk
1580: 6e 6f 77 6e 22 0a 09 09 3b 3b 0a 09 2a 29 0a 09  nown"...;;..*)..
1590: 09 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d 5f 73  .host_platform_s
15a0: 69 6d 70 6c 65 5f 6f 73 3d 22 24 28 65 63 68 6f  imple_os="$(echo
15b0: 20 22 24 7b 68 6f 73 74 5f 70 6c 61 74 66 6f 72   "${host_platfor
15c0: 6d 5f 73 69 6d 70 6c 65 7d 22 20 7c 20 63 75 74  m_simple}" | cut
15d0: 20 2d 66 20 33 20 2d 64 20 27 2d 27 29 22 0a 09   -f 3 -d '-')"..
15e0: 09 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d 5f 73  .host_platform_s
15f0: 69 6d 70 6c 65 5f 63 70 75 3d 22 24 28 65 63 68  imple_cpu="$(ech
1600: 6f 20 22 24 7b 68 6f 73 74 5f 70 6c 61 74 66 6f  o "${host_platfo
1610: 72 6d 5f 73 69 6d 70 6c 65 7d 22 20 7c 20 63 75  rm_simple}" | cu
1620: 74 20 2d 66 20 31 20 2d 64 20 27 2d 27 29 22 0a  t -f 1 -d '-')".
1630: 09 09 3b 3b 0a 65 73 61 63 0a 68 6f 73 74 5f 70  ..;;.esac.host_p
1640: 6c 61 74 66 6f 72 6d 5f 73 69 6d 70 6c 65 3d 22  latform_simple="
1650: 24 7b 68 6f 73 74 5f 70 6c 61 74 66 6f 72 6d 5f  ${host_platform_
1660: 73 69 6d 70 6c 65 5f 6f 73 7d 2d 24 7b 68 6f 73  simple_os}-${hos
1670: 74 5f 70 6c 61 74 66 6f 72 6d 5f 73 69 6d 70 6c  t_platform_simpl
1680: 65 5f 63 70 75 7d 22 0a 0a 23 23 20 36 2e 62 2e  e_cpu}"..## 6.b.
1690: 20 43 72 65 61 74 65 20 61 72 63 68 69 76 65 20   Create archive 
16a0: 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69  with the specifi
16b0: 65 64 20 6e 61 6d 65 0a 6f 75 74 70 75 74 5f 61  ed name.output_a
16c0: 72 63 68 69 76 65 3d 22 24 7b 77 6f 72 6b 64 69  rchive="${workdi
16d0: 72 7d 2f 61 70 70 66 73 2d 24 7b 61 70 70 66 73  r}/appfs-${appfs
16e0: 5f 76 65 72 73 69 6f 6e 7d 2d 24 7b 68 6f 73 74  _version}-${host
16f0: 5f 70 6c 61 74 66 6f 72 6d 5f 73 69 6d 70 6c 65  _platform_simple
1700: 7d 2e 74 61 72 2e 67 7a 22 0a 28 0a 09 63 64 20  }.tar.gz".(..cd 
1710: 22 24 7b 77 6f 72 6b 64 69 72 7d 2f 6f 75 74 70  "${workdir}/outp
1720: 75 74 22 20 7c 7c 20 65 78 69 74 20 31 0a 09 74  ut" || exit 1..t
1730: 61 72 20 2d 63 66 20 2d 20 2a 0a 29 20 7c 20 67  ar -cf - *.) | g
1740: 7a 69 70 20 2d 39 63 20 3e 20 22 24 7b 6f 75 74  zip -9c > "${out
1750: 70 75 74 5f 61 72 63 68 69 76 65 7d 22 0a 72 6d  put_archive}".rm
1760: 20 2d 72 66 20 6f 75 74 70 75 74 20 61 70 70 66   -rf output appf
1770: 73 20 72 6f 6f 74 0a 0a 23 23 20 36 2e 63 2e 20  s root..## 6.c. 
1780: 4d 6f 76 65 20 61 72 63 68 69 76 65 20 74 6f 20  Move archive to 
1790: 73 6f 6d 65 20 70 6c 61 63 65 20 73 61 66 65 0a  some place safe.
17a0: 6d 76 20 2d 74 20 22 24 7b 73 74 61 72 74 64 69  mv -t "${startdi
17b0: 72 7d 22 20 22 24 7b 6f 75 74 70 75 74 5f 61 72  r}" "${output_ar
17c0: 63 68 69 76 65 7d 22 20 7c 7c 20 65 78 69 74 20  chive}" || exit 
17d0: 31 0a 0a 23 23 20 36 2e 64 2e 20 43 6c 65 61 6e  1..## 6.d. Clean
17e0: 75 70 0a 63 64 20 2f 0a 72 6d 64 69 72 20 22 24  up.cd /.rmdir "$
17f0: 7b 77 6f 72 6b 64 69 72 7d 22 20 7c 7c 20 65 78  {workdir}" || ex
1800: 69 74 20 31 0a 0a 23 20 37 2e 20 44 65 63 6c 61  it 1..# 7. Decla
1810: 72 65 20 76 69 63 74 6f 72 79 0a 65 78 69 74 20  re victory.exit 
1820: 30 0a                                            0.