Hex Artifact Content

Artifact 5dbfcbacaa26ed34393b45bd138d75cd61d3714c:


0000: 3c 3f 0a 09 70 61 63 6b 61 67 65 20 72 65 71 75  <?..package requ
0010: 69 72 65 20 73 68 61 31 0a 0a 09 6c 6f 61 64 5f  ire sha1...load_
0020: 72 65 73 70 6f 6e 73 65 20 61 72 67 73 0a 0a 09  response args...
0030: 70 72 6f 63 20 6e 6f 72 6d 61 6c 69 7a 65 5f 70  proc normalize_p
0040: 6c 61 74 66 6f 72 6d 20 7b 70 6c 61 74 66 6f 72  latform {platfor
0050: 6d 20 70 6c 61 74 66 6f 72 6d 5f 6e 61 6d 65 73  m platform_names
0060: 7d 20 7b 0a 09 09 73 65 74 20 70 6c 61 74 66 6f  } {...set platfo
0070: 72 6d 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77  rm [string tolow
0080: 65 72 20 24 70 6c 61 74 66 6f 72 6d 5d 0a 09 09  er $platform]...
0090: 69 66 20 7b 24 70 6c 61 74 66 6f 72 6d 20 69 6e  if {$platform in
00a0: 20 24 70 6c 61 74 66 6f 72 6d 5f 6e 61 6d 65 73   $platform_names
00b0: 7d 20 7b 0a 09 09 09 72 65 74 75 72 6e 20 24 70  } {....return $p
00c0: 6c 61 74 66 6f 72 6d 0a 09 09 7d 0a 0a 09 09 73  latform...}....s
00d0: 65 74 20 70 6c 61 74 66 6f 72 6d 20 5b 72 65 67  et platform [reg
00e0: 73 75 62 20 7b 5b 2d 5d 78 38 36 5f 36 34 24 7d  sub {[-]x86_64$}
00f0: 20 24 70 6c 61 74 66 6f 72 6d 20 7b 2d 61 6d 64   $platform {-amd
0100: 36 34 7d 5d 0a 09 09 73 65 74 20 70 6c 61 74 66  64}]...set platf
0110: 6f 72 6d 20 5b 72 65 67 73 75 62 20 7b 5b 2d 5d  orm [regsub {[-]
0120: 73 75 6e 34 5b 6d 75 76 5d 24 7d 20 24 70 6c 61  sun4[muv]$} $pla
0130: 74 66 6f 72 6d 20 7b 2d 73 70 61 72 63 7d 5d 0a  tform {-sparc}].
0140: 09 09 69 66 20 7b 24 70 6c 61 74 66 6f 72 6d 20  ..if {$platform 
0150: 69 6e 20 24 70 6c 61 74 66 6f 72 6d 5f 6e 61 6d  in $platform_nam
0160: 65 73 7d 20 7b 0a 09 09 09 72 65 74 75 72 6e 20  es} {....return 
0170: 24 70 6c 61 74 66 6f 72 6d 0a 09 09 7d 0a 09 7d  $platform...}..}
0180: 0a 0a 09 70 72 6f 63 20 76 65 72 73 69 6f 6e 45  ...proc versionE
0190: 6e 63 6f 64 65 64 20 7b 76 65 72 73 69 6f 6e 53  ncoded {versionS
01a0: 74 72 69 6e 67 7d 20 7b 0a 09 09 73 65 74 20 6f  tring} {...set o
01b0: 75 74 70 75 74 20 30 0a 0a 09 09 69 66 20 7b 24  utput 0....if {$
01c0: 76 65 72 73 69 6f 6e 53 74 72 69 6e 67 20 65 71  versionString eq
01d0: 20 22 74 72 75 6e 6b 22 7d 20 7b 0a 09 09 09 72   "trunk"} {....r
01e0: 65 74 75 72 6e 20 5b 76 65 72 73 69 6f 6e 45 6e  eturn [versionEn
01f0: 63 6f 64 65 64 20 22 32 35 35 2e 32 35 35 2e 32  coded "255.255.2
0200: 35 35 22 5d 0a 09 09 7d 0a 0a 09 09 69 66 20 7b  55"]...}....if {
0210: 24 76 65 72 73 69 6f 6e 53 74 72 69 6e 67 20 65  $versionString e
0220: 71 20 22 63 6f 72 65 2d 38 2d 37 61 33 22 7d 20  q "core-8-7a3"} 
0230: 7b 0a 09 09 09 72 65 74 75 72 6e 20 5b 76 65 72  {....return [ver
0240: 73 69 6f 6e 45 6e 63 6f 64 65 64 20 22 38 2e 36  sionEncoded "8.6
0250: 2e 32 35 33 22 5d 0a 09 09 7d 0a 0a 09 09 66 6f  .253"]...}....fo
0260: 72 65 61 63 68 20 65 6c 65 6d 65 6e 74 20 5b 6c  reach element [l
0270: 72 61 6e 67 65 20 5b 73 70 6c 69 74 20 24 76 65  range [split $ve
0280: 72 73 69 6f 6e 53 74 72 69 6e 67 20 2e 5d 20 30  rsionString .] 0
0290: 20 32 5d 20 7b 0a 09 09 09 69 66 20 7b 21 5b 73   2] {....if {![s
02a0: 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72  tring is integer
02b0: 20 2d 73 74 72 69 63 74 20 24 65 6c 65 6d 65 6e   -strict $elemen
02c0: 74 5d 7d 20 7b 0a 09 09 09 09 72 65 74 75 72 6e  t]} {.....return
02d0: 20 22 5c 22 24 76 65 72 73 69 6f 6e 53 74 72 69   "\"$versionStri
02e0: 6e 67 5c 22 22 0a 09 09 09 7d 0a 0a 09 09 09 73  ng\""....}.....s
02f0: 65 74 20 6f 75 74 70 75 74 20 5b 65 78 70 72 20  et output [expr 
0300: 7b 28 24 6f 75 74 70 75 74 20 3c 3c 20 38 29 20  {($output << 8) 
0310: 7c 20 24 65 6c 65 6d 65 6e 74 7d 5d 0a 09 09 7d  | $element}]...}
0320: 0a 0a 09 09 72 65 74 75 72 6e 20 24 6f 75 74 70  ....return $outp
0330: 75 74 0a 09 7d 0a 0a 09 73 65 74 20 73 6f 75 72  ut..}...set sour
0340: 63 65 64 69 72 20 22 2f 77 65 62 2f 72 6b 65 65  cedir "/web/rkee
0350: 6e 65 2f 64 65 76 65 6c 2f 6b 69 74 63 72 65 61  ne/devel/kitcrea
0360: 74 6f 72 2f 61 6c 6c 22 0a 09 73 65 74 20 71 75  tor/all"..set qu
0370: 65 75 65 20 22 2f 68 6f 6d 65 2f 72 6b 65 65 6e  eue "/home/rkeen
0380: 65 2f 64 65 76 65 6c 2f 6b 69 74 63 72 65 61 74  e/devel/kitcreat
0390: 6f 72 2f 62 75 69 6c 64 2f 77 65 62 2f 71 75 65  or/build/web/que
03a0: 75 65 22 0a 09 73 65 74 20 73 65 63 72 65 74 66  ue"..set secretf
03b0: 69 6c 65 20 22 2f 68 6f 6d 65 2f 72 6b 65 65 6e  ile "/home/rkeen
03c0: 65 2f 65 74 63 2f 6b 69 74 63 72 65 61 74 6f 72  e/etc/kitcreator
03d0: 2d 77 65 62 2d 73 65 63 72 65 74 22 0a 0a 09 23  -web-secret"...#
03e0: 20 4b 69 74 43 72 65 61 74 6f 72 20 56 65 72 73   KitCreator Vers
03f0: 69 6f 6e 73 0a 09 66 6f 72 65 61 63 68 20 66 69  ions..foreach fi
0400: 6c 65 20 5b 67 6c 6f 62 20 2d 74 61 69 6c 73 20  le [glob -tails 
0410: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 72  -nocomplain -dir
0420: 65 63 74 6f 72 79 20 24 73 6f 75 72 63 65 64 69  ectory $sourcedi
0430: 72 20 22 6b 69 74 63 72 65 61 74 6f 72 2d 2a 2e  r "kitcreator-*.
0440: 74 61 72 2e 67 7a 22 5d 20 7b 0a 09 09 72 65 67  tar.gz"] {...reg
0450: 65 78 70 20 7b 5e 6b 69 74 63 72 65 61 74 6f 72  exp {^kitcreator
0460: 2d 28 2e 2a 29 2e 74 61 72 2e 67 7a 24 7d 20 24  -(.*).tar.gz$} $
0470: 66 69 6c 65 20 2d 3e 20 76 65 72 73 0a 09 09 73  file -> vers...s
0480: 65 74 20 6b 69 74 63 72 65 61 74 6f 72 5f 76 65  et kitcreator_ve
0490: 72 73 69 6f 6e 73 28 24 76 65 72 73 29 20 24 76  rsions($vers) $v
04a0: 65 72 73 0a 09 7d 0a 09 73 65 74 20 6b 69 74 63  ers..}..set kitc
04b0: 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 5f 73  reator_version_s
04c0: 65 6c 65 63 74 65 64 20 5b 6c 69 6e 64 65 78 20  elected [lindex 
04d0: 5b 6c 73 6f 72 74 20 2d 64 69 63 74 69 6f 6e 61  [lsort -dictiona
04e0: 72 79 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20  ry [array names 
04f0: 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69  kitcreator_versi
0500: 6f 6e 73 5d 5d 20 65 6e 64 5d 0a 0a 09 73 65 74  ons]] end]...set
0510: 20 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73   kitcreator_vers
0520: 69 6f 6e 73 28 74 72 75 6e 6b 29 20 22 46 6f 73  ions(trunk) "Fos
0530: 73 69 6c 20 54 72 75 6e 6b 20 54 69 70 22 0a 0a  sil Trunk Tip"..
0540: 09 23 20 54 63 6c 20 56 65 72 73 69 6f 6e 73 0a  .# Tcl Versions.
0550: 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e  .set tcl_version
0560: 73 28 38 2e 35 2e 31 35 29 20 38 2e 35 2e 31 35  s(8.5.15) 8.5.15
0570: 0a 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69 6f  ..set tcl_versio
0580: 6e 73 28 38 2e 35 2e 31 36 29 20 38 2e 35 2e 31  ns(8.5.16) 8.5.1
0590: 36 0a 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69  6..set tcl_versi
05a0: 6f 6e 73 28 38 2e 35 2e 31 37 29 20 38 2e 35 2e  ons(8.5.17) 8.5.
05b0: 31 37 0a 09 73 65 74 20 74 63 6c 5f 76 65 72 73  17..set tcl_vers
05c0: 69 6f 6e 73 28 38 2e 35 2e 31 38 29 20 38 2e 35  ions(8.5.18) 8.5
05d0: 2e 31 38 0a 09 73 65 74 20 74 63 6c 5f 76 65 72  .18..set tcl_ver
05e0: 73 69 6f 6e 73 28 38 2e 35 2e 31 39 29 20 38 2e  sions(8.5.19) 8.
05f0: 35 2e 31 39 0a 09 73 65 74 20 74 63 6c 5f 76 65  5.19..set tcl_ve
0600: 72 73 69 6f 6e 73 28 38 2e 36 2e 31 29 20 38 2e  rsions(8.6.1) 8.
0610: 36 2e 31 0a 09 73 65 74 20 74 63 6c 5f 76 65 72  6.1..set tcl_ver
0620: 73 69 6f 6e 73 28 38 2e 36 2e 32 29 20 38 2e 36  sions(8.6.2) 8.6
0630: 2e 32 0a 09 73 65 74 20 74 63 6c 5f 76 65 72 73  .2..set tcl_vers
0640: 69 6f 6e 73 28 38 2e 36 2e 33 29 20 38 2e 36 2e  ions(8.6.3) 8.6.
0650: 33 0a 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69  3..set tcl_versi
0660: 6f 6e 73 28 38 2e 36 2e 34 29 20 38 2e 36 2e 34  ons(8.6.4) 8.6.4
0670: 0a 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69 6f  ..set tcl_versio
0680: 6e 73 28 38 2e 36 2e 35 29 20 38 2e 36 2e 35 0a  ns(8.6.5) 8.6.5.
0690: 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e  .set tcl_version
06a0: 73 28 38 2e 36 2e 36 29 20 38 2e 36 2e 36 0a 09  s(8.6.6) 8.6.6..
06b0: 73 65 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e 73  set tcl_versions
06c0: 28 38 2e 36 2e 37 29 20 38 2e 36 2e 37 0a 09 73  (8.6.7) 8.6.7..s
06d0: 65 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e 73 28  et tcl_versions(
06e0: 38 2e 36 2e 38 29 20 38 2e 36 2e 38 0a 09 73 65  8.6.8) 8.6.8..se
06f0: 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e 73 28 38  t tcl_versions(8
0700: 2e 36 2e 39 29 20 38 2e 36 2e 39 0a 09 73 65 74  .6.9) 8.6.9..set
0710: 20 74 63 6c 5f 76 65 72 73 69 6f 6e 73 28 38 2e   tcl_versions(8.
0720: 36 2e 31 30 29 20 38 2e 36 2e 31 30 0a 09 73 65  6.10) 8.6.10..se
0730: 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e 5f 6c 69  t tcl_version_li
0740: 73 74 20 5b 6c 73 6f 72 74 20 2d 64 69 63 74 69  st [lsort -dicti
0750: 6f 6e 61 72 79 20 5b 61 72 72 61 79 20 6e 61 6d  onary [array nam
0760: 65 73 20 74 63 6c 5f 76 65 72 73 69 6f 6e 73 5d  es tcl_versions]
0770: 5d 0a 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69  ]..set tcl_versi
0780: 6f 6e 5f 73 65 6c 65 63 74 65 64 20 5b 6c 69 6e  on_selected [lin
0790: 64 65 78 20 24 74 63 6c 5f 76 65 72 73 69 6f 6e  dex $tcl_version
07a0: 5f 6c 69 73 74 20 65 6e 64 5d 0a 0a 09 73 65 74  _list end]...set
07b0: 20 74 63 6c 5f 76 65 72 73 69 6f 6e 73 28 66 6f   tcl_versions(fo
07c0: 73 73 69 6c 5f 74 72 75 6e 6b 29 20 22 46 6f 73  ssil_trunk) "Fos
07d0: 73 69 6c 20 54 72 75 6e 6b 20 54 69 70 22 0a 09  sil Trunk Tip"..
07e0: 73 65 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e 73  set tcl_versions
07f0: 28 66 6f 73 73 69 6c 5f 63 6f 72 65 2d 38 2d 37  (fossil_core-8-7
0800: 61 33 29 20 22 54 63 6c 20 38 2e 37 61 33 22 0a  a3) "Tcl 8.7a3".
0810: 09 73 65 74 20 74 63 6c 5f 76 65 72 73 69 6f 6e  .set tcl_version
0820: 5f 6c 69 73 74 20 5b 6c 73 6f 72 74 20 2d 64 69  _list [lsort -di
0830: 63 74 69 6f 6e 61 72 79 20 5b 61 72 72 61 79 20  ctionary [array 
0840: 6e 61 6d 65 73 20 74 63 6c 5f 76 65 72 73 69 6f  names tcl_versio
0850: 6e 73 5d 5d 0a 0a 09 23 20 50 6c 61 74 66 6f 72  ns]]...# Platfor
0860: 6d 73 0a 09 73 65 74 20 70 6c 61 74 66 6f 72 6d  ms..set platform
0870: 73 28 61 6e 64 72 6f 69 64 2d 61 72 6d 29 20 22  s(android-arm) "
0880: 41 6e 64 72 6f 69 64 2f 41 52 4d 22 0a 09 73 65  Android/ARM"..se
0890: 74 20 70 6c 61 74 66 6f 72 6d 73 28 66 72 65 65  t platforms(free
08a0: 62 73 64 2d 61 6d 64 36 34 29 20 22 46 72 65 65  bsd-amd64) "Free
08b0: 42 53 44 2f 61 6d 64 36 34 22 0a 09 73 65 74 20  BSD/amd64"..set 
08c0: 70 6c 61 74 66 6f 72 6d 73 28 68 70 75 78 2d 68  platforms(hpux-h
08d0: 70 70 61 36 34 29 20 22 48 50 2d 55 58 2f 50 41  ppa64) "HP-UX/PA
08e0: 2d 52 49 53 43 20 32 2e 30 22 0a 09 73 65 74 20  -RISC 2.0"..set 
08f0: 70 6c 61 74 66 6f 72 6d 73 28 61 69 78 2d 70 70  platforms(aix-pp
0900: 63 29 20 22 41 49 58 2f 50 4f 57 45 52 22 0a 09  c) "AIX/POWER"..
0910: 73 65 74 20 70 6c 61 74 66 6f 72 6d 73 28 6c 69  set platforms(li
0920: 6e 75 78 2d 61 6d 64 36 34 29 20 22 4c 69 6e 75  nux-amd64) "Linu
0930: 78 2f 61 6d 64 36 34 22 0a 09 73 65 74 20 70 6c  x/amd64"..set pl
0940: 61 74 66 6f 72 6d 73 28 6c 69 6e 75 78 2d 61 6d  atforms(linux-am
0950: 64 36 34 2d 73 74 61 74 69 63 29 20 22 4c 69 6e  d64-static) "Lin
0960: 75 78 2f 61 6d 64 36 34 20 28 73 74 61 74 69 63  ux/amd64 (static
0970: 29 22 0a 09 73 65 74 20 70 6c 61 74 66 6f 72 6d  )"..set platform
0980: 73 28 6c 69 6e 75 78 2d 61 72 6d 29 20 22 4c 69  s(linux-arm) "Li
0990: 6e 75 78 2f 41 52 4d 22 0a 09 73 65 74 20 70 6c  nux/ARM"..set pl
09a0: 61 74 66 6f 72 6d 73 28 6c 69 6e 75 78 2d 61 61  atforms(linux-aa
09b0: 72 63 68 36 34 29 20 22 4c 69 6e 75 78 2f 41 41  rch64) "Linux/AA
09c0: 72 63 68 36 34 22 0a 09 73 65 74 20 70 6c 61 74  rch64"..set plat
09d0: 66 6f 72 6d 73 28 6c 69 6e 75 78 2d 69 33 38 36  forms(linux-i386
09e0: 29 20 22 4c 69 6e 75 78 2f 69 33 38 36 22 0a 09  ) "Linux/i386"..
09f0: 73 65 74 20 70 6c 61 74 66 6f 72 6d 73 28 6c 69  set platforms(li
0a00: 6e 75 78 2d 69 33 38 36 2d 73 74 61 74 69 63 29  nux-i386-static)
0a10: 20 22 4c 69 6e 75 78 2f 69 33 38 36 20 28 73 74   "Linux/i386 (st
0a20: 61 74 69 63 29 22 0a 09 73 65 74 20 70 6c 61 74  atic)"..set plat
0a30: 66 6f 72 6d 73 28 6c 69 6e 75 78 2d 6d 69 70 73  forms(linux-mips
0a40: 65 6c 29 20 22 4c 69 6e 75 78 2f 4d 49 50 53 20  el) "Linux/MIPS 
0a50: 28 73 74 61 74 69 63 29 22 0a 09 73 65 74 20 70  (static)"..set p
0a60: 6c 61 74 66 6f 72 6d 73 28 6e 65 74 62 73 64 2d  latforms(netbsd-
0a70: 61 6d 64 36 34 29 20 22 4e 65 74 42 53 44 2f 61  amd64) "NetBSD/a
0a80: 6d 64 36 34 22 0a 09 73 65 74 20 70 6c 61 74 66  md64"..set platf
0a90: 6f 72 6d 73 28 6e 65 74 62 73 64 2d 69 33 38 36  orms(netbsd-i386
0aa0: 29 20 22 4e 65 74 42 53 44 2f 69 33 38 36 22 0a  ) "NetBSD/i386".
0ab0: 09 73 65 74 20 70 6c 61 74 66 6f 72 6d 73 28 73  .set platforms(s
0ac0: 6f 6c 61 72 69 73 2d 61 6d 64 36 34 29 20 22 53  olaris-amd64) "S
0ad0: 6f 6c 61 72 69 73 2f 61 6d 64 36 34 22 0a 09 73  olaris/amd64"..s
0ae0: 65 74 20 70 6c 61 74 66 6f 72 6d 73 28 73 6f 6c  et platforms(sol
0af0: 61 72 69 73 2d 69 33 38 36 29 20 22 53 6f 6c 61  aris-i386) "Sola
0b00: 72 69 73 2f 69 33 38 36 22 0a 09 73 65 74 20 70  ris/i386"..set p
0b10: 6c 61 74 66 6f 72 6d 73 28 73 6f 6c 61 72 69 73  latforms(solaris
0b20: 2d 73 70 61 72 63 29 20 22 53 6f 6c 61 72 69 73  -sparc) "Solaris
0b30: 2f 53 50 41 52 43 22 0a 09 73 65 74 20 70 6c 61  /SPARC"..set pla
0b40: 74 66 6f 72 6d 73 28 73 6f 6c 61 72 69 73 2d 73  tforms(solaris-s
0b50: 70 61 72 63 36 34 29 20 22 53 6f 6c 61 72 69 73  parc64) "Solaris
0b60: 2f 53 50 41 52 43 36 34 22 0a 09 73 65 74 20 70  /SPARC64"..set p
0b70: 6c 61 74 66 6f 72 6d 73 28 6d 61 63 6f 73 78 2d  latforms(macosx-
0b80: 69 33 38 36 29 20 22 4d 61 63 20 4f 53 20 58 2f  i386) "Mac OS X/
0b90: 69 33 38 36 22 0a 09 73 65 74 20 70 6c 61 74 66  i386"..set platf
0ba0: 6f 72 6d 73 28 6d 61 63 6f 73 78 2d 61 6d 64 36  orms(macosx-amd6
0bb0: 34 29 20 22 4d 61 63 20 4f 53 20 58 2f 61 6d 64  4) "Mac OS X/amd
0bc0: 36 34 22 0a 09 73 65 74 20 70 6c 61 74 66 6f 72  64"..set platfor
0bd0: 6d 73 28 6d 61 63 6f 73 78 2d 70 70 63 29 20 22  ms(macosx-ppc) "
0be0: 4d 61 63 20 4f 53 20 58 2f 70 70 63 22 0a 09 73  Mac OS X/ppc"..s
0bf0: 65 74 20 70 6c 61 74 66 6f 72 6d 73 28 6d 61 63  et platforms(mac
0c00: 6f 73 78 2d 70 70 63 36 34 29 20 22 4d 61 63 20  osx-ppc64) "Mac 
0c10: 4f 53 20 58 2f 70 70 63 36 34 22 0a 09 73 65 74  OS X/ppc64"..set
0c20: 20 70 6c 61 74 66 6f 72 6d 73 28 77 69 6e 33 32   platforms(win32
0c30: 29 20 22 57 69 6e 64 6f 77 73 2f 69 33 38 36 22  ) "Windows/i386"
0c40: 0a 09 73 65 74 20 70 6c 61 74 66 6f 72 6d 73 28  ..set platforms(
0c50: 77 69 6e 36 34 29 20 22 57 69 6e 64 6f 77 73 2f  win64) "Windows/
0c60: 61 6d 64 36 34 22 0a 0a 09 73 65 74 20 70 61 63  amd64"...set pac
0c70: 6b 61 67 65 73 28 74 6b 29 20 22 54 6b 22 0a 09  kages(tk) "Tk"..
0c80: 73 65 74 20 70 61 63 6b 61 67 65 73 28 6d 6b 34  set packages(mk4
0c90: 74 63 6c 29 20 22 4d 65 74 61 6b 69 74 22 0a 09  tcl) "Metakit"..
0ca0: 73 65 74 20 70 61 63 6b 61 67 65 73 28 74 63 63  set packages(tcc
0cb0: 34 74 63 6c 29 20 22 74 63 63 34 74 63 6c 22 0a  4tcl) "tcc4tcl".
0cc0: 09 73 65 74 20 70 61 63 6b 61 67 65 73 28 74 6c  .set packages(tl
0cd0: 73 29 20 54 4c 53 0a 09 73 65 74 20 70 61 63 6b  s) TLS..set pack
0ce0: 61 67 65 73 28 64 62 75 73 29 20 44 2d 42 55 53  ages(dbus) D-BUS
0cf0: 0a 09 73 65 74 20 70 61 63 6b 61 67 65 73 28 74  ..set packages(t
0d00: 63 6c 78 29 20 54 63 6c 58 0a 09 73 65 74 20 70  clx) TclX..set p
0d10: 61 63 6b 61 67 65 73 28 69 74 63 6c 29 20 7b 5b  ackages(itcl) {[
0d20: 69 6e 63 72 20 54 63 6c 5d 7d 0a 09 73 65 74 20  incr Tcl]}..set 
0d30: 70 61 63 6b 61 67 65 73 28 74 63 6c 6c 69 62 29  packages(tcllib)
0d40: 20 22 54 63 6c 6c 69 62 22 0a 09 73 65 74 20 70   "Tcllib"..set p
0d50: 61 63 6b 61 67 65 73 28 79 61 6a 6c 74 63 6c 29  ackages(yajltcl)
0d60: 20 22 59 41 4a 4c 2d 54 43 4c 22 0a 09 73 65 74   "YAJL-TCL"..set
0d70: 20 70 61 63 6b 61 67 65 73 28 75 64 70 29 20 22   packages(udp) "
0d80: 54 63 6c 55 44 50 22 0a 09 73 65 74 20 70 61 63  TclUDP"..set pac
0d90: 6b 61 67 65 73 28 6e 73 66 29 20 22 4e 65 78 74  kages(nsf) "Next
0da0: 20 53 63 72 69 70 74 69 6e 67 20 46 72 61 6d 65   Scripting Frame
0db0: 77 6f 72 6b 22 0a 09 73 65 74 20 70 61 63 6b 61  work"..set packa
0dc0: 67 65 73 28 74 64 6f 6d 29 20 22 74 44 4f 4d 22  ges(tdom) "tDOM"
0dd0: 0a 09 73 65 74 20 70 61 63 6b 61 67 65 73 28 74  ..set packages(t
0de0: 75 61 70 69 29 20 22 54 63 6c 20 55 4e 49 58 20  uapi) "Tcl UNIX 
0df0: 41 50 49 22 0a 09 73 65 74 20 70 61 63 6b 61 67  API"..set packag
0e00: 65 73 28 6c 6d 64 62 29 20 22 4c 4d 44 42 22 0a  es(lmdb) "LMDB".
0e10: 09 73 65 74 20 70 61 63 6b 61 67 65 73 28 74 63  .set packages(tc
0e20: 6c 63 75 72 6c 29 20 22 63 55 52 4c 22 0a 09 73  lcurl) "cURL"..s
0e30: 65 74 20 70 61 63 6b 61 67 65 73 28 64 75 6b 74  et packages(dukt
0e40: 61 70 65 29 20 22 44 75 6b 74 61 70 65 22 0a 09  ape) "Duktape"..
0e50: 73 65 74 20 70 61 63 6b 61 67 65 73 28 74 63 6c  set packages(tcl
0e60: 70 6b 63 73 31 31 29 20 22 54 63 6c 50 4b 43 53  pkcs11) "TclPKCS
0e70: 23 31 31 20 28 70 6b 69 3a 3a 70 6b 63 73 31 31  #11 (pki::pkcs11
0e80: 29 22 0a 09 73 65 74 20 70 61 63 6b 61 67 65 73  )"..set packages
0e90: 28 74 63 6c 6c 75 78 29 20 22 54 63 6c 4c 75 58  (tcllux) "TclLuX
0ea0: 20 28 54 63 6c 20 55 4e 49 58 20 55 74 69 6c 69   (Tcl UNIX Utili
0eb0: 74 69 65 73 29 22 0a 09 73 65 74 20 70 61 63 6b  ties)"..set pack
0ec0: 61 67 65 73 28 63 72 69 74 63 6c 29 20 22 63 72  ages(critcl) "cr
0ed0: 69 74 63 6c 22 0a 0a 09 73 65 74 20 6f 70 74 69  itcl"...set opti
0ee0: 6f 6e 73 5f 69 6e 66 6f 28 74 68 72 65 61 64 65  ons_info(threade
0ef0: 64 29 20 22 4b 69 74 3a 20 54 68 72 65 61 64 65  d) "Kit: Threade
0f00: 64 22 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73 5f  d"..set options_
0f10: 69 6e 66 6f 28 6b 69 74 64 6c 6c 29 20 22 4b 69  info(kitdll) "Ki
0f20: 74 3a 20 42 75 69 6c 64 20 4c 69 62 72 61 72 79  t: Build Library
0f30: 20 28 4b 69 74 44 4c 4c 29 22 0a 09 73 65 74 20   (KitDLL)"..set 
0f40: 6f 70 74 69 6f 6e 73 5f 69 6e 66 6f 28 64 65 62  options_info(deb
0f50: 75 67 29 20 22 4b 69 74 3a 20 44 65 62 75 67 67  ug) "Kit: Debugg
0f60: 69 6e 67 20 42 75 69 6c 64 22 0a 09 73 65 74 20  ing Build"..set 
0f70: 6f 70 74 69 6f 6e 73 5f 69 6e 66 6f 28 64 79 6e  options_info(dyn
0f80: 61 6d 69 63 74 6b 29 20 22 4b 69 74 3a 20 41 6c  amictk) "Kit: Al
0f90: 77 61 79 73 20 6c 69 6e 6b 20 54 6b 20 64 79 6e  ways link Tk dyn
0fa0: 61 6d 69 63 61 6c 6c 79 20 28 69 66 20 54 6b 20  amically (if Tk 
0fb0: 69 73 20 62 75 69 6c 74 29 22 0a 09 73 65 74 20  is built)"..set 
0fc0: 6f 70 74 69 6f 6e 73 5f 69 6e 66 6f 28 6d 69 6e  options_info(min
0fd0: 62 75 69 6c 64 29 20 22 4b 69 74 3a 20 5c 22 4d  build) "Kit: \"M
0fe0: 69 6e 69 6d 61 6c 5c 22 20 62 75 69 6c 64 20 28  inimal\" build (
0ff0: 72 65 6d 6f 76 65 20 65 78 74 72 61 20 70 61 63  remove extra pac
1000: 6b 61 67 65 73 20 73 68 69 70 70 65 64 20 61 73  kages shipped as
1010: 20 70 61 72 74 20 6f 66 20 54 63 6c 20 61 6e 64   part of Tcl and
1020: 20 72 65 64 75 63 65 20 65 6e 63 6f 64 69 6e 67   reduce encoding
1030: 73 29 22 0a 09 73 65 74 20 6f 70 74 69 6f 6e 73  s)"..set options
1040: 5f 69 6e 66 6f 28 73 74 61 74 69 63 6c 69 62 73  _info(staticlibs
1050: 73 6c 29 20 22 54 4c 53 3a 20 53 74 61 74 69 63  sl) "TLS: Static
1060: 61 6c 6c 79 20 6c 69 6e 6b 20 74 6f 20 4c 69 62  ally link to Lib
1070: 53 53 4c 22 0a 09 73 65 74 20 6f 70 74 69 6f 6e  SSL"..set option
1080: 73 5f 69 6e 66 6f 28 62 75 69 6c 64 6c 69 62 73  s_info(buildlibs
1090: 73 6c 29 20 22 54 4c 53 3a 20 42 75 69 6c 64 20  sl) "TLS: Build 
10a0: 4c 69 62 72 65 53 53 4c 20 66 6f 72 20 74 68 69  LibreSSL for thi
10b0: 73 20 70 6c 61 74 66 6f 72 6d 22 0a 09 73 65 74  s platform"..set
10c0: 20 6f 70 74 69 6f 6e 73 5f 69 6e 66 6f 28 73 74   options_info(st
10d0: 61 74 69 63 70 6b 67 73 29 20 22 4b 69 74 3a 20  aticpkgs) "Kit: 
10e0: 53 74 61 74 69 63 61 6c 6c 79 20 6c 69 6e 6b 20  Statically link 
10f0: 70 61 63 6b 61 67 65 73 20 69 6e 20 70 6b 67 73  packages in pkgs
1100: 20 64 69 72 65 63 74 6f 72 79 22 0a 09 73 65 74   directory"..set
1110: 20 6f 70 74 69 6f 6e 73 5f 69 6e 66 6f 28 74 63   options_info(tc
1120: 6c 75 74 66 6d 61 78 36 29 20 22 4b 69 74 3a 20  lutfmax6) "Kit: 
1130: 54 43 4c 5f 55 54 46 5f 4d 41 58 3d 36 20 28 69  TCL_UTF_MAX=6 (i
1140: 6e 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77  ncompatibility w
1150: 69 74 68 20 73 74 61 6e 64 61 72 64 20 54 63 6c  ith standard Tcl
1160: 29 22 0a 0a 09 73 65 74 20 64 69 73 61 62 6c 65  )"...set disable
1170: 20 7b 0a 09 09 70 6c 61 74 66 6f 72 6d 20 6c 69   {...platform li
1180: 6e 75 78 2d 6d 69 70 73 65 6c 20 7b 70 61 63 6b  nux-mipsel {pack
1190: 61 67 65 5f 74 6b 20 70 61 63 6b 61 67 65 5f 74  age_tk package_t
11a0: 63 63 34 74 63 6c 20 70 61 63 6b 61 67 65 5f 74  cc4tcl package_t
11b0: 63 6c 78 20 6b 69 74 64 6c 6c 7d 0a 09 09 70 6c  clx kitdll}...pl
11c0: 61 74 66 6f 72 6d 20 61 6e 64 72 6f 69 64 2d 61  atform android-a
11d0: 72 6d 20 7b 70 61 63 6b 61 67 65 5f 74 6b 20 70  rm {package_tk p
11e0: 61 63 6b 61 67 65 5f 74 63 6c 78 7d 0a 09 09 70  ackage_tclx}...p
11f0: 6c 61 74 66 6f 72 6d 20 66 72 65 65 62 73 64 2d  latform freebsd-
1200: 61 6d 64 36 34 20 7b 70 61 63 6b 61 67 65 5f 74  amd64 {package_t
1210: 75 61 70 69 7d 0a 09 09 70 6c 61 74 66 6f 72 6d  uapi}...platform
1220: 20 68 70 75 78 2d 68 70 70 61 36 34 20 7b 70 61   hpux-hppa64 {pa
1230: 63 6b 61 67 65 5f 74 75 61 70 69 7d 0a 09 09 70  ckage_tuapi}...p
1240: 6c 61 74 66 6f 72 6d 20 61 69 78 2d 70 70 63 20  latform aix-ppc 
1250: 7b 70 61 63 6b 61 67 65 5f 74 75 61 70 69 20 6b  {package_tuapi k
1260: 69 74 64 6c 6c 7d 0a 09 09 70 6c 61 74 66 6f 72  itdll}...platfor
1270: 6d 20 6e 65 74 62 73 64 2d 61 6d 64 36 34 20 7b  m netbsd-amd64 {
1280: 70 61 63 6b 61 67 65 5f 74 6b 20 70 61 63 6b 61  package_tk packa
1290: 67 65 5f 74 63 63 34 74 63 6c 20 70 61 63 6b 61  ge_tcc4tcl packa
12a0: 67 65 5f 74 63 6c 78 20 70 61 63 6b 61 67 65 5f  ge_tclx package_
12b0: 74 75 61 70 69 7d 0a 09 09 70 6c 61 74 66 6f 72  tuapi}...platfor
12c0: 6d 20 6e 65 74 62 73 64 2d 69 33 38 36 20 7b 70  m netbsd-i386 {p
12d0: 61 63 6b 61 67 65 5f 74 6b 20 70 61 63 6b 61 67  ackage_tk packag
12e0: 65 5f 74 63 63 34 74 63 6c 20 70 61 63 6b 61 67  e_tcc4tcl packag
12f0: 65 5f 74 63 6c 78 20 70 61 63 6b 61 67 65 5f 74  e_tclx package_t
1300: 75 61 70 69 7d 0a 09 09 70 6c 61 74 66 6f 72 6d  uapi}...platform
1310: 20 73 6f 6c 61 72 69 73 2d 73 70 61 72 63 20 7b   solaris-sparc {
1320: 70 61 63 6b 61 67 65 5f 74 63 63 34 74 63 6c 20  package_tcc4tcl 
1330: 70 61 63 6b 61 67 65 5f 74 63 6c 78 20 70 61 63  package_tclx pac
1340: 6b 61 67 65 5f 74 75 61 70 69 7d 0a 09 09 70 6c  kage_tuapi}...pl
1350: 61 74 66 6f 72 6d 20 73 6f 6c 61 72 69 73 2d 73  atform solaris-s
1360: 70 61 72 63 36 34 20 7b 70 61 63 6b 61 67 65 5f  parc64 {package_
1370: 74 63 63 34 74 63 6c 20 70 61 63 6b 61 67 65 5f  tcc4tcl package_
1380: 74 63 6c 78 20 70 61 63 6b 61 67 65 5f 74 75 61  tclx package_tua
1390: 70 69 7d 0a 09 09 70 6c 61 74 66 6f 72 6d 20 68  pi}...platform h
13a0: 70 75 78 2d 68 70 70 61 36 34 20 7b 70 61 63 6b  pux-hppa64 {pack
13b0: 61 67 65 5f 74 63 63 34 74 63 6c 20 70 61 63 6b  age_tcc4tcl pack
13c0: 61 67 65 5f 74 63 6c 78 20 70 61 63 6b 61 67 65  age_tclx package
13d0: 5f 74 75 61 70 69 7d 0a 09 09 70 6c 61 74 66 6f  _tuapi}...platfo
13e0: 72 6d 20 6c 69 6e 75 78 2d 61 72 6d 20 7b 70 61  rm linux-arm {pa
13f0: 63 6b 61 67 65 5f 74 6b 20 70 61 63 6b 61 67 65  ckage_tk package
1400: 5f 74 63 6c 78 7d 0a 09 09 70 6c 61 74 66 6f 72  _tclx}...platfor
1410: 6d 20 6c 69 6e 75 78 2d 61 61 72 63 68 36 34 20  m linux-aarch64 
1420: 7b 70 61 63 6b 61 67 65 5f 74 6b 20 70 61 63 6b  {package_tk pack
1430: 61 67 65 5f 74 63 6c 78 7d 0a 09 09 70 6c 61 74  age_tclx}...plat
1440: 66 6f 72 6d 20 6c 69 6e 75 78 2d 61 6d 64 36 34  form linux-amd64
1450: 2d 73 74 61 74 69 63 20 7b 70 61 63 6b 61 67 65  -static {package
1460: 5f 74 6b 20 70 61 63 6b 61 67 65 5f 64 62 75 73  _tk package_dbus
1470: 20 6b 69 74 64 6c 6c 7d 0a 09 09 70 6c 61 74 66   kitdll}...platf
1480: 6f 72 6d 20 6c 69 6e 75 78 2d 69 33 38 36 2d 73  orm linux-i386-s
1490: 74 61 74 69 63 20 7b 70 61 63 6b 61 67 65 5f 74  tatic {package_t
14a0: 6b 20 70 61 63 6b 61 67 65 5f 64 62 75 73 20 6b  k package_dbus k
14b0: 69 74 64 6c 6c 7d 0a 09 09 70 6c 61 74 66 6f 72  itdll}...platfor
14c0: 6d 20 6d 61 63 6f 73 78 2d 70 70 63 20 7b 70 61  m macosx-ppc {pa
14d0: 63 6b 61 67 65 5f 64 62 75 73 20 70 61 63 6b 61  ckage_dbus packa
14e0: 67 65 5f 74 63 63 34 74 63 6c 20 70 61 63 6b 61  ge_tcc4tcl packa
14f0: 67 65 5f 74 75 61 70 69 7d 0a 09 09 70 6c 61 74  ge_tuapi}...plat
1500: 66 6f 72 6d 20 6d 61 63 6f 73 78 2d 70 70 63 36  form macosx-ppc6
1510: 34 20 7b 70 61 63 6b 61 67 65 5f 64 62 75 73 20  4 {package_dbus 
1520: 70 61 63 6b 61 67 65 5f 74 63 63 34 74 63 6c 20  package_tcc4tcl 
1530: 70 61 63 6b 61 67 65 5f 74 75 61 70 69 7d 0a 09  package_tuapi}..
1540: 09 70 6c 61 74 66 6f 72 6d 20 6d 61 63 6f 73 78  .platform macosx
1550: 2d 69 33 38 36 20 7b 70 61 63 6b 61 67 65 5f 64  -i386 {package_d
1560: 62 75 73 20 70 61 63 6b 61 67 65 5f 74 75 61 70  bus package_tuap
1570: 69 7d 0a 09 09 70 6c 61 74 66 6f 72 6d 20 6d 61  i}...platform ma
1580: 63 6f 73 78 2d 61 6d 64 36 34 20 7b 70 61 63 6b  cosx-amd64 {pack
1590: 61 67 65 5f 64 62 75 73 20 70 61 63 6b 61 67 65  age_dbus package
15a0: 5f 74 75 61 70 69 7d 0a 09 09 70 6c 61 74 66 6f  _tuapi}...platfo
15b0: 72 6d 20 77 69 6e 33 32 20 7b 70 61 63 6b 61 67  rm win32 {packag
15c0: 65 5f 74 75 61 70 69 7d 0a 09 09 70 6c 61 74 66  e_tuapi}...platf
15d0: 6f 72 6d 20 77 69 6e 36 34 20 7b 70 61 63 6b 61  orm win64 {packa
15e0: 67 65 5f 74 75 61 70 69 7d 0a 09 09 6b 69 74 63  ge_tuapi}...kitc
15f0: 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20 3c  reator_version <
1600: 30 2e 38 2e 30 20 7b 70 61 63 6b 61 67 65 5f 64  0.8.0 {package_d
1610: 62 75 73 20 70 61 63 6b 61 67 65 5f 74 6c 73 20  bus package_tls 
1620: 73 74 61 74 69 63 6c 69 62 73 73 6c 20 62 75 69  staticlibssl bui
1630: 6c 64 6c 69 62 73 73 6c 7d 0a 09 09 6b 69 74 63  ldlibssl}...kitc
1640: 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20 3c  reator_version <
1650: 30 2e 39 2e 30 20 7b 70 61 63 6b 61 67 65 5f 74  0.9.0 {package_t
1660: 63 63 34 74 63 6c 7d 0a 09 09 6b 69 74 63 72 65  cc4tcl}...kitcre
1670: 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20 3c 30 2e  ator_version <0.
1680: 39 2e 32 20 7b 70 61 63 6b 61 67 65 5f 74 63 6c  9.2 {package_tcl
1690: 6c 69 62 20 70 61 63 6b 61 67 65 5f 74 63 6c 78  lib package_tclx
16a0: 20 70 61 63 6b 61 67 65 5f 75 64 70 20 70 61 63   package_udp pac
16b0: 6b 61 67 65 5f 79 61 6a 6c 74 63 6c 7d 0a 09 09  kage_yajltcl}...
16c0: 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69  kitcreator_versi
16d0: 6f 6e 20 3c 30 2e 39 2e 33 20 7b 70 61 63 6b 61  on <0.9.3 {packa
16e0: 67 65 5f 6e 73 66 7d 0a 09 09 6b 69 74 63 72 65  ge_nsf}...kitcre
16f0: 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20 3c 30 2e  ator_version <0.
1700: 31 30 2e 30 20 7b 70 61 63 6b 61 67 65 5f 74 64  10.0 {package_td
1710: 6f 6d 20 70 61 63 6b 61 67 65 5f 74 75 61 70 69  om package_tuapi
1720: 7d 0a 09 09 6b 69 74 63 72 65 61 74 6f 72 5f 76  }...kitcreator_v
1730: 65 72 73 69 6f 6e 20 3c 30 2e 31 31 2e 30 20 7b  ersion <0.11.0 {
1740: 70 61 63 6b 61 67 65 5f 6c 6d 64 62 7d 0a 09 09  package_lmdb}...
1750: 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69  kitcreator_versi
1760: 6f 6e 20 3c 30 2e 31 31 2e 31 20 7b 70 61 63 6b  on <0.11.1 {pack
1770: 61 67 65 5f 74 63 6c 63 75 72 6c 20 70 61 63 6b  age_tclcurl pack
1780: 61 67 65 5f 64 75 6b 74 61 70 65 7d 0a 09 09 6b  age_duktape}...k
1790: 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f  itcreator_versio
17a0: 6e 20 3c 30 2e 31 32 2e 30 20 7b 70 61 63 6b 61  n <0.12.0 {packa
17b0: 67 65 5f 74 63 6c 70 6b 63 73 31 31 20 70 61 63  ge_tclpkcs11 pac
17c0: 6b 61 67 65 5f 74 63 6c 6c 75 78 7d 0a 09 09 6b  kage_tcllux}...k
17d0: 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f  itcreator_versio
17e0: 6e 20 3c 74 72 75 6e 6b 20 7b 70 61 63 6b 61 67  n <trunk {packag
17f0: 65 5f 63 72 69 74 63 6c 7d 0a 09 7d 0a 0a 09 73  e_critcl}..}...s
1800: 65 74 20 73 70 65 63 69 66 69 63 20 7b 0a 09 09  et specific {...
1810: 70 6c 61 74 66 6f 72 6d 20 77 69 6e 33 32 20 66  platform win32 f
1820: 69 6c 65 20 69 63 6f 6e 20 7b 4b 69 74 20 49 63  ile icon {Kit Ic
1830: 6f 6e 7d 0a 09 09 70 6c 61 74 66 6f 72 6d 20 77  on}...platform w
1840: 69 6e 33 32 20 74 65 78 74 20 64 65 73 63 72 69  in32 text descri
1850: 70 74 69 6f 6e 20 7b 44 65 73 63 72 69 70 74 69  ption {Descripti
1860: 6f 6e 7d 0a 09 09 70 6c 61 74 66 6f 72 6d 20 77  on}...platform w
1870: 69 6e 36 34 20 66 69 6c 65 20 69 63 6f 6e 20 7b  in64 file icon {
1880: 4b 69 74 20 49 63 6f 6e 7d 0a 09 09 70 6c 61 74  Kit Icon}...plat
1890: 66 6f 72 6d 20 77 69 6e 36 34 20 74 65 78 74 20  form win64 text 
18a0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 44 65 73  description {Des
18b0: 63 72 69 70 74 69 6f 6e 7d 0a 09 7d 0a 0a 09 69  cription}..}...i
18c0: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  f {[info exists 
18d0: 61 72 67 73 28 64 69 63 74 29 5d 20 7c 7c 20 5b  args(dict)] || [
18e0: 69 6e 66 6f 20 65 78 69 73 74 73 20 61 72 67 73  info exists args
18f0: 28 6a 73 6f 6e 29 5d 7d 20 7b 0a 09 09 70 61 63  (json)]} {...pac
1900: 6b 61 67 65 20 72 65 71 75 69 72 65 20 6a 73 6f  kage require jso
1910: 6e 0a 09 09 70 61 63 6b 61 67 65 20 72 65 71 75  n...package requ
1920: 69 72 65 20 6a 73 6f 6e 3a 3a 77 72 69 74 65 0a  ire json::write.
1930: 09 7d 0a 0a 09 69 66 20 7b 5b 69 6e 66 6f 20 65  .}...if {[info e
1940: 78 69 73 74 73 20 61 72 67 73 28 6a 73 6f 6e 29  xists args(json)
1950: 5d 7d 20 7b 0a 09 09 73 65 74 20 61 72 67 73 28  ]} {...set args(
1960: 64 69 63 74 29 20 5b 3a 3a 6a 73 6f 6e 3a 3a 6a  dict) [::json::j
1970: 73 6f 6e 32 64 69 63 74 20 24 61 72 67 73 28 6a  son2dict $args(j
1980: 73 6f 6e 29 5d 0a 09 09 75 6e 73 65 74 20 61 72  son)]...unset ar
1990: 67 73 28 6a 73 6f 6e 29 0a 09 09 73 65 74 20 61  gs(json)...set a
19a0: 70 69 52 65 74 75 72 6e 46 6f 72 6d 61 74 20 6a  piReturnFormat j
19b0: 73 6f 6e 0a 09 7d 0a 0a 09 73 65 74 20 72 65 73  son..}...set res
19c0: 75 6c 74 49 73 41 50 49 20 66 61 6c 73 65 0a 09  ultIsAPI false..
19d0: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
19e0: 20 61 72 67 73 28 64 69 63 74 29 5d 7d 20 7b 0a   args(dict)]} {.
19f0: 09 09 68 65 61 64 65 72 73 20 73 65 74 20 22 41  ..headers set "A
1a00: 63 63 65 73 73 2d 43 6f 6e 74 72 6f 6c 2d 41 6c  ccess-Control-Al
1a10: 6c 6f 77 2d 4f 72 69 67 69 6e 22 20 22 2a 22 0a  low-Origin" "*".
1a20: 09 09 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69  ..if {![info exi
1a30: 73 74 73 20 61 70 69 52 65 74 75 72 6e 46 6f 72  sts apiReturnFor
1a40: 6d 61 74 5d 7d 20 7b 0a 09 09 09 73 65 74 20 61  mat]} {....set a
1a50: 70 69 52 65 74 75 72 6e 46 6f 72 6d 61 74 20 64  piReturnFormat d
1a60: 69 63 74 0a 09 09 7d 0a 0a 09 09 73 65 74 20 61  ict...}....set a
1a70: 70 69 4d 65 74 68 6f 64 20 62 75 69 6c 64 0a 09  piMethod build..
1a80: 09 63 61 74 63 68 20 7b 0a 09 09 09 73 65 74 20  .catch {....set 
1a90: 61 70 69 4d 65 74 68 6f 64 20 5b 64 69 63 74 20  apiMethod [dict 
1aa0: 67 65 74 20 24 61 72 67 73 28 64 69 63 74 29 20  get $args(dict) 
1ab0: 61 63 74 69 6f 6e 5d 0a 09 09 7d 0a 0a 09 09 73  action]...}....s
1ac0: 77 69 74 63 68 20 2d 65 78 61 63 74 20 2d 2d 20  witch -exact -- 
1ad0: 24 61 70 69 4d 65 74 68 6f 64 20 7b 0a 09 09 09  $apiMethod {....
1ae0: 62 75 69 6c 64 20 7b 0a 09 09 09 09 23 20 44 6f  build {.....# Do
1af0: 20 6e 6f 74 68 69 6e 67 2c 20 68 61 6e 64 6c 65   nothing, handle
1b00: 64 20 62 65 6c 6f 77 0a 09 09 09 7d 0a 09 09 09  d below....}....
1b10: 73 74 6f 72 61 67 65 73 20 7b 0a 09 09 09 09 73  storages {.....s
1b20: 65 74 20 61 70 69 52 65 73 75 6c 74 44 69 63 74  et apiResultDict
1b30: 20 7b 0a 09 09 09 09 09 6d 6b 34 20 7b 4d 65 74   {......mk4 {Met
1b40: 61 6b 69 74 7d 0a 09 09 09 09 09 7a 69 70 20 7b  akit}......zip {
1b50: 5a 69 70 7d 0a 09 09 09 09 09 63 76 66 73 20 7b  Zip}......cvfs {
1b60: 43 2d 56 46 53 7d 0a 09 09 09 09 09 61 75 74 6f  C-VFS}......auto
1b70: 20 7b 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20   {Automatically 
1b80: 44 65 74 65 72 6d 69 6e 65 7d 0a 09 09 09 09 7d  Determine}.....}
1b90: 0a 09 09 09 7d 0a 09 09 09 70 6c 61 74 66 6f 72  ....}....platfor
1ba0: 6d 73 20 7b 0a 09 09 09 09 73 65 74 20 61 70 69  ms {.....set api
1bb0: 52 65 73 75 6c 74 44 69 63 74 20 5b 61 72 72 61  ResultDict [arra
1bc0: 79 20 67 65 74 20 70 6c 61 74 66 6f 72 6d 73 5d  y get platforms]
1bd0: 0a 09 09 09 7d 0a 09 09 09 74 63 6c 5f 76 65 72  ....}....tcl_ver
1be0: 73 69 6f 6e 73 20 7b 0a 09 09 09 09 73 65 74 20  sions {.....set 
1bf0: 61 70 69 52 65 73 75 6c 74 44 69 63 74 20 5b 61  apiResultDict [a
1c00: 72 72 61 79 20 67 65 74 20 74 63 6c 5f 76 65 72  rray get tcl_ver
1c10: 73 69 6f 6e 73 5d 0a 09 09 09 09 64 69 63 74 20  sions].....dict 
1c20: 73 65 74 20 61 70 69 52 65 73 75 6c 74 44 69 63  set apiResultDic
1c30: 74 20 64 65 66 61 75 6c 74 20 24 74 63 6c 5f 76  t default $tcl_v
1c40: 65 72 73 69 6f 6e 5f 73 65 6c 65 63 74 65 64 0a  ersion_selected.
1c50: 09 09 09 7d 0a 09 09 09 6b 69 74 63 72 65 61 74  ...}....kitcreat
1c60: 6f 72 5f 76 65 72 73 69 6f 6e 73 20 7b 0a 09 09  or_versions {...
1c70: 09 09 73 65 74 20 61 70 69 52 65 73 75 6c 74 44  ..set apiResultD
1c80: 69 63 74 20 5b 61 72 72 61 79 20 67 65 74 20 6b  ict [array get k
1c90: 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f  itcreator_versio
1ca0: 6e 73 5d 0a 09 09 09 09 64 69 63 74 20 73 65 74  ns].....dict set
1cb0: 20 61 70 69 52 65 73 75 6c 74 44 69 63 74 20 64   apiResultDict d
1cc0: 65 66 61 75 6c 74 20 24 6b 69 74 63 72 65 61 74  efault $kitcreat
1cd0: 6f 72 5f 76 65 72 73 69 6f 6e 5f 73 65 6c 65 63  or_version_selec
1ce0: 74 65 64 0a 09 09 09 7d 0a 09 09 09 6f 70 74 69  ted....}....opti
1cf0: 6f 6e 73 20 7b 0a 09 09 09 09 73 65 74 20 61 70  ons {.....set ap
1d00: 69 52 65 73 75 6c 74 44 69 63 74 20 5b 61 72 72  iResultDict [arr
1d10: 61 79 20 67 65 74 20 6f 70 74 69 6f 6e 73 5f 69  ay get options_i
1d20: 6e 66 6f 5d 0a 09 09 09 7d 0a 09 09 09 70 61 63  nfo]....}....pac
1d30: 6b 61 67 65 73 20 7b 0a 09 09 09 09 73 65 74 20  kages {.....set 
1d40: 61 70 69 52 65 73 75 6c 74 44 69 63 74 20 5b 61  apiResultDict [a
1d50: 72 72 61 79 20 67 65 74 20 70 61 63 6b 61 67 65  rray get package
1d60: 73 5d 0a 09 09 09 7d 0a 09 09 09 68 65 6c 70 20  s]....}....help 
1d70: 7b 0a 09 09 09 09 73 65 74 20 61 70 69 52 65 73  {.....set apiRes
1d80: 75 6c 74 44 69 63 74 20 7b 0a 09 09 09 09 09 62  ultDict {......b
1d90: 75 69 6c 64 20 7b 42 75 69 6c 64 20 61 20 54 63  uild {Build a Tc
1da0: 6c 4b 69 74 2e 20 20 41 63 63 65 70 74 73 20 61  lKit.  Accepts a
1db0: 72 67 75 6d 65 6e 74 73 3a 20 70 6c 61 74 66 6f  rguments: platfo
1dc0: 72 6d 20 5b 6d 61 6e 64 61 74 6f 72 79 2c 20 73  rm [mandatory, s
1dd0: 74 72 69 6e 67 5d 2c 20 74 63 6c 5f 76 65 72 73  tring], tcl_vers
1de0: 69 6f 6e 20 5b 73 74 72 69 6e 67 5d 2c 20 6b 69  ion [string], ki
1df0: 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e  tcreator_version
1e00: 20 5b 73 74 72 69 6e 67 5d 2c 20 73 74 6f 72 61   [string], stora
1e10: 67 65 20 5b 73 74 72 69 6e 67 2c 20 6f 6e 65 20  ge [string, one 
1e20: 6f 66 20 6d 6b 34 2c 20 63 76 66 73 2c 20 7a 69  of mk4, cvfs, zi
1e30: 70 5d 2c 20 6f 70 74 69 6f 6e 73 20 5b 61 72 72  p], options [arr
1e40: 61 79 5d 2c 20 70 61 63 6b 61 67 65 73 20 5b 61  ay], packages [a
1e50: 72 72 61 79 5d 7d 0a 09 09 09 09 09 73 74 6f 72  rray]}......stor
1e60: 61 67 65 73 20 7b 47 65 74 20 61 20 6c 69 73 74  ages {Get a list
1e70: 20 6f 66 20 73 75 70 70 6f 72 74 65 64 20 73 74   of supported st
1e80: 6f 72 61 67 65 20 6d 65 63 68 61 6e 69 73 6d 73  orage mechanisms
1e90: 20 74 6f 20 75 73 65 20 61 73 20 74 68 65 20 22   to use as the "
1ea0: 73 74 6f 72 61 67 65 22 20 61 72 67 75 6d 65 6e  storage" argumen
1eb0: 74 20 74 6f 20 62 75 69 6c 64 7d 0a 09 09 09 09  t to build}.....
1ec0: 09 70 6c 61 74 66 6f 72 6d 73 20 7b 47 65 74 20  .platforms {Get 
1ed0: 61 20 6c 69 73 74 20 6f 66 20 70 6c 61 74 66 6f  a list of platfo
1ee0: 72 6d 73 20 74 6f 20 75 73 65 20 61 73 20 74 68  rms to use as th
1ef0: 65 20 22 70 6c 61 74 66 6f 72 6d 22 20 61 72 67  e "platform" arg
1f00: 75 6d 65 6e 74 20 74 6f 20 62 75 69 6c 64 7d 0a  ument to build}.
1f10: 09 09 09 09 09 74 63 6c 5f 76 65 72 73 69 6f 6e  .....tcl_version
1f20: 73 20 7b 47 65 74 20 61 20 6c 69 73 74 20 6f 66  s {Get a list of
1f30: 20 54 63 6c 20 76 65 72 73 69 6f 6e 73 20 61 6e   Tcl versions an
1f40: 64 20 74 68 65 69 72 20 64 65 73 63 72 69 70 74  d their descript
1f50: 69 6f 6e 73 20 74 6f 20 75 73 65 20 61 73 20 74  ions to use as t
1f60: 68 65 20 22 74 63 6c 5f 76 65 72 73 69 6f 6e 22  he "tcl_version"
1f70: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 62 75 69   argument to bui
1f80: 6c 64 7d 0a 09 09 09 09 09 6b 69 74 63 72 65 61  ld}......kitcrea
1f90: 74 6f 72 5f 76 65 72 73 69 6f 6e 73 20 7b 47 65  tor_versions {Ge
1fa0: 74 20 61 20 6c 69 73 74 20 6f 66 20 4b 69 74 43  t a list of KitC
1fb0: 72 65 61 74 6f 72 20 76 65 72 73 69 6f 6e 73 20  reator versions 
1fc0: 61 6e 64 20 74 68 65 69 72 20 64 65 73 63 72 69  and their descri
1fd0: 70 74 69 6f 6e 73 20 74 6f 20 75 73 65 20 61 73  ptions to use as
1fe0: 20 74 68 65 20 22 6b 69 74 63 72 65 61 74 6f 72   the "kitcreator
1ff0: 5f 76 65 72 73 69 6f 6e 22 20 61 72 67 75 6d 65  _version" argume
2000: 6e 74 20 74 6f 20 62 75 69 6c 64 7d 0a 09 09 09  nt to build}....
2010: 09 09 6f 70 74 69 6f 6e 73 20 7b 47 65 74 20 61  ..options {Get a
2020: 20 6c 69 73 74 20 6f 66 20 6f 70 74 69 6f 6e 73   list of options
2030: 20 61 6e 64 20 74 68 65 69 72 20 64 65 73 63 72   and their descr
2040: 69 70 74 69 6f 6e 73 7d 0a 09 09 09 09 09 70 61  iptions}......pa
2050: 63 6b 61 67 65 73 20 7b 47 65 74 20 61 20 6c 69  ckages {Get a li
2060: 73 74 20 6f 66 20 70 61 63 6b 61 67 65 73 20 61  st of packages a
2070: 6e 64 20 74 68 65 69 72 20 64 65 73 63 72 69 70  nd their descrip
2080: 74 69 6f 6e 73 7d 0a 09 09 09 09 09 65 78 61 6d  tions}......exam
2090: 70 6c 65 73 20 7b 41 20 66 65 77 20 65 78 61 6d  ples {A few exam
20a0: 70 6c 65 73 7d 0a 09 09 09 09 09 68 65 6c 70 20  ples}......help 
20b0: 7b 54 68 69 73 20 68 65 6c 70 7d 0a 09 09 09 09  {This help}.....
20c0: 7d 0a 09 09 09 7d 0a 09 09 09 65 78 61 6d 70 6c  }....}....exampl
20d0: 65 73 20 7b 0a 09 09 09 09 73 65 74 20 61 70 69  es {.....set api
20e0: 52 65 73 75 6c 74 44 69 63 74 20 7b 0a 09 09 09  ResultDict {....
20f0: 09 09 73 69 6d 70 6c 65 20 7b 63 75 72 6c 20 2d  ..simple {curl -
2100: 64 20 27 6a 73 6f 6e 3d 7b 22 61 63 74 69 6f 6e  d 'json={"action
2110: 22 3a 20 22 62 75 69 6c 64 22 2c 20 22 70 6c 61  ": "build", "pla
2120: 74 66 6f 72 6d 22 3a 20 22 6c 69 6e 75 78 2d 61  tform": "linux-a
2130: 6d 64 36 34 22 7d 27 20 68 74 74 70 3a 2f 2f 6b  md64"}' http://k
2140: 69 74 63 72 65 61 74 6f 72 2e 72 6b 65 65 6e 65  itcreator.rkeene
2150: 2e 6f 72 67 2f 6b 69 74 63 72 65 61 74 6f 72 7d  .org/kitcreator}
2160: 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 64  .....}....}....d
2170: 65 66 61 75 6c 74 20 7b 0a 09 09 09 09 73 65 74  efault {.....set
2180: 20 61 70 69 52 65 73 75 6c 74 44 69 63 74 20 5b   apiResultDict [
2190: 64 69 63 74 20 63 72 65 61 74 65 20 65 72 72 6f  dict create erro
21a0: 72 20 22 49 6e 76 61 6c 69 64 20 61 63 74 69 6f  r "Invalid actio
21b0: 6e 20 5c 22 24 61 70 69 4d 65 74 68 6f 64 5c 22  n \"$apiMethod\"
21c0: 22 5d 0a 09 09 09 7d 0a 09 09 7d 0a 0a 09 09 69  "]....}...}....i
21d0: 66 20 7b 24 61 70 69 4d 65 74 68 6f 64 20 65 71  f {$apiMethod eq
21e0: 20 22 62 75 69 6c 64 22 20 26 26 20 21 5b 64 69   "build" && ![di
21f0: 63 74 20 65 78 69 73 74 73 20 24 61 72 67 73 28  ct exists $args(
2200: 64 69 63 74 29 20 70 6c 61 74 66 6f 72 6d 5d 7d  dict) platform]}
2210: 20 7b 0a 09 09 09 73 65 74 20 61 70 69 4d 65 74   {....set apiMet
2220: 68 6f 64 20 65 72 72 6f 72 0a 09 09 09 73 65 74  hod error....set
2230: 20 61 70 69 52 65 73 75 6c 74 44 69 63 74 20 5b   apiResultDict [
2240: 64 69 63 74 20 63 72 65 61 74 65 20 65 72 72 6f  dict create erro
2250: 72 20 22 54 68 65 20 61 72 67 75 6d 65 6e 74 20  r "The argument 
2260: 5c 22 70 6c 61 74 66 6f 72 6d 5c 22 20 6d 75 73  \"platform\" mus
2270: 74 20 62 65 20 73 75 70 70 6c 69 65 64 20 77 68  t be supplied wh
2280: 65 6e 20 62 75 69 6c 64 69 6e 67 22 5d 0a 09 09  en building"]...
2290: 7d 0a 0a 09 09 69 66 20 7b 24 61 70 69 4d 65 74  }....if {$apiMet
22a0: 68 6f 64 20 6e 65 20 22 62 75 69 6c 64 22 7d 20  hod ne "build"} 
22b0: 7b 0a 09 09 09 69 66 20 7b 5b 64 69 63 74 20 65  {....if {[dict e
22c0: 78 69 73 74 73 20 24 61 70 69 52 65 73 75 6c 74  xists $apiResult
22d0: 44 69 63 74 20 65 72 72 6f 72 5d 7d 20 7b 0a 09  Dict error]} {..
22e0: 09 09 09 68 65 61 64 65 72 73 20 6e 75 6d 65 72  ...headers numer
22f0: 69 63 20 35 30 30 0a 09 09 09 7d 0a 0a 09 09 09  ic 500....}.....
2300: 73 77 69 74 63 68 20 2d 65 78 61 63 74 20 2d 2d  switch -exact --
2310: 20 24 61 70 69 52 65 74 75 72 6e 46 6f 72 6d 61   $apiReturnForma
2320: 74 20 7b 0a 09 09 09 09 22 6a 73 6f 6e 22 20 7b  t {....."json" {
2330: 0a 09 09 09 09 09 68 65 61 64 65 72 73 20 74 79  ......headers ty
2340: 70 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a  pe application/j
2350: 73 6f 6e 0a 0a 09 09 09 09 09 73 65 74 20 61 70  son.......set ap
2360: 69 52 65 73 75 6c 74 44 69 63 74 45 6e 63 6f 64  iResultDictEncod
2370: 65 64 20 5b 6c 69 73 74 5d 0a 09 09 09 09 09 66  ed [list]......f
2380: 6f 72 65 61 63 68 20 7b 6b 65 79 20 76 61 6c 75  oreach {key valu
2390: 65 7d 20 24 61 70 69 52 65 73 75 6c 74 44 69 63  e} $apiResultDic
23a0: 74 20 7b 0a 09 09 09 09 09 09 6c 61 70 70 65 6e  t {.......lappen
23b0: 64 20 61 70 69 52 65 73 75 6c 74 44 69 63 74 45  d apiResultDictE
23c0: 6e 63 6f 64 65 64 20 24 6b 65 79 20 5b 6a 73 6f  ncoded $key [jso
23d0: 6e 3a 3a 77 72 69 74 65 20 73 74 72 69 6e 67 20  n::write string 
23e0: 24 76 61 6c 75 65 5d 0a 09 09 09 09 09 7d 0a 09  $value]......}..
23f0: 09 09 09 09 73 65 74 20 61 70 69 52 65 73 75 6c  ....set apiResul
2400: 74 4a 53 4f 4e 20 5b 6a 73 6f 6e 3a 3a 77 72 69  tJSON [json::wri
2410: 74 65 20 6f 62 6a 65 63 74 20 7b 2a 7d 24 61 70  te object {*}$ap
2420: 69 52 65 73 75 6c 74 44 69 63 74 45 6e 63 6f 64  iResultDictEncod
2430: 65 64 5d 0a 09 09 09 09 09 70 75 74 73 20 24 61  ed]......puts $a
2440: 70 69 52 65 73 75 6c 74 4a 53 4f 4e 0a 09 09 09  piResultJSON....
2450: 09 7d 0a 09 09 09 09 22 64 69 63 74 22 20 7b 0a  .}....."dict" {.
2460: 09 09 09 09 09 68 65 61 64 65 72 73 20 74 79 70  .....headers typ
2470: 65 20 74 65 78 74 2f 70 6c 61 69 6e 0a 09 09 09  e text/plain....
2480: 09 09 0a 09 09 09 09 09 70 75 74 73 20 5b 64 69  ........puts [di
2490: 63 74 20 63 72 65 61 74 65 20 7b 2a 7d 24 61 70  ct create {*}$ap
24a0: 69 52 65 73 75 6c 74 44 69 63 74 5d 0a 09 09 09  iResultDict]....
24b0: 09 7d 0a 09 09 09 7d 0a 0a 09 09 09 72 69 76 65  .}....}.....rive
24c0: 74 5f 66 6c 75 73 68 0a 09 09 09 61 62 6f 72 74  t_flush....abort
24d0: 5f 70 61 67 65 0a 09 09 7d 0a 0a 09 09 73 65 74  _page...}....set
24e0: 20 72 65 73 75 6c 74 49 73 41 50 49 20 74 72 75   resultIsAPI tru
24f0: 65 0a 09 09 73 65 74 20 61 72 67 73 28 70 6c 61  e...set args(pla
2500: 74 66 6f 72 6d 29 20 5b 64 69 63 74 20 67 65 74  tform) [dict get
2510: 20 24 61 72 67 73 28 64 69 63 74 29 20 70 6c 61   $args(dict) pla
2520: 74 66 6f 72 6d 5d 0a 09 09 73 65 74 20 61 72 67  tform]...set arg
2530: 73 28 74 63 6c 5f 76 65 72 73 69 6f 6e 29 20 24  s(tcl_version) $
2540: 74 63 6c 5f 76 65 72 73 69 6f 6e 5f 73 65 6c 65  tcl_version_sele
2550: 63 74 65 64 0a 09 09 73 65 74 20 61 72 67 73 28  cted...set args(
2560: 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69  kitcreator_versi
2570: 6f 6e 29 20 24 6b 69 74 63 72 65 61 74 6f 72 5f  on) $kitcreator_
2580: 76 65 72 73 69 6f 6e 5f 73 65 6c 65 63 74 65 64  version_selected
2590: 0a 0a 09 09 66 6f 72 65 61 63 68 20 61 72 67 20  ....foreach arg 
25a0: 7b 74 63 6c 5f 76 65 72 73 69 6f 6e 20 6b 69 74  {tcl_version kit
25b0: 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20  creator_version 
25c0: 6f 70 74 69 6f 6e 5f 73 74 6f 72 61 67 65 7d 20  option_storage} 
25d0: 7b 0a 09 09 09 73 65 74 20 64 69 63 74 41 72 67  {....set dictArg
25e0: 20 24 61 72 67 0a 09 09 09 73 77 69 74 63 68 20   $arg....switch 
25f0: 2d 65 78 61 63 74 20 2d 2d 20 24 61 72 67 20 7b  -exact -- $arg {
2600: 0a 09 09 09 09 6f 70 74 69 6f 6e 5f 73 74 6f 72  .....option_stor
2610: 61 67 65 20 7b 0a 09 09 09 09 09 73 65 74 20 64  age {......set d
2620: 69 63 74 41 72 67 20 22 73 74 6f 72 61 67 65 22  ictArg "storage"
2630: 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 0a 09 09 09  .....}....}.....
2640: 63 61 74 63 68 20 7b 0a 09 09 09 09 73 65 74 20  catch {.....set 
2650: 61 72 67 73 28 24 61 72 67 29 20 5b 64 69 63 74  args($arg) [dict
2660: 20 67 65 74 20 24 61 72 67 73 28 64 69 63 74 29   get $args(dict)
2670: 20 24 64 69 63 74 41 72 67 5d 0a 09 09 09 7d 0a   $dictArg]....}.
2680: 09 09 7d 0a 0a 09 09 73 65 74 20 73 65 6c 65 63  ..}....set selec
2690: 74 65 64 50 61 63 6b 61 67 65 73 20 5b 6c 69 73  tedPackages [lis
26a0: 74 5d 0a 09 09 63 61 74 63 68 20 7b 0a 09 09 09  t]...catch {....
26b0: 73 65 74 20 73 65 6c 65 63 74 65 64 50 61 63 6b  set selectedPack
26c0: 61 67 65 73 20 5b 64 69 63 74 20 67 65 74 20 24  ages [dict get $
26d0: 61 72 67 73 28 64 69 63 74 29 20 70 61 63 6b 61  args(dict) packa
26e0: 67 65 73 5d 0a 09 09 7d 0a 09 09 66 6f 72 65 61  ges]...}...forea
26f0: 63 68 20 61 72 67 20 24 73 65 6c 65 63 74 65 64  ch arg $selected
2700: 50 61 63 6b 61 67 65 73 20 7b 0a 09 09 09 73 65  Packages {....se
2710: 74 20 61 72 67 73 28 6f 70 74 69 6f 6e 5f 70 61  t args(option_pa
2720: 63 6b 61 67 65 5f 24 61 72 67 29 20 74 72 75 65  ckage_$arg) true
2730: 0a 09 09 7d 0a 0a 09 09 73 65 74 20 73 65 6c 65  ...}....set sele
2740: 63 74 65 64 4f 70 74 69 6f 6e 73 20 5b 6c 69 73  ctedOptions [lis
2750: 74 5d 0a 09 09 63 61 74 63 68 20 7b 0a 09 09 09  t]...catch {....
2760: 73 65 74 20 73 65 6c 65 63 74 65 64 4f 70 74 69  set selectedOpti
2770: 6f 6e 73 20 5b 64 69 63 74 20 67 65 74 20 24 61  ons [dict get $a
2780: 72 67 73 28 64 69 63 74 29 20 6f 70 74 69 6f 6e  rgs(dict) option
2790: 73 5d 0a 09 09 7d 0a 09 09 66 6f 72 65 61 63 68  s]...}...foreach
27a0: 20 61 72 67 20 24 73 65 6c 65 63 74 65 64 4f 70   arg $selectedOp
27b0: 74 69 6f 6e 73 20 7b 0a 09 09 09 73 77 69 74 63  tions {....switc
27c0: 68 20 2d 67 6c 6f 62 20 2d 2d 20 24 61 72 67 20  h -glob -- $arg 
27d0: 7b 0a 09 09 09 09 22 70 61 63 6b 61 67 65 5f 2a  {....."package_*
27e0: 22 20 7b 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75  " {......continu
27f0: 65 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 0a 09 09  e.....}....}....
2800: 09 73 65 74 20 61 72 67 73 28 6f 70 74 69 6f 6e  .set args(option
2810: 5f 24 61 72 67 29 20 74 72 75 65 0a 09 09 7d 0a  _$arg) true...}.
2820: 09 7d 0a 0a 09 69 66 20 7b 5b 69 6e 66 6f 20 65  .}...if {[info e
2830: 78 69 73 74 73 20 61 72 67 73 28 70 6c 61 74 66  xists args(platf
2840: 6f 72 6d 29 5d 20 26 26 20 5b 69 6e 66 6f 20 65  orm)] && [info e
2850: 78 69 73 74 73 20 61 72 67 73 28 74 63 6c 5f 76  xists args(tcl_v
2860: 65 72 73 69 6f 6e 29 5d 20 26 26 20 5b 69 6e 66  ersion)] && [inf
2870: 6f 20 65 78 69 73 74 20 61 72 67 73 28 6b 69 74  o exist args(kit
2880: 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 29  creator_version)
2890: 5d 7d 20 7b 0a 09 09 23 20 52 65 61 64 20 69 6e  ]} {...# Read in
28a0: 20 61 72 67 75 6d 65 6e 74 73 0a 09 09 23 23 20   arguments...## 
28b0: 4d 61 6e 64 61 74 6f 72 79 20 61 72 67 75 6d 65  Mandatory argume
28c0: 6e 74 73 0a 09 09 73 65 74 20 62 75 69 6c 64 5f  nts...set build_
28d0: 70 6c 61 74 66 6f 72 6d 20 5b 6e 6f 72 6d 61 6c  platform [normal
28e0: 69 7a 65 5f 70 6c 61 74 66 6f 72 6d 20 24 61 72  ize_platform $ar
28f0: 67 73 28 70 6c 61 74 66 6f 72 6d 29 20 5b 61 72  gs(platform) [ar
2900: 72 61 79 20 6e 61 6d 65 73 20 70 6c 61 74 66 6f  ray names platfo
2910: 72 6d 73 5d 5d 0a 09 09 73 65 74 20 62 75 69 6c  rms]]...set buil
2920: 64 5f 74 63 6c 5f 76 65 72 73 69 6f 6e 20 24 61  d_tcl_version $a
2930: 72 67 73 28 74 63 6c 5f 76 65 72 73 69 6f 6e 29  rgs(tcl_version)
2940: 0a 09 09 73 65 74 20 62 75 69 6c 64 5f 6b 69 74  ...set build_kit
2950: 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20  creator_version 
2960: 24 61 72 67 73 28 6b 69 74 63 72 65 61 74 6f 72  $args(kitcreator
2970: 5f 76 65 72 73 69 6f 6e 29 0a 0a 09 09 69 66 20  _version)....if 
2980: 7b 24 62 75 69 6c 64 5f 74 63 6c 5f 76 65 72 73  {$build_tcl_vers
2990: 69 6f 6e 20 65 71 20 22 64 65 66 61 75 6c 74 22  ion eq "default"
29a0: 7d 20 7b 0a 09 09 09 73 65 74 20 62 75 69 6c 64  } {....set build
29b0: 5f 74 63 6c 5f 76 65 72 73 69 6f 6e 20 24 74 63  _tcl_version $tc
29c0: 6c 5f 76 65 72 73 69 6f 6e 5f 73 65 6c 65 63 74  l_version_select
29d0: 65 64 0a 09 09 7d 0a 0a 09 09 69 66 20 7b 24 62  ed...}....if {$b
29e0: 75 69 6c 64 5f 6b 69 74 63 72 65 61 74 6f 72 5f  uild_kitcreator_
29f0: 76 65 72 73 69 6f 6e 20 65 71 20 22 64 65 66 61  version eq "defa
2a00: 75 6c 74 22 7d 20 7b 0a 09 09 09 73 65 74 20 62  ult"} {....set b
2a10: 75 69 6c 64 5f 6b 69 74 63 72 65 61 74 6f 72 5f  uild_kitcreator_
2a20: 76 65 72 73 69 6f 6e 20 24 6b 69 74 63 72 65 61  version $kitcrea
2a30: 74 6f 72 5f 76 65 72 73 69 6f 6e 5f 73 65 6c 65  tor_version_sele
2a40: 63 74 65 64 0a 09 09 7d 0a 0a 09 09 23 23 20 4f  cted...}....## O
2a50: 70 74 69 6f 6e 61 6c 20 41 72 67 75 6d 65 6e 74  ptional Argument
2a60: 73 0a 09 09 73 65 74 20 62 75 69 6c 64 5f 70 61  s...set build_pa
2a70: 63 6b 61 67 65 73 20 5b 6c 69 73 74 5d 0a 09 09  ckages [list]...
2a80: 73 65 74 20 62 75 69 6c 64 5f 6f 70 74 69 6f 6e  set build_option
2a90: 73 28 74 68 72 65 61 64 65 64 29 20 30 0a 09 09  s(threaded) 0...
2aa0: 73 65 74 20 62 75 69 6c 64 5f 6f 70 74 69 6f 6e  set build_option
2ab0: 73 28 6b 69 74 64 6c 6c 29 20 30 0a 09 09 73 65  s(kitdll) 0...se
2ac0: 74 20 62 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28  t build_options(
2ad0: 64 65 62 75 67 29 20 30 0a 09 09 73 65 74 20 62  debug) 0...set b
2ae0: 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 64 79 6e  uild_options(dyn
2af0: 61 6d 69 63 74 6b 29 20 30 0a 09 09 73 65 74 20  amictk) 0...set 
2b00: 62 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 6d 69  build_options(mi
2b10: 6e 62 75 69 6c 64 29 20 30 0a 09 09 66 6f 72 65  nbuild) 0...fore
2b20: 61 63 68 20 61 72 67 20 5b 61 72 72 61 79 20 6e  ach arg [array n
2b30: 61 6d 65 73 20 61 72 67 73 5d 20 7b 0a 09 09 09  ames args] {....
2b40: 73 77 69 74 63 68 20 2d 67 6c 6f 62 20 2d 2d 20  switch -glob -- 
2b50: 24 61 72 67 20 7b 0a 09 09 09 09 22 6f 70 74 69  $arg {....."opti
2b60: 6f 6e 5f 70 61 63 6b 61 67 65 5f 2a 22 20 7b 0a  on_package_*" {.
2b70: 09 09 09 09 09 73 65 74 20 70 61 63 6b 61 67 65  .....set package
2b80: 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 20 5b   [join [lrange [
2b90: 73 70 6c 69 74 20 24 61 72 67 20 5f 5d 20 32 20  split $arg _] 2 
2ba0: 65 6e 64 5d 20 5f 5d 0a 0a 09 09 09 09 09 6c 61  end] _].......la
2bb0: 70 70 65 6e 64 20 62 75 69 6c 64 5f 70 61 63 6b  ppend build_pack
2bc0: 61 67 65 73 20 24 70 61 63 6b 61 67 65 0a 09 09  ages $package...
2bd0: 09 09 7d 0a 09 09 09 09 22 6f 70 74 69 6f 6e 5f  ..}....."option_
2be0: 74 68 72 65 61 64 65 64 22 20 7b 0a 09 09 09 09  threaded" {.....
2bf0: 09 73 65 74 20 62 75 69 6c 64 5f 6f 70 74 69 6f  .set build_optio
2c00: 6e 73 28 74 68 72 65 61 64 65 64 29 20 31 0a 09  ns(threaded) 1..
2c10: 09 09 09 7d 0a 09 09 09 09 22 6f 70 74 69 6f 6e  ...}....."option
2c20: 5f 6b 69 74 64 6c 6c 22 20 7b 0a 09 09 09 09 09  _kitdll" {......
2c30: 73 65 74 20 62 75 69 6c 64 5f 6f 70 74 69 6f 6e  set build_option
2c40: 73 28 6b 69 74 64 6c 6c 29 20 31 0a 09 09 09 09  s(kitdll) 1.....
2c50: 7d 0a 09 09 09 09 22 6f 70 74 69 6f 6e 5f 64 65  }....."option_de
2c60: 62 75 67 22 20 7b 0a 09 09 09 09 09 73 65 74 20  bug" {......set 
2c70: 62 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 64 65  build_options(de
2c80: 62 75 67 29 20 31 0a 09 09 09 09 7d 0a 09 09 09  bug) 1.....}....
2c90: 09 22 6f 70 74 69 6f 6e 5f 64 79 6e 61 6d 69 63  ."option_dynamic
2ca0: 74 6b 22 20 7b 0a 09 09 09 09 09 73 65 74 20 62  tk" {......set b
2cb0: 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 64 79 6e  uild_options(dyn
2cc0: 61 6d 69 63 74 6b 29 20 31 0a 09 09 09 09 7d 0a  amictk) 1.....}.
2cd0: 09 09 09 09 22 6f 70 74 69 6f 6e 5f 6d 69 6e 62  ...."option_minb
2ce0: 75 69 6c 64 22 20 7b 0a 09 09 09 09 09 73 65 74  uild" {......set
2cf0: 20 62 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 6d   build_options(m
2d00: 69 6e 62 75 69 6c 64 29 20 31 0a 09 09 09 09 7d  inbuild) 1.....}
2d10: 0a 09 09 09 09 22 6f 70 74 69 6f 6e 5f 73 74 61  ....."option_sta
2d20: 74 69 63 6c 69 62 73 73 6c 22 20 7b 0a 09 09 09  ticlibssl" {....
2d30: 09 09 73 65 74 20 62 75 69 6c 64 5f 6f 70 74 69  ..set build_opti
2d40: 6f 6e 73 28 73 74 61 74 69 63 6c 69 62 73 73 6c  ons(staticlibssl
2d50: 29 20 31 0a 09 09 09 09 7d 0a 09 09 09 09 22 6f  ) 1.....}....."o
2d60: 70 74 69 6f 6e 5f 62 75 69 6c 64 6c 69 62 73 73  ption_buildlibss
2d70: 6c 22 20 7b 0a 09 09 09 09 09 73 65 74 20 62 75  l" {......set bu
2d80: 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 62 75 69 6c  ild_options(buil
2d90: 64 6c 69 62 73 73 6c 29 20 31 0a 09 09 09 09 7d  dlibssl) 1.....}
2da0: 0a 09 09 09 09 22 6f 70 74 69 6f 6e 5f 73 74 61  ....."option_sta
2db0: 74 69 63 70 6b 67 73 22 20 7b 0a 09 09 09 09 09  ticpkgs" {......
2dc0: 73 65 74 20 62 75 69 6c 64 5f 6f 70 74 69 6f 6e  set build_option
2dd0: 73 28 73 74 61 74 69 63 70 6b 67 73 29 20 31 0a  s(staticpkgs) 1.
2de0: 09 09 09 09 7d 0a 09 09 09 09 22 6f 70 74 69 6f  ....}....."optio
2df0: 6e 5f 74 63 6c 75 74 66 6d 61 78 36 22 20 7b 0a  n_tclutfmax6" {.
2e00: 09 09 09 09 09 73 65 74 20 62 75 69 6c 64 5f 6f  .....set build_o
2e10: 70 74 69 6f 6e 73 28 74 63 6c 75 74 66 6d 61 78  ptions(tclutfmax
2e20: 36 29 20 31 0a 09 09 09 09 7d 0a 09 09 09 09 22  6) 1.....}....."
2e30: 6f 70 74 69 6f 6e 5f 73 74 6f 72 61 67 65 22 20  option_storage" 
2e40: 7b 0a 09 09 09 09 09 73 77 69 74 63 68 20 2d 2d  {......switch --
2e50: 20 24 61 72 67 73 28 24 61 72 67 29 20 7b 0a 09   $args($arg) {..
2e60: 09 09 09 09 09 22 6d 6b 34 22 20 2d 20 22 7a 69  ....."mk4" - "zi
2e70: 70 22 20 2d 20 22 63 76 66 73 22 20 7b 0a 09 09  p" - "cvfs" {...
2e80: 09 09 09 09 09 73 65 74 20 62 75 69 6c 64 5f 6f  .....set build_o
2e90: 70 74 69 6f 6e 73 28 73 74 6f 72 61 67 65 29 20  ptions(storage) 
2ea0: 24 61 72 67 73 28 24 61 72 67 29 0a 09 09 09 09  $args($arg).....
2eb0: 09 09 7d 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d  ..}......}.....}
2ec0: 0a 09 09 09 7d 0a 09 09 7d 0a 09 09 73 65 74 20  ....}...}...set 
2ed0: 62 75 69 6c 64 5f 70 61 63 6b 61 67 65 73 20 5b  build_packages [
2ee0: 6c 73 6f 72 74 20 2d 64 69 63 74 69 6f 6e 61 72  lsort -dictionar
2ef0: 79 20 24 62 75 69 6c 64 5f 70 61 63 6b 61 67 65  y $build_package
2f00: 73 5d 0a 0a 09 09 23 20 56 61 6c 69 64 61 74 65  s]....# Validate
2f10: 20 61 72 67 75 6d 65 6e 74 73 0a 09 09 69 66 20   arguments...if 
2f20: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 70  {![info exists p
2f30: 6c 61 74 66 6f 72 6d 73 28 24 62 75 69 6c 64 5f  latforms($build_
2f40: 70 6c 61 74 66 6f 72 6d 29 5d 7d 20 7b 0a 09 09  platform)]} {...
2f50: 09 75 6e 73 65 74 20 62 75 69 6c 64 5f 70 6c 61  .unset build_pla
2f60: 74 66 6f 72 6d 0a 09 09 7d 0a 0a 09 09 69 66 20  tform...}....if 
2f70: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
2f80: 63 6c 5f 76 65 72 73 69 6f 6e 73 28 24 62 75 69  cl_versions($bui
2f90: 6c 64 5f 74 63 6c 5f 76 65 72 73 69 6f 6e 29 5d  ld_tcl_version)]
2fa0: 7d 20 7b 0a 09 09 09 75 6e 73 65 74 20 62 75 69  } {....unset bui
2fb0: 6c 64 5f 74 63 6c 5f 76 65 72 73 69 6f 6e 0a 09  ld_tcl_version..
2fc0: 09 7d 0a 0a 09 09 69 66 20 7b 21 5b 69 6e 66 6f  .}....if {![info
2fd0: 20 65 78 69 73 74 73 20 6b 69 74 63 72 65 61 74   exists kitcreat
2fe0: 6f 72 5f 76 65 72 73 69 6f 6e 73 28 24 62 75 69  or_versions($bui
2ff0: 6c 64 5f 6b 69 74 63 72 65 61 74 6f 72 5f 76 65  ld_kitcreator_ve
3000: 72 73 69 6f 6e 29 5d 7d 20 7b 0a 09 09 09 75 6e  rsion)]} {....un
3010: 73 65 74 20 62 75 69 6c 64 5f 6b 69 74 63 72 65  set build_kitcre
3020: 61 74 6f 72 5f 76 65 72 73 69 6f 6e 0a 09 09 7d  ator_version...}
3030: 0a 0a 09 09 66 6f 72 65 61 63 68 20 70 61 63 6b  ....foreach pack
3040: 61 67 65 20 24 62 75 69 6c 64 5f 70 61 63 6b 61  age $build_packa
3050: 67 65 73 20 7b 0a 09 09 09 69 66 20 7b 21 5b 69  ges {....if {![i
3060: 6e 66 6f 20 65 78 69 73 74 73 20 70 61 63 6b 61  nfo exists packa
3070: 67 65 73 28 24 70 61 63 6b 61 67 65 29 5d 7d 20  ges($package)]} 
3080: 7b 0a 09 09 09 09 75 6e 73 65 74 20 62 75 69 6c  {.....unset buil
3090: 64 5f 70 61 63 6b 61 67 65 73 0a 0a 09 09 09 09  d_packages......
30a0: 62 72 65 61 6b 0a 09 09 09 7d 0a 09 09 7d 0a 0a  break....}...}..
30b0: 09 09 23 20 52 65 73 6f 6c 76 65 20 76 65 72 73  ..# Resolve vers
30c0: 69 6f 6e 20 6e 75 6d 62 65 72 73 20 74 6f 20 63  ion numbers to c
30d0: 68 65 63 6b 69 6e 20 49 44 73 0a 09 09 23 23 20  heckin IDs...## 
30e0: 58 58 58 3a 20 54 4f 44 4f 0a 09 09 73 65 74 20  XXX: TODO...set 
30f0: 63 61 63 68 65 5f 74 63 6c 5f 76 65 72 73 69 6f  cache_tcl_versio
3100: 6e 20 24 62 75 69 6c 64 5f 74 63 6c 5f 76 65 72  n $build_tcl_ver
3110: 73 69 6f 6e 0a 09 09 69 66 20 7b 5b 73 74 72 69  sion...if {[stri
3120: 6e 67 20 6d 61 74 63 68 20 22 66 6f 73 73 69 6c  ng match "fossil
3130: 5f 2a 22 20 24 62 75 69 6c 64 5f 74 63 6c 5f 76  _*" $build_tcl_v
3140: 65 72 73 69 6f 6e 5d 7d 20 7b 0a 09 09 09 73 65  ersion]} {....se
3150: 74 20 63 61 63 68 65 5f 74 63 6c 5f 76 65 72 73  t cache_tcl_vers
3160: 69 6f 6e 20 22 24 7b 62 75 69 6c 64 5f 74 63 6c  ion "${build_tcl
3170: 5f 76 65 72 73 69 6f 6e 7d 5f 5b 63 6c 6f 63 6b  _version}_[clock
3180: 20 66 6f 72 6d 61 74 20 5b 63 6c 6f 63 6b 20 73   format [clock s
3190: 65 63 6f 6e 64 73 5d 20 2d 66 6f 72 6d 61 74 20  econds] -format 
31a0: 7b 25 59 25 6d 25 64 7d 5d 22 0a 09 09 7d 0a 0a  {%Y%m%d}]"...}..
31b0: 09 09 73 65 74 20 63 61 63 68 65 5f 6b 69 74 63  ..set cache_kitc
31c0: 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20 24  reator_version $
31d0: 62 75 69 6c 64 5f 6b 69 74 63 72 65 61 74 6f 72  build_kitcreator
31e0: 5f 76 65 72 73 69 6f 6e 0a 09 09 69 66 20 7b 24  _version...if {$
31f0: 62 75 69 6c 64 5f 6b 69 74 63 72 65 61 74 6f 72  build_kitcreator
3200: 5f 76 65 72 73 69 6f 6e 20 3d 3d 20 22 74 72 75  _version == "tru
3210: 6e 6b 22 7d 20 7b 0a 09 09 09 73 65 74 20 63 61  nk"} {....set ca
3220: 63 68 65 5f 6b 69 74 63 72 65 61 74 6f 72 5f 76  che_kitcreator_v
3230: 65 72 73 69 6f 6e 20 5b 63 6c 6f 63 6b 20 66 6f  ersion [clock fo
3240: 72 6d 61 74 20 5b 63 6c 6f 63 6b 20 73 65 63 6f  rmat [clock seco
3250: 6e 64 73 5d 20 2d 66 6f 72 6d 61 74 20 7b 25 59  nds] -format {%Y
3260: 25 6d 25 64 7d 5d 0a 09 09 7d 0a 0a 09 09 23 20  %m%d}]...}....# 
3270: 47 65 6e 65 72 61 74 65 20 61 20 73 65 72 69 61  Generate a seria
3280: 6c 69 7a 65 64 20 68 61 73 68 20 74 68 61 74 20  lized hash that 
3290: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 73  represents the s
32a0: 74 61 74 65 20 6f 66 20 74 68 65 20 62 75 69 6c  tate of the buil
32b0: 64 0a 09 09 23 23 20 4c 6f 61 64 20 61 20 73 65  d...## Load a se
32c0: 63 72 65 74 20 73 6f 20 6b 65 79 73 20 63 61 6e  cret so keys can
32d0: 6e 6f 74 20 62 65 20 70 72 65 2d 63 6f 6d 70 75  not be pre-compu
32e0: 74 65 64 20 28 62 75 74 20 72 65 6d 61 69 6e 20  ted (but remain 
32f0: 63 6f 6e 73 69 73 74 65 6e 74 29 0a 09 09 73 65  consistent)...se
3300: 74 20 73 65 63 72 65 74 66 64 20 5b 6f 70 65 6e  t secretfd [open
3310: 20 24 73 65 63 72 65 74 66 69 6c 65 20 22 72 22   $secretfile "r"
3320: 5d 0a 09 09 73 65 74 20 73 65 63 72 65 74 20 5b  ]...set secret [
3330: 67 65 74 73 20 24 73 65 63 72 65 74 66 64 5d 0a  gets $secretfd].
3340: 09 09 63 6c 6f 73 65 20 24 73 65 63 72 65 74 66  ..close $secretf
3350: 64 0a 0a 09 09 23 23 20 43 6f 6d 70 75 74 65 20  d....## Compute 
3360: 62 61 73 69 63 20 6b 65 79 09 0a 09 09 73 65 74  basic key....set
3370: 20 6b 65 79 20 5b 6c 69 73 74 20 24 73 65 63 72   key [list $secr
3380: 65 74 20 24 62 75 69 6c 64 5f 70 6c 61 74 66 6f  et $build_platfo
3390: 72 6d 20 24 63 61 63 68 65 5f 74 63 6c 5f 76 65  rm $cache_tcl_ve
33a0: 72 73 69 6f 6e 20 24 63 61 63 68 65 5f 6b 69 74  rsion $cache_kit
33b0: 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20  creator_version 
33c0: 24 62 75 69 6c 64 5f 70 61 63 6b 61 67 65 73 5d  $build_packages]
33d0: 0a 0a 09 09 23 23 20 55 70 64 61 74 65 20 6b 65  ....## Update ke
33e0: 79 20 77 69 74 68 20 6f 70 74 69 6f 6e 73 20 69  y with options i
33f0: 6e 20 64 65 74 65 72 6d 69 6e 69 73 74 69 63 20  n deterministic 
3400: 6f 72 64 65 72 0a 09 09 66 6f 72 65 61 63 68 20  order...foreach 
3410: 6f 70 74 69 6f 6e 20 5b 6c 73 6f 72 74 20 2d 64  option [lsort -d
3420: 69 63 74 69 6f 6e 61 72 79 20 5b 61 72 72 61 79  ictionary [array
3430: 20 6e 61 6d 65 73 20 62 75 69 6c 64 5f 6f 70 74   names build_opt
3440: 69 6f 6e 73 5d 5d 20 7b 0a 09 09 09 6c 61 70 70  ions]] {....lapp
3450: 65 6e 64 20 6b 65 79 20 5b 6c 69 73 74 20 22 6f  end key [list "o
3460: 70 74 69 6f 6e 3a 24 6f 70 74 69 6f 6e 22 20 24  ption:$option" $
3470: 62 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 24 6f  build_options($o
3480: 70 74 69 6f 6e 29 5d 0a 09 09 7d 0a 0a 09 09 23  ption)]...}....#
3490: 23 20 43 6f 6e 76 65 72 74 20 6b 65 79 20 74 6f  # Convert key to
34a0: 20 61 20 75 73 65 72 2d 63 6f 6e 73 75 6d 61 62   a user-consumab
34b0: 6c 65 20 73 74 72 69 6e 67 20 76 69 61 20 68 61  le string via ha
34c0: 73 68 69 6e 67 0a 09 09 73 65 74 20 6b 65 79 20  shing...set key 
34d0: 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20  [string tolower 
34e0: 5b 73 68 61 31 3a 3a 73 68 61 31 20 2d 68 65 78  [sha1::sha1 -hex
34f0: 20 24 6b 65 79 5d 5d 0a 0a 09 09 23 20 44 65 74   $key]]....# Det
3500: 65 72 6d 69 6e 65 20 66 69 6c 65 6e 61 6d 65 0a  ermine filename.
3510: 09 09 73 65 74 20 65 78 74 72 61 5f 6b 65 79 73  ..set extra_keys
3520: 20 5b 6c 69 73 74 5d 0a 09 09 69 66 20 7b 24 62   [list]...if {$b
3530: 75 69 6c 64 5f 6f 70 74 69 6f 6e 73 28 6b 69 74  uild_options(kit
3540: 64 6c 6c 29 7d 20 7b 0a 09 09 09 73 65 74 20 65  dll)} {....set e
3550: 78 74 65 6e 73 69 6f 6e 20 22 73 6f 22 0a 09 09  xtension "so"...
3560: 09 73 77 69 74 63 68 20 2d 2d 20 24 62 75 69 6c  .switch -- $buil
3570: 64 5f 70 6c 61 74 66 6f 72 6d 20 7b 0a 09 09 09  d_platform {....
3580: 09 22 77 69 6e 33 32 22 20 2d 20 22 77 69 6e 36  ."win32" - "win6
3590: 34 22 20 7b 0a 09 09 09 09 09 73 65 74 20 65 78  4" {......set ex
35a0: 74 65 6e 73 69 6f 6e 20 22 64 6c 6c 22 0a 09 09  tension "dll"...
35b0: 09 09 7d 0a 09 09 09 09 22 68 70 75 78 2d 68 70  ..}....."hpux-hp
35c0: 70 61 36 34 22 20 7b 0a 09 09 09 09 09 73 65 74  pa64" {......set
35d0: 20 65 78 74 65 6e 73 69 6f 6e 20 22 73 6c 22 0a   extension "sl".
35e0: 09 09 09 09 7d 0a 09 09 09 7d 0a 0a 09 09 09 23  ....}....}.....#
35f0: 23 20 58 58 58 3a 20 54 4f 44 4f 3a 20 54 68 65  # XXX: TODO: The
3600: 20 76 65 72 73 69 6f 6e 20 68 65 72 65 20 6e 65   version here ne
3610: 65 64 73 20 74 6f 20 6d 61 74 63 68 20 77 68 61  eds to match wha
3620: 74 27 73 20 69 6e 20 74 68 65 20 53 4f 4e 41 4d  t's in the SONAM
3630: 45 0a 09 09 09 73 65 74 20 66 69 6c 65 6e 61 6d  E....set filenam
3640: 65 20 22 6c 69 62 74 63 6c 6b 69 74 5b 73 74 72  e "libtclkit[str
3650: 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 22 2e  ing map [list ".
3660: 22 20 22 22 5d 20 24 7b 63 61 63 68 65 5f 74 63  " ""] ${cache_tc
3670: 6c 5f 76 65 72 73 69 6f 6e 7d 5d 2e 24 7b 65 78  l_version}].${ex
3680: 74 65 6e 73 69 6f 6e 7d 22 0a 09 09 09 73 65 74  tension}"....set
3690: 20 73 64 6b 66 69 6c 65 6e 61 6d 65 20 22 6c 69   sdkfilename "li
36a0: 62 74 63 6c 6b 69 74 5b 73 74 72 69 6e 67 20 6d  btclkit[string m
36b0: 61 70 20 5b 6c 69 73 74 20 22 2e 22 20 22 22 5d  ap [list "." ""]
36c0: 20 24 7b 63 61 63 68 65 5f 74 63 6c 5f 76 65 72   ${cache_tcl_ver
36d0: 73 69 6f 6e 7d 5d 2d 24 7b 62 75 69 6c 64 5f 70  sion}]-${build_p
36e0: 6c 61 74 66 6f 72 6d 7d 2d 73 64 6b 2e 74 61 72  latform}-sdk.tar
36f0: 2e 67 7a 22 0a 09 09 09 6c 61 70 70 65 6e 64 20  .gz"....lappend 
3700: 65 78 74 72 61 5f 6b 65 79 73 20 73 64 6b 66 69  extra_keys sdkfi
3710: 6c 65 6e 61 6d 65 20 24 73 64 6b 66 69 6c 65 6e  lename $sdkfilen
3720: 61 6d 65 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09  ame...} else {..
3730: 09 09 73 65 74 20 66 69 6c 65 6e 61 6d 65 20 22  ..set filename "
3740: 74 63 6c 6b 69 74 22 0a 0a 09 09 09 73 77 69 74  tclkit".....swit
3750: 63 68 20 2d 2d 20 24 62 75 69 6c 64 5f 70 6c 61  ch -- $build_pla
3760: 74 66 6f 72 6d 20 7b 0a 09 09 09 09 22 77 69 6e  tform {....."win
3770: 33 32 22 20 2d 20 22 77 69 6e 36 34 22 20 7b 0a  32" - "win64" {.
3780: 09 09 09 09 09 61 70 70 65 6e 64 20 66 69 6c 65  .....append file
3790: 6e 61 6d 65 20 22 2e 65 78 65 22 0a 09 09 09 09  name ".exe".....
37a0: 7d 0a 09 09 09 7d 0a 09 09 7d 0a 0a 09 09 23 20  }....}...}....# 
37b0: 51 75 65 75 65 20 62 75 69 6c 64 20 75 70 20 61  Queue build up a
37c0: 6e 64 20 77 61 69 74 20 66 6f 72 20 69 74 20 74  nd wait for it t
37d0: 6f 20 63 6f 6d 70 6c 65 74 65 0a 09 09 73 65 74  o complete...set
37e0: 20 66 64 20 5b 6f 70 65 6e 20 24 71 75 65 75 65   fd [open $queue
37f0: 20 61 2b 5d 0a 09 09 70 75 74 73 20 24 66 64 20   a+]...puts $fd 
3800: 5b 6c 69 73 74 20 66 69 6c 65 6e 61 6d 65 20 24  [list filename $
3810: 66 69 6c 65 6e 61 6d 65 20 6b 65 79 20 24 6b 65  filename key $ke
3820: 79 20 70 6c 61 74 66 6f 72 6d 20 24 62 75 69 6c  y platform $buil
3830: 64 5f 70 6c 61 74 66 6f 72 6d 20 74 63 6c 5f 76  d_platform tcl_v
3840: 65 72 73 69 6f 6e 20 24 62 75 69 6c 64 5f 74 63  ersion $build_tc
3850: 6c 5f 76 65 72 73 69 6f 6e 20 6b 69 74 63 72 65  l_version kitcre
3860: 61 74 6f 72 5f 76 65 72 73 69 6f 6e 20 24 62 75  ator_version $bu
3870: 69 6c 64 5f 6b 69 74 63 72 65 61 74 6f 72 5f 76  ild_kitcreator_v
3880: 65 72 73 69 6f 6e 20 70 61 63 6b 61 67 65 73 20  ersion packages 
3890: 24 62 75 69 6c 64 5f 70 61 63 6b 61 67 65 73 20  $build_packages 
38a0: 6f 70 74 69 6f 6e 73 20 5b 61 72 72 61 79 20 67  options [array g
38b0: 65 74 20 62 75 69 6c 64 5f 6f 70 74 69 6f 6e 73  et build_options
38c0: 5d 20 7b 2a 7d 24 65 78 74 72 61 5f 6b 65 79 73  ] {*}$extra_keys
38d0: 5d 0a 09 09 63 6c 6f 73 65 20 24 66 64 0a 0a 09  ]...close $fd...
38e0: 09 73 65 74 20 75 72 6c 20 22 68 74 74 70 3a 2f  .set url "http:/
38f0: 2f 6b 69 74 63 72 65 61 74 6f 72 2e 72 6b 65 65  /kitcreator.rkee
3900: 6e 65 2e 6f 72 67 2f 6b 69 74 73 2f 62 75 69 6c  ne.org/kits/buil
3910: 64 69 6e 67 2f 24 6b 65 79 2f 22 0a 0a 09 09 69  ding/$key/"....i
3920: 66 20 7b 21 24 72 65 73 75 6c 74 49 73 41 50 49  f {!$resultIsAPI
3930: 7d 20 7b 0a 09 09 09 68 65 61 64 65 72 73 20 72  } {....headers r
3940: 65 64 69 72 65 63 74 20 24 75 72 6c 0a 3f 3e 3c  edirect $url.?><
3950: 68 74 6d 6c 3e 0a 09 3c 68 65 61 64 3e 0a 09 09  html>..<head>...
3960: 3c 74 69 74 6c 65 3e 4b 69 74 43 72 65 61 74 6f  <title>KitCreato
3970: 72 2c 20 57 65 62 20 49 6e 74 65 72 66 61 63 65  r, Web Interface
3980: 3c 2f 74 69 74 6c 65 3e 0a 09 3c 2f 68 65 61 64  </title>..</head
3990: 3e 0a 09 3c 62 6f 64 79 3e 0a 09 09 3c 68 31 3e  >..<body>...<h1>
39a0: 4b 69 74 43 72 65 61 74 6f 72 20 57 65 62 20 49  KitCreator Web I
39b0: 6e 74 65 72 66 61 63 65 3c 2f 68 31 3e 0a 09 09  nterface</h1>...
39c0: 3c 70 3e 42 75 69 6c 64 20 69 6e 20 70 72 6f 67  <p>Build in prog
39d0: 72 65 73 73 2c 20 73 65 65 20 3c 61 20 68 72 65  ress, see <a hre
39e0: 66 3d 22 3c 3f 20 70 75 74 73 20 2d 6e 6f 6e 65  f="<? puts -none
39f0: 77 6c 69 6e 65 20 24 75 72 6c 20 3f 3e 22 3e 3c  wline $url ?>"><
3a00: 3f 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e  ? puts -nonewlin
3a10: 65 20 24 75 72 6c 20 3f 3e 3c 2f 61 3e 20 66 6f  e $url ?></a> fo
3a20: 72 20 62 75 69 6c 64 20 69 6e 66 6f 72 6d 61 74  r build informat
3a30: 69 6f 6e 3c 2f 70 3e 0a 09 3c 2f 62 6f 64 79 3e  ion</p>..</body>
3a40: 0a 3c 2f 68 74 6d 6c 3e 0a 3c 3f 0a 09 09 7d 20  .</html>.<?...} 
3a50: 65 6c 73 65 20 7b 0a 09 09 09 73 65 74 20 6b 69  else {....set ki
3a60: 74 75 72 6c 20 22 68 74 74 70 3a 2f 2f 6b 69 74  turl "http://kit
3a70: 63 72 65 61 74 6f 72 2e 72 6b 65 65 6e 65 2e 6f  creator.rkeene.o
3a80: 72 67 2f 6b 69 74 73 2f 62 75 69 6c 64 69 6e 67  rg/kits/building
3a90: 2f 24 61 70 69 52 65 74 75 72 6e 46 6f 72 6d 61  /$apiReturnForma
3aa0: 74 2f 24 6b 65 79 2f 22 0a 0a 09 09 09 73 77 69  t/$key/".....swi
3ab0: 74 63 68 20 2d 65 78 61 63 74 20 2d 2d 20 24 61  tch -exact -- $a
3ac0: 70 69 52 65 74 75 72 6e 46 6f 72 6d 61 74 20 7b  piReturnFormat {
3ad0: 0a 09 09 09 09 22 6a 73 6f 6e 22 20 7b 0a 09 09  ....."json" {...
3ae0: 09 09 09 70 75 74 73 20 22 7b 5c 22 75 72 6c 5c  ...puts "{\"url\
3af0: 22 3a 20 5c 22 24 7b 6b 69 74 75 72 6c 7d 5c 22  ": \"${kiturl}\"
3b00: 7d 22 0a 09 09 09 09 7d 0a 09 09 09 09 22 64 69  }".....}....."di
3b10: 63 74 22 20 7b 0a 09 09 09 09 09 70 75 74 73 20  ct" {......puts 
3b20: 5b 64 69 63 74 20 63 72 65 61 74 65 20 75 72 6c  [dict create url
3b30: 20 24 6b 69 74 75 72 6c 5d 0a 09 09 09 09 7d 0a   $kiturl].....}.
3b40: 09 09 09 7d 0a 09 09 7d 0a 09 7d 20 65 6c 73 65  ...}...}..} else
3b50: 20 7b 0a 3f 3e 3c 68 74 6d 6c 3e 0a 20 20 3c 68   {.?><html>.  <h
3b60: 65 61 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 3e  ead>.    <title>
3b70: 4b 69 74 43 72 65 61 74 6f 72 2c 20 57 65 62 20  KitCreator, Web 
3b80: 49 6e 74 65 72 66 61 63 65 3c 2f 74 69 74 6c 65  Interface</title
3b90: 3e 0a 20 20 20 20 3c 73 63 72 69 70 74 3e 0a 3c  >.    <script>.<
3ba0: 21 2d 2d 0a 09 66 75 6e 63 74 69 6f 6e 20 65 6e  !--..function en
3bb0: 61 62 6c 65 4f 70 74 69 6f 6e 28 6f 70 74 69 6f  ableOption(optio
3bc0: 6e 29 20 7b 0a 09 09 76 61 72 20 6f 62 6a 3b 0a  n) {...var obj;.
3bd0: 0a 09 09 6f 62 6a 20 3d 20 64 6f 63 75 6d 65 6e  ...obj = documen
3be0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
3bf0: 28 27 6f 70 74 69 6f 6e 5f 27 20 2b 20 6f 70 74  ('option_' + opt
3c00: 69 6f 6e 29 3b 0a 09 09 69 66 20 28 21 6f 62 6a  ion);...if (!obj
3c10: 29 20 7b 0a 09 09 09 72 65 74 75 72 6e 3b 0a 09  ) {....return;..
3c20: 09 7d 0a 09 09 6f 62 6a 2e 64 69 73 61 62 6c 65  .}...obj.disable
3c30: 64 20 3d 20 66 61 6c 73 65 3b 0a 09 7d 0a 0a 09  d = false;..}...
3c40: 66 75 6e 63 74 69 6f 6e 20 64 69 73 61 62 6c 65  function disable
3c50: 4f 70 74 69 6f 6e 28 6f 70 74 69 6f 6e 29 20 7b  Option(option) {
3c60: 0a 09 09 76 61 72 20 6f 62 6a 3b 0a 0a 09 09 6f  ...var obj;....o
3c70: 62 6a 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65  bj = document.ge
3c80: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 6f 70  tElementById('op
3c90: 74 69 6f 6e 5f 27 20 2b 20 6f 70 74 69 6f 6e 29  tion_' + option)
3ca0: 3b 0a 09 09 69 66 20 28 21 6f 62 6a 29 20 7b 0a  ;...if (!obj) {.
3cb0: 09 09 09 72 65 74 75 72 6e 3b 0a 09 09 7d 0a 09  ...return;...}..
3cc0: 09 6f 62 6a 2e 63 68 65 63 6b 65 64 20 3d 20 66  .obj.checked = f
3cd0: 61 6c 73 65 3b 0a 09 09 6f 62 6a 2e 64 69 73 61  alse;...obj.disa
3ce0: 62 6c 65 64 20 3d 20 74 72 75 65 3b 0a 09 7d 0a  bled = true;..}.
3cf0: 0a 09 66 75 6e 63 74 69 6f 6e 20 76 65 72 73 69  ..function versi
3d00: 6f 6e 45 6e 63 6f 64 65 64 28 76 65 72 73 69 6f  onEncoded(versio
3d10: 6e 53 74 72 69 6e 67 29 20 7b 0a 09 09 76 61 72  nString) {...var
3d20: 20 6f 75 74 70 75 74 20 3d 20 30 3b 0a 0a 09 09   output = 0;....
3d30: 69 66 20 28 76 65 72 73 69 6f 6e 53 74 72 69 6e  if (versionStrin
3d40: 67 20 3d 3d 3d 20 22 74 72 75 6e 6b 22 29 20 7b  g === "trunk") {
3d50: 0a 09 09 09 72 65 74 75 72 6e 28 76 65 72 73 69  ....return(versi
3d60: 6f 6e 45 6e 63 6f 64 65 64 28 22 32 35 35 2e 32  onEncoded("255.2
3d70: 35 35 2e 32 35 35 22 29 29 3b 0a 09 09 7d 0a 0a  55.255"));...}..
3d80: 09 09 69 66 20 28 76 65 72 73 69 6f 6e 53 74 72  ..if (versionStr
3d90: 69 6e 67 20 3d 3d 3d 20 22 63 6f 72 65 2d 38 2d  ing === "core-8-
3da0: 37 61 33 22 29 20 7b 0a 09 09 09 72 65 74 75 72  7a3") {....retur
3db0: 6e 28 76 65 72 73 69 6f 6e 45 6e 63 6f 64 65 64  n(versionEncoded
3dc0: 28 22 38 2e 36 2e 32 35 33 22 29 29 3b 0a 09 09  ("8.6.253"));...
3dd0: 7d 0a 0a 09 09 74 72 79 20 7b 0a 09 09 09 76 65  }....try {....ve
3de0: 72 73 69 6f 6e 53 74 72 69 6e 67 2e 73 70 6c 69  rsionString.spli
3df0: 74 28 22 2e 22 29 2e 73 6c 69 63 65 28 30 2c 20  t(".").slice(0, 
3e00: 33 29 2e 66 6f 72 45 61 63 68 28 66 75 6e 63 74  3).forEach(funct
3e10: 69 6f 6e 28 65 6c 65 6d 65 6e 74 29 20 7b 0a 09  ion(element) {..
3e20: 09 09 09 65 6c 65 6d 65 6e 74 20 3d 20 70 61 72  ...element = par
3e30: 73 65 49 6e 74 28 65 6c 65 6d 65 6e 74 29 3b 0a  seInt(element);.
3e40: 09 09 09 09 69 66 20 28 69 73 4e 61 4e 28 65 6c  ....if (isNaN(el
3e50: 65 6d 65 6e 74 29 29 20 7b 0a 09 09 09 09 09 74  ement)) {......t
3e60: 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 22  hrow new Error("
3e70: 49 6e 76 61 6c 69 64 20 76 65 72 73 69 6f 6e 20  Invalid version 
3e80: 73 74 72 69 6e 67 22 29 3b 0a 09 09 09 09 7d 0a  string");.....}.
3e90: 0a 09 09 09 09 6f 75 74 70 75 74 20 3c 3c 3d 20  .....output <<= 
3ea0: 38 3b 0a 09 09 09 09 6f 75 74 70 75 74 20 7c 3d  8;.....output |=
3eb0: 20 65 6c 65 6d 65 6e 74 3b 0a 09 09 09 7d 29 3b   element;....});
3ec0: 0a 09 09 7d 20 63 61 74 63 68 20 28 65 29 20 7b  ...} catch (e) {
3ed0: 0a 09 09 09 6f 75 74 70 75 74 20 3d 20 76 65 72  ....output = ver
3ee0: 73 69 6f 6e 53 74 72 69 6e 67 3b 0a 09 09 7d 0a  sionString;...}.
3ef0: 0a 09 09 72 65 74 75 72 6e 28 6f 75 74 70 75 74  ...return(output
3f00: 29 3b 0a 09 7d 0a 0a 09 66 75 6e 63 74 69 6f 6e  );..}...function
3f10: 20 76 65 72 69 66 79 4f 70 74 69 6f 6e 73 28 29   verifyOptions()
3f20: 20 7b 0a 09 09 76 61 72 20 6b 69 74 63 72 65 61   {...var kitcrea
3f30: 74 6f 72 5f 76 65 72 73 69 6f 6e 3b 0a 09 09 76  tor_version;...v
3f40: 61 72 20 74 63 6c 5f 76 65 72 73 69 6f 6e 3b 0a  ar tcl_version;.
3f50: 09 09 76 61 72 20 70 6c 61 74 66 6f 72 6d 3b 0a  ..var platform;.
3f60: 0a 09 09 6b 69 74 63 72 65 61 74 6f 72 5f 76 65  ...kitcreator_ve
3f70: 72 73 69 6f 6e 20 3d 20 64 6f 63 75 6d 65 6e 74  rsion = document
3f80: 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42 79 4e 61  .getElementsByNa
3f90: 6d 65 28 27 6b 69 74 63 72 65 61 74 6f 72 5f 76  me('kitcreator_v
3fa0: 65 72 73 69 6f 6e 27 29 5b 30 5d 2e 76 61 6c 75  ersion')[0].valu
3fb0: 65 3b 0a 09 09 74 63 6c 5f 76 65 72 73 69 6f 6e  e;...tcl_version
3fc0: 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45   = document.getE
3fd0: 6c 65 6d 65 6e 74 73 42 79 4e 61 6d 65 28 27 74  lementsByName('t
3fe0: 63 6c 5f 76 65 72 73 69 6f 6e 27 29 5b 30 5d 2e  cl_version')[0].
3ff0: 76 61 6c 75 65 3b 0a 09 09 70 6c 61 74 66 6f 72  value;...platfor
4000: 6d 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74  m = document.get
4010: 45 6c 65 6d 65 6e 74 73 42 79 4e 61 6d 65 28 27  ElementsByName('
4020: 70 6c 61 74 66 6f 72 6d 27 29 5b 30 5d 2e 76 61  platform')[0].va
4030: 6c 75 65 3b 0a 0a 3c 3f 0a 09 09 73 65 74 20 61  lue;..<?...set a
4040: 6c 6c 64 69 73 61 62 6c 65 64 6f 70 74 69 6f 6e  lldisabledoption
4050: 73 20 5b 6c 69 73 74 5d 0a 09 09 66 6f 72 65 61  s [list]...forea
4060: 63 68 20 7b 6b 65 79 77 6f 72 64 20 76 61 6c 75  ch {keyword valu
4070: 65 20 64 69 73 61 62 6c 65 6f 70 74 69 6f 6e 73  e disableoptions
4080: 7d 20 24 64 69 73 61 62 6c 65 20 7b 0a 09 09 09  } $disable {....
4090: 66 6f 72 65 61 63 68 20 6f 70 74 69 6f 6e 20 24  foreach option $
40a0: 64 69 73 61 62 6c 65 6f 70 74 69 6f 6e 73 20 7b  disableoptions {
40b0: 0a 09 09 09 09 69 66 20 7b 5b 6c 73 65 61 72 63  .....if {[lsearc
40c0: 68 20 2d 65 78 61 63 74 20 24 61 6c 6c 64 69 73  h -exact $alldis
40d0: 61 62 6c 65 64 6f 70 74 69 6f 6e 73 20 24 6f 70  abledoptions $op
40e0: 74 69 6f 6e 5d 20 3d 3d 20 2d 31 7d 20 7b 0a 09  tion] == -1} {..
40f0: 09 09 09 09 6c 61 70 70 65 6e 64 20 61 6c 6c 64  ....lappend alld
4100: 69 73 61 62 6c 65 64 6f 70 74 69 6f 6e 73 20 24  isabledoptions $
4110: 6f 70 74 69 6f 6e 0a 09 09 09 09 7d 0a 09 09 09  option.....}....
4120: 7d 0a 09 09 7d 0a 0a 09 09 66 6f 72 65 61 63 68  }...}....foreach
4130: 20 6f 70 74 69 6f 6e 20 24 61 6c 6c 64 69 73 61   option $alldisa
4140: 62 6c 65 64 6f 70 74 69 6f 6e 73 20 7b 0a 09 09  bledoptions {...
4150: 09 70 75 74 73 20 22 5c 74 5c 74 65 6e 61 62 6c  .puts "\t\tenabl
4160: 65 4f 70 74 69 6f 6e 28 5c 22 24 6f 70 74 69 6f  eOption(\"$optio
4170: 6e 5c 22 29 3b 22 0a 09 09 7d 0a 0a 09 09 66 6f  n\");"...}....fo
4180: 72 65 61 63 68 20 7b 6b 65 79 77 6f 72 64 20 76  reach {keyword v
4190: 61 6c 75 65 20 64 69 73 61 62 6c 65 6f 70 74 69  alue disableopti
41a0: 6f 6e 73 7d 20 24 64 69 73 61 62 6c 65 20 7b 0a  ons} $disable {.
41b0: 09 09 09 73 65 74 20 63 6f 6d 70 61 72 61 74 6f  ...set comparato
41c0: 72 20 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20  r [string index 
41d0: 24 76 61 6c 75 65 20 30 5d 0a 09 09 09 73 65 74  $value 0]....set
41e0: 20 76 61 6c 75 65 20 5b 73 74 72 69 6e 67 20 72   value [string r
41f0: 61 6e 67 65 20 24 76 61 6c 75 65 20 31 20 65 6e  ange $value 1 en
4200: 64 5d 0a 09 09 09 73 77 69 74 63 68 20 2d 65 78  d]....switch -ex
4210: 61 63 74 20 2d 2d 20 24 63 6f 6d 70 61 72 61 74  act -- $comparat
4220: 6f 72 20 7b 0a 09 09 09 09 22 3c 22 20 2d 20 22  or {....."<" - "
4230: 3e 22 20 7b 0a 09 09 09 09 7d 0a 09 09 09 09 22  >" {.....}....."
4240: 3d 22 20 7b 0a 09 09 09 09 09 73 65 74 20 63 6f  =" {......set co
4250: 6d 70 61 72 61 74 6f 72 20 22 3d 3d 3d 22 0a 09  mparator "==="..
4260: 09 09 09 7d 0a 09 09 09 09 22 21 22 20 7b 0a 09  ...}....."!" {..
4270: 09 09 09 09 73 65 74 20 63 6f 6d 70 61 72 61 74  ....set comparat
4280: 6f 72 20 22 21 3d 3d 22 0a 09 09 09 09 7d 0a 09  or "!==".....}..
4290: 09 09 09 64 65 66 61 75 6c 74 20 7b 0a 09 09 09  ...default {....
42a0: 09 09 73 65 74 20 76 61 6c 75 65 20 22 24 7b 63  ..set value "${c
42b0: 6f 6d 70 61 72 61 74 6f 72 7d 24 7b 76 61 6c 75  omparator}${valu
42c0: 65 7d 22 0a 09 09 09 09 09 73 65 74 20 63 6f 6d  e}"......set com
42d0: 70 61 72 61 74 6f 72 20 22 3d 3d 22 0a 09 09 09  parator "=="....
42e0: 09 7d 0a 09 09 09 7d 0a 0a 09 09 09 69 66 20 7b  .}....}.....if {
42f0: 24 6b 65 79 77 6f 72 64 20 69 6e 20 7b 74 63 6c  $keyword in {tcl
4300: 5f 76 65 72 73 69 6f 6e 20 6b 69 74 63 72 65 61  _version kitcrea
4310: 74 6f 72 5f 76 65 72 73 69 6f 6e 7d 7d 20 7b 0a  tor_version}} {.
4320: 09 09 09 09 73 65 74 20 6b 65 79 77 6f 72 64 20  ....set keyword 
4330: 22 76 65 72 73 69 6f 6e 45 6e 63 6f 64 65 64 28  "versionEncoded(
4340: 24 6b 65 79 77 6f 72 64 29 22 0a 09 09 09 09 73  $keyword)".....s
4350: 65 74 20 76 61 6c 75 65 20 5b 76 65 72 73 69 6f  et value [versio
4360: 6e 45 6e 63 6f 64 65 64 20 24 76 61 6c 75 65 5d  nEncoded $value]
4370: 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09  ....} else {....
4380: 09 73 65 74 20 76 61 6c 75 65 20 22 5c 22 24 76  .set value "\"$v
4390: 61 6c 75 65 5c 22 22 0a 09 09 09 7d 0a 0a 09 09  alue\""....}....
43a0: 09 70 75 74 73 20 22 5c 74 5c 74 69 66 20 28 24  .puts "\t\tif ($
43b0: 6b 65 79 77 6f 72 64 20 24 63 6f 6d 70 61 72 61  keyword $compara
43c0: 74 6f 72 20 24 76 61 6c 75 65 29 20 5c 7b 22 0a  tor $value) \{".
43d0: 0a 09 09 09 66 6f 72 65 61 63 68 20 6f 70 74 69  ....foreach opti
43e0: 6f 6e 20 24 64 69 73 61 62 6c 65 6f 70 74 69 6f  on $disableoptio
43f0: 6e 73 20 7b 0a 09 09 09 09 70 75 74 73 20 22 5c  ns {.....puts "\
4400: 74 5c 74 5c 74 64 69 73 61 62 6c 65 4f 70 74 69  t\t\tdisableOpti
4410: 6f 6e 28 5c 22 24 6f 70 74 69 6f 6e 5c 22 29 3b  on(\"$option\");
4420: 22 0a 09 09 09 7d 0a 0a 09 09 09 70 75 74 73 20  "....}.....puts 
4430: 22 5c 74 5c 74 5c 7d 22 0a 09 09 7d 0a 3f 3e 0a  "\t\t\}"...}.?>.
4440: 09 7d 0a 2d 2d 3e 0a 20 20 20 20 3c 2f 73 63 72  .}.-->.    </scr
4450: 69 70 74 3e 0a 20 20 3c 2f 68 65 61 64 3e 0a 20  ipt>.  </head>. 
4460: 20 3c 62 6f 64 79 20 6f 6e 4c 6f 61 64 3d 22 76   <body onLoad="v
4470: 65 72 69 66 79 4f 70 74 69 6f 6e 73 28 29 3b 22  erifyOptions();"
4480: 3e 0a 20 20 20 20 3c 68 31 3e 4b 69 74 43 72 65  >.    <h1>KitCre
4490: 61 74 6f 72 20 57 65 62 20 49 6e 74 65 72 66 61  ator Web Interfa
44a0: 63 65 3c 2f 68 31 3e 0a 20 20 20 20 3c 66 6f 72  ce</h1>.    <for
44b0: 6d 20 6d 65 74 68 6f 64 3d 22 70 6f 73 74 22 20  m method="post" 
44c0: 65 6e 63 74 79 70 65 3d 22 6d 75 6c 74 69 70 61  enctype="multipa
44d0: 72 74 2f 66 6f 72 6d 2d 64 61 74 61 22 3e 0a 20  rt/form-data">. 
44e0: 20 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 20 20       <table>.   
44f0: 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20       <tr>.      
4500: 20 20 20 20 3c 74 64 3e 4b 69 74 43 72 65 61 74      <td>KitCreat
4510: 6f 72 20 56 65 72 73 69 6f 6e 3a 3c 2f 74 64 3e  or Version:</td>
4520: 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a  .          <td>.
4530: 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 65 6c              <sel
4540: 65 63 74 20 6e 61 6d 65 3d 22 6b 69 74 63 72 65  ect name="kitcre
4550: 61 74 6f 72 5f 76 65 72 73 69 6f 6e 22 20 6f 6e  ator_version" on
4560: 43 68 61 6e 67 65 3d 22 76 65 72 69 66 79 4f 70  Change="verifyOp
4570: 74 69 6f 6e 73 28 29 3b 22 3e 0a 3c 3f 0a 09 66  tions();">.<?..f
4580: 6f 72 65 61 63 68 20 6b 69 74 63 72 65 61 74 6f  oreach kitcreato
4590: 72 5f 76 65 72 73 69 6f 6e 20 5b 6c 73 6f 72 74  r_version [lsort
45a0: 20 2d 64 69 63 74 69 6f 6e 61 72 79 20 5b 61 72   -dictionary [ar
45b0: 72 61 79 20 6e 61 6d 65 73 20 6b 69 74 63 72 65  ray names kitcre
45c0: 61 74 6f 72 5f 76 65 72 73 69 6f 6e 73 5d 5d 20  ator_versions]] 
45d0: 7b 0a 09 09 73 65 74 20 6b 69 74 63 72 65 61 74  {...set kitcreat
45e0: 6f 72 5f 76 65 72 73 69 6f 6e 5f 6e 61 6d 65 20  or_version_name 
45f0: 24 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73  $kitcreator_vers
4600: 69 6f 6e 73 28 24 6b 69 74 63 72 65 61 74 6f 72  ions($kitcreator
4610: 5f 76 65 72 73 69 6f 6e 29 0a 0a 09 09 69 66 20  _version)....if 
4620: 7b 24 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72  {$kitcreator_ver
4630: 73 69 6f 6e 20 3d 3d 20 24 6b 69 74 63 72 65 61  sion == $kitcrea
4640: 74 6f 72 5f 76 65 72 73 69 6f 6e 5f 73 65 6c 65  tor_version_sele
4650: 63 74 65 64 7d 20 7b 0a 09 09 09 73 65 74 20 73  cted} {....set s
4660: 65 6c 65 63 74 65 64 20 22 20 73 65 6c 65 63 74  elected " select
4670: 65 64 22 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09  ed"...} else {..
4680: 09 09 73 65 74 20 73 65 6c 65 63 74 65 64 20 22  ..set selected "
4690: 22 0a 09 09 7d 0a 0a 09 09 70 75 74 73 20 22 20  "...}....puts " 
46a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6f 70               <op
46b0: 74 69 6f 6e 20 76 61 6c 75 65 3d 5c 22 24 7b 6b  tion value=\"${k
46c0: 69 74 63 72 65 61 74 6f 72 5f 76 65 72 73 69 6f  itcreator_versio
46d0: 6e 7d 5c 22 24 7b 73 65 6c 65 63 74 65 64 7d 3e  n}\"${selected}>
46e0: 24 7b 6b 69 74 63 72 65 61 74 6f 72 5f 76 65 72  ${kitcreator_ver
46f0: 73 69 6f 6e 5f 6e 61 6d 65 7d 3c 2f 6f 70 74 69  sion_name}</opti
4700: 6f 6e 3e 22 0a 09 7d 0a 3f 3e 0a 20 20 20 20 20  on>"..}.?>.     
4710: 20 20 20 20 20 20 20 3c 2f 73 65 6c 65 63 74 3e         </select>
4720: 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e  .          </td>
4730: 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20  .        </tr>. 
4740: 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20         <tr>.    
4750: 20 20 20 20 20 20 3c 74 64 3e 54 63 6c 20 56 65        <td>Tcl Ve
4760: 72 73 69 6f 6e 3a 3c 2f 74 64 3e 0a 20 20 20 20  rsion:</td>.    
4770: 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20        <td>.     
4780: 20 20 20 20 20 20 20 3c 73 65 6c 65 63 74 20 6e         <select n
4790: 61 6d 65 3d 22 74 63 6c 5f 76 65 72 73 69 6f 6e  ame="tcl_version
47a0: 22 20 6f 6e 43 68 61 6e 67 65 3d 22 76 65 72 69  " onChange="veri
47b0: 66 79 4f 70 74 69 6f 6e 73 28 29 3b 22 3e 0a 3c  fyOptions();">.<
47c0: 3f 0a 09 66 6f 72 65 61 63 68 20 74 63 6c 5f 76  ?..foreach tcl_v
47d0: 65 72 73 69 6f 6e 20 24 74 63 6c 5f 76 65 72 73  ersion $tcl_vers
47e0: 69 6f 6e 5f 6c 69 73 74 20 7b 0a 09 09 73 65 74  ion_list {...set
47f0: 20 74 63 6c 5f 76 65 72 73 69 6f 6e 5f 6e 61 6d   tcl_version_nam
4800: 65 20 24 74 63 6c 5f 76 65 72 73 69 6f 6e 73 28  e $tcl_versions(
4810: 24 74 63 6c 5f 76 65 72 73 69 6f 6e 29 0a 0a 09  $tcl_version)...
4820: 09 69 66 20 7b 24 74 63 6c 5f 76 65 72 73 69 6f  .if {$tcl_versio
4830: 6e 20 3d 3d 20 24 74 63 6c 5f 76 65 72 73 69 6f  n == $tcl_versio
4840: 6e 5f 73 65 6c 65 63 74 65 64 7d 20 7b 0a 09 09  n_selected} {...
4850: 09 73 65 74 20 73 65 6c 65 63 74 65 64 20 22 20  .set selected " 
4860: 73 65 6c 65 63 74 65 64 22 0a 09 09 7d 20 65 6c  selected"...} el
4870: 73 65 20 7b 0a 09 09 09 73 65 74 20 73 65 6c 65  se {....set sele
4880: 63 74 65 64 20 22 22 0a 09 09 7d 0a 0a 09 09 70  cted ""...}....p
4890: 75 74 73 20 22 20 20 20 20 20 20 20 20 20 20 20  uts "           
48a0: 20 20 20 3c 6f 70 74 69 6f 6e 20 76 61 6c 75 65     <option value
48b0: 3d 5c 22 24 7b 74 63 6c 5f 76 65 72 73 69 6f 6e  =\"${tcl_version
48c0: 7d 5c 22 24 7b 73 65 6c 65 63 74 65 64 7d 3e 24  }\"${selected}>$
48d0: 7b 74 63 6c 5f 76 65 72 73 69 6f 6e 5f 6e 61 6d  {tcl_version_nam
48e0: 65 7d 3c 2f 6f 70 74 69 6f 6e 3e 22 0a 09 7d 0a  e}</option>"..}.
48f0: 3f 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c  ?>.            <
4900: 2f 73 65 6c 65 63 74 3e 0a 20 20 20 20 20 20 20  /select>.       
4910: 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20     </td>.       
4920: 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c   </tr>.        <
4930: 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74  tr>.          <t
4940: 64 3e 50 6c 61 74 66 6f 72 6d 3a 3c 2f 74 64 3e  d>Platform:</td>
4950: 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a  .          <td>.
4960: 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 65 6c              <sel
4970: 65 63 74 20 6e 61 6d 65 3d 22 70 6c 61 74 66 6f  ect name="platfo
4980: 72 6d 22 20 6f 6e 43 68 61 6e 67 65 3d 22 76 65  rm" onChange="ve
4990: 72 69 66 79 4f 70 74 69 6f 6e 73 28 29 3b 22 3e  rifyOptions();">
49a0: 0a 3c 3f 0a 09 66 6f 72 65 61 63 68 20 70 6c 61  .<?..foreach pla
49b0: 74 66 6f 72 6d 20 5b 6c 73 6f 72 74 20 2d 64 69  tform [lsort -di
49c0: 63 74 69 6f 6e 61 72 79 20 5b 61 72 72 61 79 20  ctionary [array 
49d0: 6e 61 6d 65 73 20 70 6c 61 74 66 6f 72 6d 73 5d  names platforms]
49e0: 5d 20 7b 0a 09 09 73 65 74 20 70 6c 61 74 66 6f  ] {...set platfo
49f0: 72 6d 5f 6e 61 6d 65 20 24 70 6c 61 74 66 6f 72  rm_name $platfor
4a00: 6d 73 28 24 70 6c 61 74 66 6f 72 6d 29 0a 09 09  ms($platform)...
4a10: 70 75 74 73 20 22 20 20 20 20 20 20 20 20 20 20  puts "          
4a20: 20 20 20 20 3c 6f 70 74 69 6f 6e 20 76 61 6c 75      <option valu
4a30: 65 3d 5c 22 24 7b 70 6c 61 74 66 6f 72 6d 7d 5c  e=\"${platform}\
4a40: 22 3e 24 7b 70 6c 61 74 66 6f 72 6d 5f 6e 61 6d  ">${platform_nam
4a50: 65 7d 3c 2f 6f 70 74 69 6f 6e 3e 22 0a 09 7d 0a  e}</option>"..}.
4a60: 3f 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c  ?>.            <
4a70: 2f 73 65 6c 65 63 74 3e 0a 20 20 20 20 20 20 20  /select>.       
4a80: 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20     </td>.       
4a90: 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c   </tr>.        <
4aa0: 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74  tr>.          <t
4ab0: 64 3e 4b 69 74 20 4f 70 74 69 6f 6e 73 3a 3c 2f  d>Kit Options:</
4ac0: 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74  td>.          <t
4ad0: 64 3e 0a 3c 3f 20 20 66 6f 72 65 61 63 68 20 70  d>.<?  foreach p
4ae0: 61 63 6b 61 67 65 20 5b 6c 73 6f 72 74 20 2d 64  ackage [lsort -d
4af0: 69 63 74 69 6f 6e 61 72 79 20 5b 61 72 72 61 79  ictionary [array
4b00: 20 6e 61 6d 65 73 20 70 61 63 6b 61 67 65 73 5d   names packages]
4b10: 5d 20 7b 20 3f 3e 0a 20 20 20 20 20 20 20 20 20  ] { ?>.         
4b20: 20 20 20 3c 69 6e 70 75 74 20 74 79 70 65 3d 22     <input type="
4b30: 63 68 65 63 6b 62 6f 78 22 20 6e 61 6d 65 3d 22  checkbox" name="
4b40: 6f 70 74 69 6f 6e 5f 70 61 63 6b 61 67 65 5f 3c  option_package_<
4b50: 3f 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e  ? puts -nonewlin
4b60: 65 20 24 70 61 63 6b 61 67 65 20 3f 3e 22 20 69  e $package ?>" i
4b70: 64 3d 22 6f 70 74 69 6f 6e 5f 70 61 63 6b 61 67  d="option_packag
4b80: 65 5f 3c 3f 20 70 75 74 73 20 2d 6e 6f 6e 65 77  e_<? puts -nonew
4b90: 6c 69 6e 65 20 24 70 61 63 6b 61 67 65 20 3f 3e  line $package ?>
4ba0: 22 3e 50 61 63 6b 61 67 65 3a 20 3c 3f 20 70 75  ">Package: <? pu
4bb0: 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 70  ts -nonewline $p
4bc0: 61 63 6b 61 67 65 73 28 24 70 61 63 6b 61 67 65  ackages($package
4bd0: 29 20 3f 3e 3c 62 72 3e 0a 3c 3f 20 7d 20 3f 3e  ) ?><br>.<? } ?>
4be0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 69 6e  .            <in
4bf0: 70 75 74 20 74 79 70 65 3d 22 63 68 65 63 6b 62  put type="checkb
4c00: 6f 78 22 20 6e 61 6d 65 3d 22 6f 70 74 69 6f 6e  ox" name="option
4c10: 5f 74 68 72 65 61 64 65 64 22 20 69 64 3d 22 6f  _threaded" id="o
4c20: 70 74 69 6f 6e 5f 74 68 72 65 61 64 65 64 22 3e  ption_threaded">
4c30: 4b 69 74 3a 20 54 68 72 65 61 64 65 64 3c 62 72  Kit: Threaded<br
4c40: 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 69  >.            <i
4c50: 6e 70 75 74 20 74 79 70 65 3d 22 63 68 65 63 6b  nput type="check
4c60: 62 6f 78 22 20 6e 61 6d 65 3d 22 6f 70 74 69 6f  box" name="optio
4c70: 6e 5f 64 65 62 75 67 22 20 69 64 3d 22 6f 70 74  n_debug" id="opt
4c80: 69 6f 6e 5f 64 65 62 75 67 22 3e 4b 69 74 3a 20  ion_debug">Kit: 
4c90: 44 65 62 75 67 67 69 6e 67 20 42 75 69 6c 64 3c  Debugging Build<
4ca0: 62 72 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20  br>.            
4cb0: 3c 69 6e 70 75 74 20 74 79 70 65 3d 22 63 68 65  <input type="che
4cc0: 63 6b 62 6f 78 22 20 6e 61 6d 65 3d 22 6f 70 74  ckbox" name="opt
4cd0: 69 6f 6e 5f 6b 69 74 64 6c 6c 22 20 69 64 3d 22  ion_kitdll" id="
4ce0: 6f 70 74 69 6f 6e 5f 6b 69 74 64 6c 6c 22 3e 4b  option_kitdll">K
4cf0: 69 74 3a 20 42 75 69 6c 64 20 4c 69 62 72 61 72  it: Build Librar
4d00: 79 20 28 4b 69 74 44 4c 4c 29 3c 62 72 3e 0a 20  y (KitDLL)<br>. 
4d10: 20 20 20 20 20 20 20 20 20 20 20 3c 69 6e 70 75             <inpu
4d20: 74 20 74 79 70 65 3d 22 63 68 65 63 6b 62 6f 78  t type="checkbox
4d30: 22 20 6e 61 6d 65 3d 22 6f 70 74 69 6f 6e 5f 64  " name="option_d
4d40: 79 6e 61 6d 69 63 74 6b 22 20 69 64 3d 22 6f 70  ynamictk" id="op
4d50: 74 69 6f 6e 5f 64 79 6e 61 6d 69 63 74 6b 22 3e  tion_dynamictk">
4d60: 4b 69 74 3a 20 41 6c 77 61 79 73 20 6c 69 6e 6b  Kit: Always link
4d70: 20 54 6b 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20   Tk dynamically 
4d80: 28 69 66 20 54 6b 20 69 73 20 62 75 69 6c 74 29  (if Tk is built)
4d90: 3c 62 72 3e 0a 20 20 20 20 20 20 20 20 20 20 20  <br>.           
4da0: 20 3c 69 6e 70 75 74 20 74 79 70 65 3d 22 63 68   <input type="ch
4db0: 65 63 6b 62 6f 78 22 20 6e 61 6d 65 3d 22 6f 70  eckbox" name="op
4dc0: 74 69 6f 6e 5f 6d 69 6e 62 75 69 6c 64 22 20 69  tion_minbuild" i
4dd0: 64 3d 22 6f 70 74 69 6f 6e 5f 6d 69 6e 62 75 69  d="option_minbui
4de0: 6c 64 22 3e 4b 69 74 3a 20 22 4d 69 6e 69 6d 61  ld">Kit: "Minima
4df0: 6c 22 20 62 75 69 6c 64 20 28 72 65 6d 6f 76 65  l" build (remove
4e00: 20 65 78 74 72 61 20 70 61 63 6b 61 67 65 73 20   extra packages 
4e10: 73 68 69 70 70 65 64 20 61 73 20 70 61 72 74 20  shipped as part 
4e20: 6f 66 20 54 63 6c 20 61 6e 64 20 72 65 64 75 63  of Tcl and reduc
4e30: 65 20 65 6e 63 6f 64 69 6e 67 73 29 3c 62 72 3e  e encodings)<br>
4e40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 69 6e  .            <in
4e50: 70 75 74 20 74 79 70 65 3d 22 63 68 65 63 6b 62  put type="checkb
4e60: 6f 78 22 20 6e 61 6d 65 3d 22 6f 70 74 69 6f 6e  ox" name="option
4e70: 5f 73 74 61 74 69 63 70 6b 67 73 22 20 69 64 3d  _staticpkgs" id=
4e80: 22 6f 70 74 69 6f 6e 5f 73 74 61 74 69 63 70 6b  "option_staticpk
4e90: 67 73 22 3e 4b 69 74 3a 20 53 74 61 74 69 63 61  gs">Kit: Statica
4ea0: 6c 6c 79 20 6c 69 6e 6b 20 70 61 63 6b 61 67 65  lly link package
4eb0: 73 20 69 6e 20 70 6b 67 73 20 64 69 72 65 63 74  s in pkgs direct
4ec0: 6f 72 79 3c 62 72 3e 0a 20 20 20 20 20 20 20 20  ory<br>.        
4ed0: 20 20 20 20 3c 69 6e 70 75 74 20 74 79 70 65 3d      <input type=
4ee0: 22 63 68 65 63 6b 62 6f 78 22 20 6e 61 6d 65 3d  "checkbox" name=
4ef0: 22 6f 70 74 69 6f 6e 5f 74 63 6c 75 74 66 6d 61  "option_tclutfma
4f00: 78 36 22 20 69 64 3d 22 6f 70 74 69 6f 6e 5f 74  x6" id="option_t
4f10: 63 6c 75 74 66 6d 61 78 36 22 3e 4b 69 74 3a 20  clutfmax6">Kit: 
4f20: 54 43 4c 5f 55 54 46 5f 4d 41 58 3d 36 20 28 69  TCL_UTF_MAX=6 (i
4f30: 6e 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77  ncompatibility w
4f40: 69 74 68 20 73 74 61 6e 64 61 72 64 20 54 63 6c  ith standard Tcl
4f50: 29 3c 62 72 3e 0a 20 20 20 20 20 20 20 20 20 20  )<br>.          
4f60: 20 20 3c 69 6e 70 75 74 20 74 79 70 65 3d 22 63    <input type="c
4f70: 68 65 63 6b 62 6f 78 22 20 6e 61 6d 65 3d 22 6f  heckbox" name="o
4f80: 70 74 69 6f 6e 5f 73 74 61 74 69 63 6c 69 62 73  ption_staticlibs
4f90: 73 6c 22 20 69 64 3d 22 6f 70 74 69 6f 6e 5f 73  sl" id="option_s
4fa0: 74 61 74 69 63 6c 69 62 73 73 6c 22 3e 54 4c 53  taticlibssl">TLS
4fb0: 3a 20 53 74 61 74 69 63 61 6c 6c 79 20 6c 69 6e  : Statically lin
4fc0: 6b 20 74 6f 20 4c 69 62 53 53 4c 3c 62 72 3e 0a  k to LibSSL<br>.
4fd0: 20 20 20 20 20 20 20 20 20 20 20 20 3c 69 6e 70              <inp
4fe0: 75 74 20 74 79 70 65 3d 22 63 68 65 63 6b 62 6f  ut type="checkbo
4ff0: 78 22 20 6e 61 6d 65 3d 22 6f 70 74 69 6f 6e 5f  x" name="option_
5000: 62 75 69 6c 64 6c 69 62 73 73 6c 22 20 69 64 3d  buildlibssl" id=
5010: 22 6f 70 74 69 6f 6e 5f 62 75 69 6c 64 6c 69 62  "option_buildlib
5020: 73 73 6c 22 3e 54 4c 53 3a 20 42 75 69 6c 64 20  ssl">TLS: Build 
5030: 4c 69 62 72 65 53 53 4c 20 66 6f 72 20 74 68 69  LibreSSL for thi
5040: 73 20 70 6c 61 74 66 6f 72 6d 0a 20 20 20 20 20  s platform.     
5050: 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20       </td>.     
5060: 20 20 20 3c 2f 74 72 3e 0a 09 3c 74 72 3e 0a 09     </tr>..<tr>..
5070: 09 3c 74 64 3e 4b 69 74 20 53 74 6f 72 61 67 65  .<td>Kit Storage
5080: 3a 3c 2f 74 64 3e 0a 09 09 3c 74 64 3e 0a 09 09  :</td>...<td>...
5090: 09 3c 73 65 6c 65 63 74 20 6e 61 6d 65 3d 22 6f  .<select name="o
50a0: 70 74 69 6f 6e 5f 73 74 6f 72 61 67 65 22 20 69  ption_storage" i
50b0: 64 3d 22 6f 70 74 69 6f 6e 5f 73 74 6f 72 61 67  d="option_storag
50c0: 65 22 3e 0a 09 09 09 09 3c 6f 70 74 69 6f 6e 20  e">.....<option 
50d0: 76 61 6c 75 65 3d 22 61 75 74 6f 22 3e 41 75 74  value="auto">Aut
50e0: 6f 6d 61 74 69 63 61 6c 6c 79 20 44 65 74 65 72  omatically Deter
50f0: 6d 69 6e 65 64 3c 2f 6f 70 74 69 6f 6e 3e 0a 09  mined</option>..
5100: 09 09 09 3c 6f 70 74 69 6f 6e 20 76 61 6c 75 65  ...<option value
5110: 3d 22 6d 6b 34 22 3e 4d 65 74 61 6b 69 74 3c 2f  ="mk4">Metakit</
5120: 6f 70 74 69 6f 6e 3e 0a 09 09 09 09 3c 6f 70 74  option>.....<opt
5130: 69 6f 6e 20 76 61 6c 75 65 3d 22 7a 69 70 22 3e  ion value="zip">
5140: 5a 69 70 3c 2f 6f 70 74 69 6f 6e 3e 0a 09 09 09  Zip</option>....
5150: 09 3c 6f 70 74 69 6f 6e 20 76 61 6c 75 65 3d 22  .<option value="
5160: 63 76 66 73 22 3e 43 2d 56 46 53 3c 2f 6f 70 74  cvfs">C-VFS</opt
5170: 69 6f 6e 3e 0a 09 09 09 3c 2f 73 65 6c 65 63 74  ion>....</select
5180: 3e 0a 09 09 3c 2f 74 64 3e 0a 09 3c 2f 74 72 3e  >...</td>..</tr>
5190: 0a 3c 21 2d 2d 0a 20 20 20 20 20 20 20 20 3c 74  .<!--.        <t
51a0: 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64  r>.          <td
51b0: 3e 4b 69 74 20 49 63 6f 6e 3a 3c 2f 74 64 3e 0a  >Kit Icon:</td>.
51c0: 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20            <td>. 
51d0: 20 20 20 20 20 20 20 20 20 20 20 3c 69 6e 70 75             <inpu
51e0: 74 20 74 79 70 65 3d 22 66 69 6c 65 22 20 6e 61  t type="file" na
51f0: 6d 65 3d 22 6f 70 74 69 6f 6e 5f 69 63 6f 6e 22  me="option_icon"
5200: 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64  >.          </td
5210: 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a  >.        </tr>.
5220: 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20          <tr>.   
5230: 20 20 20 20 20 20 20 3c 74 64 3e 44 65 73 63 72         <td>Descr
5240: 69 70 74 69 6f 6e 3a 3c 2f 74 64 3e 0a 20 20 20  iption:</td>.   
5250: 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20         <td>.    
5260: 20 20 20 20 20 20 20 20 3c 69 6e 70 75 74 20 74          <input t
5270: 79 70 65 3d 22 74 65 78 74 22 20 6e 61 6d 65 3d  ype="text" name=
5280: 22 6f 70 74 69 6f 6e 5f 64 65 73 63 22 3e 0a 20  "option_desc">. 
5290: 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20           </td>. 
52a0: 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 2d 2d 3e         </tr>.-->
52b0: 0a 20 20 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a  .      </table>.
52c0: 20 20 20 20 20 20 3c 69 6e 70 75 74 20 74 79 70        <input typ
52d0: 65 3d 22 73 75 62 6d 69 74 22 20 6e 61 6d 65 3d  e="submit" name=
52e0: 22 73 75 62 6d 69 74 22 20 76 61 6c 75 65 3d 22  "submit" value="
52f0: 43 72 65 61 74 65 22 3e 0a 20 20 20 20 3c 2f 66  Create">.    </f
5300: 6f 72 6d 3e 0a 20 20 3c 2f 62 6f 64 79 3e 0a 3c  orm>.  </body>.<
5310: 2f 68 74 6d 6c 3e 3c 3f 20 7d 20 3f 3e 0a        /html><? } ?>.