Hex Artifact Content

Artifact 0d787c6d5ec1fa773f0a63082a48b0b4e8a498de:


0000: 23 21 20 2f 62 69 6e 2f 62 61 73 68 0a 0a 66 75  #! /bin/bash..fu
0010: 6e 63 74 69 6f 6e 20 73 65 74 75 70 5f 74 63 6c  nction setup_tcl
0020: 20 28 29 20 7b 0a 09 6c 6f 63 61 6c 20 76 65 72   () {..local ver
0030: 73 20 65 6e 76 66 69 6c 65 0a 0a 09 66 6f 72 20  s envfile...for 
0040: 76 65 72 73 20 69 6e 20 22 24 40 22 3b 20 64 6f  vers in "$@"; do
0050: 0a 09 09 65 6e 76 66 69 6c 65 3d 22 24 7b 50 52  ...envfile="${PR
0060: 4f 4a 52 4f 4f 54 44 49 52 7d 2f 70 6c 61 74 66  OJROOTDIR}/platf
0070: 6f 72 6d 2e 6d 61 67 69 63 2e 65 6e 76 2d 38 2e  orm.magic.env-8.
0080: 35 22 0a 0a 09 09 69 66 20 5b 20 21 20 2d 66 20  5"....if [ ! -f 
0090: 22 24 7b 65 6e 76 66 69 6c 65 7d 22 20 5d 3b 20  "${envfile}" ]; 
00a0: 74 68 65 6e 0a 09 09 09 63 6f 6e 74 69 6e 75 65  then....continue
00b0: 0a 09 09 66 69 0a 0a 09 09 73 6f 75 72 63 65 20  ...fi....source 
00c0: 22 24 7b 65 6e 76 66 69 6c 65 7d 22 0a 0a 09 09  "${envfile}"....
00d0: 62 72 65 61 6b 0a 09 64 6f 6e 65 0a 7d 0a 0a 66  break..done.}..f
00e0: 75 6e 63 74 69 6f 6e 20 73 65 74 75 70 5f 74 63  unction setup_tc
00f0: 6c 38 35 20 28 29 20 7b 0a 09 73 65 74 75 70 5f  l85 () {..setup_
0100: 74 63 6c 20 38 2e 35 20 38 2e 34 0a 7d 0a 0a 66  tcl 8.5 8.4.}..f
0110: 75 6e 63 74 69 6f 6e 20 73 65 74 75 70 5f 74 63  unction setup_tc
0120: 6c 38 34 20 28 29 20 7b 0a 09 73 65 74 75 70 5f  l84 () {..setup_
0130: 74 63 6c 20 38 2e 34 20 38 2e 35 0a 7d 0a 0a 66  tcl 8.4 8.5.}..f
0140: 75 6e 63 74 69 6f 6e 20 6e 6f 74 5f 70 6c 61 74  unction not_plat
0150: 66 6f 72 6d 73 20 28 29 20 7b 0a 09 6c 6f 63 61  forms () {..loca
0160: 6c 20 70 6c 61 74 66 6f 72 6d 0a 0a 09 66 6f 72  l platform...for
0170: 20 70 6c 61 74 66 6f 72 6d 20 69 6e 20 22 24 40   platform in "$@
0180: 22 3b 20 64 6f 0a 09 09 69 66 20 5b 20 22 24 7b  "; do...if [ "${
0190: 50 4c 41 54 46 4f 52 4d 7d 22 20 3d 20 22 24 7b  PLATFORM}" = "${
01a0: 70 6c 61 74 66 6f 72 6d 7d 22 20 5d 3b 20 74 68  platform}" ]; th
01b0: 65 6e 0a 09 09 09 72 6d 20 2d 72 66 20 6f 75 74  en....rm -rf out
01c0: 0a 0a 09 09 09 65 78 69 74 20 30 0a 09 09 66 69  .....exit 0...fi
01d0: 0a 09 64 6f 6e 65 0a 7d 0a 0a 66 75 6e 63 74 69  ..done.}..functi
01e0: 6f 6e 20 6f 6e 6c 79 5f 70 6c 61 74 66 6f 72 6d  on only_platform
01f0: 73 20 28 29 20 7b 0a 09 6c 6f 63 61 6c 20 70 6c  s () {..local pl
0200: 61 74 66 6f 72 6d 0a 0a 09 66 6f 72 20 70 6c 61  atform...for pla
0210: 74 66 6f 72 6d 20 69 6e 20 22 24 40 22 3b 20 64  tform in "$@"; d
0220: 6f 0a 09 09 69 66 20 5b 20 22 24 7b 50 4c 41 54  o...if [ "${PLAT
0230: 46 4f 52 4d 7d 22 20 3d 20 22 24 7b 70 6c 61 74  FORM}" = "${plat
0240: 66 6f 72 6d 7d 22 20 5d 3b 20 74 68 65 6e 0a 09  form}" ]; then..
0250: 09 09 72 65 74 75 72 6e 20 30 0a 09 09 66 69 0a  ..return 0...fi.
0260: 09 64 6f 6e 65 0a 0a 09 72 6d 20 2d 72 66 20 6f  .done...rm -rf o
0270: 75 74 0a 0a 09 65 78 69 74 20 30 0a 7d 0a 0a 66  ut...exit 0.}..f
0280: 75 6e 63 74 69 6f 6e 20 6f 6e 6c 79 5f 70 6c 61  unction only_pla
0290: 74 66 6f 72 6d 73 5f 72 65 67 65 78 70 20 28 29  tforms_regexp ()
02a0: 20 7b 0a 09 6c 6f 63 61 6c 20 70 6c 61 74 66 6f   {..local platfo
02b0: 72 6d 5f 72 65 0a 0a 09 66 6f 72 20 70 6c 61 74  rm_re...for plat
02c0: 66 6f 72 6d 5f 72 65 20 69 6e 20 22 24 40 22 3b  form_re in "$@";
02d0: 20 64 6f 0a 09 09 69 66 20 65 63 68 6f 20 22 24   do...if echo "$
02e0: 7b 50 4c 41 54 46 4f 52 4d 7d 22 20 7c 20 67 72  {PLATFORM}" | gr
02f0: 65 70 20 2d 2d 20 22 24 7b 70 6c 61 74 66 6f 72  ep -- "${platfor
0300: 6d 5f 72 65 7d 22 20 3e 2f 64 65 76 2f 6e 75 6c  m_re}" >/dev/nul
0310: 6c 3b 20 74 68 65 6e 0a 09 09 09 72 65 74 75 72  l; then....retur
0320: 6e 20 30 0a 09 09 66 69 0a 09 64 6f 6e 65 0a 0a  n 0...fi..done..
0330: 09 72 6d 20 2d 72 66 20 6f 75 74 0a 0a 09 65 78  .rm -rf out...ex
0340: 69 74 20 30 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e  it 0.}..function
0350: 20 64 6f 77 6e 6c 6f 61 64 20 28 29 20 7b 0a 09   download () {..
0360: 6c 6f 63 61 6c 20 75 72 6c 20 66 69 6c 65 0a 0a  local url file..
0370: 09 66 69 6c 65 3d 22 24 31 22 0a 09 75 72 6c 3d  .file="$1"..url=
0380: 22 24 32 22 0a 0a 09 69 66 20 5b 20 2d 73 20 22  "$2"...if [ -s "
0390: 24 7b 66 69 6c 65 7d 22 20 5d 3b 20 74 68 65 6e  ${file}" ]; then
03a0: 0a 09 09 72 65 74 75 72 6e 20 30 0a 09 66 69 0a  ...return 0..fi.
03b0: 0a 09 72 6d 20 2d 66 20 22 24 7b 66 69 6c 65 7d  ..rm -f "${file}
03c0: 2e 74 6d 70 22 20 22 24 7b 66 69 6c 65 7d 22 0a  .tmp" "${file}".
03d0: 0a 09 69 66 20 65 63 68 6f 20 22 24 7b 75 72 6c  ..if echo "${url
03e0: 7d 22 20 7c 20 67 72 65 70 20 27 5e 68 74 74 70  }" | grep '^http
03f0: 73 3a 2f 2f 27 20 3e 2f 64 65 76 2f 6e 75 6c 6c  s://' >/dev/null
0400: 3b 20 74 68 65 6e 0a 09 09 77 67 65 74 20 2d 2d  ; then...wget --
0410: 63 61 2d 63 65 72 74 69 66 69 63 61 74 65 3d 27  ca-certificate='
0420: 2e 2e 2f 63 65 72 74 73 2e 70 65 6d 27 20 2d 4f  ../certs.pem' -O
0430: 20 22 24 7b 66 69 6c 65 7d 2e 74 6d 70 22 20 22   "${file}.tmp" "
0440: 24 7b 75 72 6c 7d 22 20 7c 7c 20 72 65 74 75 72  ${url}" || retur
0450: 6e 20 31 0a 09 65 6c 73 65 0a 09 09 77 67 65 74  n 1..else...wget
0460: 20 2d 4f 20 22 24 7b 66 69 6c 65 7d 2e 74 6d 70   -O "${file}.tmp
0470: 22 20 22 24 7b 75 72 6c 7d 22 20 7c 7c 20 72 65  " "${url}" || re
0480: 74 75 72 6e 20 31 0a 09 66 69 0a 0a 09 6d 76 20  turn 1..fi...mv 
0490: 22 24 7b 66 69 6c 65 7d 2e 74 6d 70 22 20 22 24  "${file}.tmp" "$
04a0: 7b 66 69 6c 65 7d 22 0a 7d 0a 0a 66 75 6e 63 74  {file}".}..funct
04b0: 69 6f 6e 20 64 6f 77 6e 6c 6f 61 64 5f 73 72 63  ion download_src
04c0: 20 28 29 20 7b 0a 09 69 66 20 5b 20 21 20 2d 66   () {..if [ ! -f
04d0: 20 22 24 7b 53 52 43 7d 22 20 2d 61 20 2d 6e 20   "${SRC}" -a -n 
04e0: 22 24 7b 53 52 43 7d 22 20 2d 61 20 2d 6e 20 22  "${SRC}" -a -n "
04f0: 24 7b 53 52 43 55 52 4c 7d 22 20 5d 3b 20 74 68  ${SRCURL}" ]; th
0500: 65 6e 0a 09 09 6d 6b 64 69 72 20 2d 70 20 22 24  en...mkdir -p "$
0510: 28 64 69 72 6e 61 6d 65 20 22 24 7b 53 52 43 7d  (dirname "${SRC}
0520: 22 29 22 20 3e 2f 64 65 76 2f 6e 75 6c 6c 20 32  ")" >/dev/null 2
0530: 3e 2f 64 65 76 2f 6e 75 6c 6c 0a 0a 09 09 64 6f  >/dev/null....do
0540: 77 6e 6c 6f 61 64 20 22 24 7b 53 52 43 7d 22 20  wnload "${SRC}" 
0550: 22 24 7b 53 52 43 55 52 4c 7d 22 20 7c 7c 20 65  "${SRCURL}" || e
0560: 78 69 74 20 31 0a 09 66 69 0a 7d 0a 0a 66 75 6e  xit 1..fi.}..fun
0570: 63 74 69 6f 6e 20 65 78 74 72 61 63 74 5f 73 72  ction extract_sr
0580: 63 20 28 29 20 7b 0a 09 72 6d 20 2d 72 66 20 62  c () {..rm -rf b
0590: 75 69 6c 64 0a 09 6d 6b 64 69 72 20 62 75 69 6c  uild..mkdir buil
05a0: 64 0a 0a 09 28 0a 09 09 63 64 20 62 75 69 6c 64  d...(...cd build
05b0: 2f 20 7c 7c 20 65 78 69 74 20 31 0a 0a 09 09 67  / || exit 1....g
05c0: 7a 69 70 20 2d 64 63 20 22 2e 2e 2f 24 7b 53 52  zip -dc "../${SR
05d0: 43 7d 22 20 7c 20 74 61 72 20 2d 78 66 20 2d 0a  C}" | tar -xf -.
05e0: 09 09 63 64 20 22 24 7b 42 55 49 4c 44 44 49 52  ..cd "${BUILDDIR
05f0: 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 09 29 20  }" || exit 1..) 
0600: 7c 7c 20 65 78 69 74 20 31 0a 7d 0a 0a 66 75 6e  || exit 1.}..fun
0610: 63 74 69 6f 6e 20 61 70 70 6c 79 5f 70 61 74 63  ction apply_patc
0620: 68 65 73 20 28 29 20 7b 0a 09 6c 6f 63 61 6c 20  hes () {..local 
0630: 70 61 74 63 68 72 6f 6f 74 20 70 61 74 63 68 64  patchroot patchd
0640: 69 72 20 70 61 74 63 68 66 69 6c 65 73 20 70 61  ir patchfiles pa
0650: 74 63 68 66 69 6c 65 20 69 64 78 0a 0a 09 70 61  tchfile idx...pa
0660: 74 63 68 72 6f 6f 74 3d 22 24 28 70 77 64 29 2f  tchroot="$(pwd)/
0670: 70 61 74 63 68 65 73 22 0a 0a 09 66 6f 72 20 70  patches"...for p
0680: 61 74 63 68 64 69 72 20 69 6e 20 22 24 7b 70 61  atchdir in "${pa
0690: 74 63 68 72 6f 6f 74 7d 2f 61 6c 6c 22 20 22 24  tchroot}/all" "$
06a0: 7b 70 61 74 63 68 72 6f 6f 74 7d 2f 24 7b 56 45  {patchroot}/${VE
06b0: 52 53 7d 22 3b 20 64 6f 0a 09 09 75 6e 73 65 74  RS}"; do...unset
06c0: 20 70 61 74 63 68 66 69 6c 65 73 0a 0a 09 09 69   patchfiles....i
06d0: 66 20 5b 20 2d 66 20 22 24 7b 70 61 74 63 68 64  f [ -f "${patchd
06e0: 69 72 7d 2f 73 65 72 69 65 73 22 20 5d 3b 20 74  ir}/series" ]; t
06f0: 68 65 6e 0a 09 09 09 69 64 78 3d 30 0a 09 09 09  hen....idx=0....
0700: 66 6f 72 20 70 61 74 63 68 66 69 6c 65 20 69 6e  for patchfile in
0710: 20 24 28 63 61 74 20 22 24 7b 70 61 74 63 68 64   $(cat "${patchd
0720: 69 72 7d 2f 73 65 72 69 65 73 22 29 3b 20 64 6f  ir}/series"); do
0730: 0a 09 09 09 09 70 61 74 63 68 66 69 6c 65 73 5b  .....patchfiles[
0740: 24 7b 69 64 78 7d 5d 3d 22 24 7b 70 61 74 63 68  ${idx}]="${patch
0750: 64 69 72 7d 2f 24 7b 70 61 74 63 68 66 69 6c 65  dir}/${patchfile
0760: 7d 22 0a 09 09 09 09 69 64 78 3d 24 5b 24 7b 69  }".....idx=$[${i
0770: 64 78 7d 20 2b 20 31 5d 0a 09 09 09 64 6f 6e 65  dx} + 1]....done
0780: 0a 09 09 65 6c 73 65 0a 09 09 09 70 61 74 63 68  ...else....patch
0790: 66 69 6c 65 73 3d 28 22 24 7b 70 61 74 63 68 64  files=("${patchd
07a0: 69 72 7d 22 2f 2a 2e 64 69 66 66 29 0a 09 09 66  ir}"/*.diff)...f
07b0: 69 0a 0a 09 09 66 6f 72 20 70 61 74 63 68 66 69  i....for patchfi
07c0: 6c 65 20 69 6e 20 22 24 7b 70 61 74 63 68 66 69  le in "${patchfi
07d0: 6c 65 73 5b 40 5d 7d 22 3b 20 64 6f 0a 09 09 09  les[@]}"; do....
07e0: 69 66 20 5b 20 21 20 2d 66 20 22 24 7b 70 61 74  if [ ! -f "${pat
07f0: 63 68 66 69 6c 65 7d 22 20 5d 3b 20 74 68 65 6e  chfile}" ]; then
0800: 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 0a 09 09  .....continue...
0810: 09 66 69 0a 0a 09 09 09 28 0a 09 09 09 09 63 64  .fi.....(.....cd
0820: 20 22 62 75 69 6c 64 2f 24 7b 42 55 49 4c 44 44   "build/${BUILDD
0830: 49 52 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 0a  IR}" || exit 1..
0840: 09 09 09 09 65 63 68 6f 20 22 2a 20 41 70 70 6c  ....echo "* Appl
0850: 79 69 6e 67 20 70 61 74 63 68 20 5c 22 24 7b 70  ying patch \"${p
0860: 61 74 63 68 66 69 6c 65 7d 5c 22 22 0a 09 09 09  atchfile}\""....
0870: 09 22 24 7b 50 41 54 43 48 3a 2d 70 61 74 63 68  ."${PATCH:-patch
0880: 7d 22 20 2d 70 31 20 3c 20 22 24 7b 70 61 74 63  }" -p1 < "${patc
0890: 68 66 69 6c 65 7d 22 0a 09 09 09 29 0a 09 09 64  hfile}"....)...d
08a0: 6f 6e 65 0a 09 64 6f 6e 65 0a 7d 0a 0a 57 4f 52  one..done.}..WOR
08b0: 4b 44 49 52 3d 22 24 7b 54 4d 50 44 49 52 3a 2d  KDIR="${TMPDIR:-
08c0: 2f 74 6d 70 7d 2f 74 63 6c 2d 62 75 69 6c 64 70  /tmp}/tcl-buildp
08d0: 6b 67 73 2d 24 24 24 7b 52 41 4e 44 4f 4d 7d 24  kgs-$$${RANDOM}$
08e0: 7b 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d  {RANDOM}${RANDOM
08f0: 7d 22 0a 50 4c 41 54 44 49 52 3d 22 24 28 70 77  }".PLATDIR="$(pw
0900: 64 29 2f 6f 75 74 2f 24 7b 56 45 52 53 7d 2f 24  d)/out/${VERS}/$
0910: 7b 50 4c 41 54 46 4f 52 4d 7d 22 0a 42 55 49 4c  {PLATFORM}".BUIL
0920: 44 53 59 53 52 4f 4f 54 3d 22 24 28 63 64 20 2e  DSYSROOT="$(cd .
0930: 2e 2f 3b 20 70 77 64 29 22 0a 65 78 70 6f 72 74  ./; pwd)".export
0940: 20 57 4f 52 4b 44 49 52 20 50 4c 41 54 44 49 52   WORKDIR PLATDIR
0950: 20 42 55 49 4c 44 53 59 53 52 4f 4f 54 0a 0a 73   BUILDSYSROOT..s
0960: 65 74 75 70 5f 74 63 6c 38 34 0a                 etup_tcl84.