Hex Artifact Content

Artifact e94c49a6089297e972f2697c39c3e3150827766c:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 62 61 73 68 0a 0a 70 6b 67 3d 22 24 28 65 63 68  bash..pkg="$(ech
0020: 6f 20 22 24 31 22 20 7c 20 73 65 64 20 27 73 40  o "$1" | sed 's@
0030: 2f 2a 24 40 40 3b 73 40 5e 5c 2e 2a 2f 2a 40 40  /*$@@;s@^\.*/*@@
0040: 27 29 22 0a 0a 69 66 20 5b 20 2d 7a 20 22 24 7b  ')"..if [ -z "${
0050: 70 6b 67 7d 22 20 5d 3b 20 74 68 65 6e 0a 09 65  pkg}" ]; then..e
0060: 63 68 6f 20 22 55 73 61 67 65 3a 20 62 75 69 6c  cho "Usage: buil
0070: 64 20 3c 70 61 63 6b 61 67 65 3e 22 20 32 3e 26  d <package>" 2>&
0080: 31 0a 0a 09 65 78 69 74 20 31 0a 66 69 0a 0a 66  1...exit 1.fi..f
0090: 75 6e 63 74 69 6f 6e 20 64 65 74 65 72 6d 69 6e  unction determin
00a0: 65 4f 73 41 72 63 68 28 29 20 7b 0a 09 6f 73 3d  eOsArch() {..os=
00b0: 22 24 28 75 6e 61 6d 65 20 2d 73 20 7c 20 64 64  "$(uname -s | dd
00c0: 20 63 6f 6e 76 3d 6c 63 61 73 65 20 32 3e 2f 64   conv=lcase 2>/d
00d0: 65 76 2f 6e 75 6c 6c 29 22 0a 09 61 72 63 68 3d  ev/null)"..arch=
00e0: 22 24 28 75 6e 61 6d 65 20 2d 6d 20 7c 20 64 64  "$(uname -m | dd
00f0: 20 63 6f 6e 76 3d 6c 63 61 73 65 20 32 3e 2f 64   conv=lcase 2>/d
0100: 65 76 2f 6e 75 6c 6c 29 22 0a 0a 09 63 61 73 65  ev/null)"...case
0110: 20 22 24 7b 61 72 63 68 7d 22 20 69 6e 0a 09 09   "${arch}" in...
0120: 69 3f 38 36 29 0a 09 09 09 61 72 63 68 3d 27 69  i?86)....arch='i
0130: 78 38 36 27 0a 09 09 09 3b 3b 0a 09 65 73 61 63  x86'....;;..esac
0140: 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 64 65 74  .}..function det
0150: 65 72 6d 69 6e 65 50 72 65 66 69 78 28 29 20 7b  erminePrefix() {
0160: 0a 09 64 65 74 65 72 6d 69 6e 65 4f 73 41 72 63  ..determineOsArc
0170: 68 0a 0a 09 70 72 65 66 69 78 73 75 66 66 69 78  h...prefixsuffix
0180: 3d 22 24 7b 70 6b 67 7d 2f 24 7b 6f 73 7d 2d 24  ="${pkg}/${os}-$
0190: 7b 61 72 63 68 7d 2f 24 7b 76 65 72 73 69 6f 6e  {arch}/${version
01a0: 7d 22 0a 09 70 72 65 66 69 78 3d 22 2f 6f 70 74  }"..prefix="/opt
01b0: 2f 61 70 70 66 73 2f 24 7b 64 6f 6d 61 69 6e 7d  /appfs/${domain}
01c0: 2f 24 7b 70 72 65 66 69 78 73 75 66 66 69 78 7d  /${prefixsuffix}
01d0: 22 0a 09 64 65 73 74 64 69 72 3d 22 24 28 70 77  "..destdir="$(pw
01e0: 64 29 2f 49 4e 53 54 22 0a 0a 09 6d 6b 64 69 72  d)/INST"...mkdir
01f0: 20 22 24 7b 64 65 73 74 64 69 72 7d 22 20 7c 7c   "${destdir}" ||
0200: 20 64 69 65 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e   die.}..function
0210: 20 70 72 65 63 6f 6e 66 69 67 75 72 65 28 29 20   preconfigure() 
0220: 7b 0a 09 3a 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e  {..:.}..function
0230: 20 70 6f 73 74 63 6f 6e 66 69 67 75 72 65 28 29   postconfigure()
0240: 20 7b 0a 09 3a 0a 7d 0a 0a 66 75 6e 63 74 69 6f   {..:.}..functio
0250: 6e 20 63 6f 6e 66 69 67 75 72 65 28 29 20 7b 0a  n configure() {.
0260: 09 64 79 6e 6c 69 6e 6b 65 72 3d 2f 6f 70 74 2f  .dynlinker=/opt/
0270: 61 70 70 66 73 2f 0a 44 59 4e 4c 49 4e 4b 45 52  appfs/.DYNLINKER
0280: 3d 2f 75 72 69 2f 30 69 6e 73 74 61 6c 6c 2f 73  =/uri/0install/s
0290: 77 2e 6f 63 39 2e 6f 72 67 2f 60 72 65 61 64 6c  w.oc9.org/`readl
02a0: 69 6e 6b 20 2f 75 72 69 2f 30 69 6e 73 74 61 6c  ink /uri/0instal
02b0: 6c 2f 73 77 2e 6f 63 39 2e 6f 72 67 2f 6c 69 62  l/sw.oc9.org/lib
02c0: 2f 6c 64 2d 6c 69 6e 75 78 2e 73 6f 2e 32 20 7c  /ld-linux.so.2 |
02d0: 20 73 65 64 20 73 40 5e 5c 2e 5c 2e 2f 40 40 60   sed s@^\.\./@@`
02e0: 0a 4c 44 46 4c 41 47 53 3d 22 2d 6d 61 72 63 68  .LDFLAGS="-march
02f0: 3d 69 34 38 36 20 24 7b 5a 45 58 54 52 41 4c 49  =i486 ${ZEXTRALI
0300: 42 7d 20 2d 4c 2f 75 72 69 2f 30 69 6e 73 74 61  B} -L/uri/0insta
0310: 6c 6c 2f 73 77 2e 6f 63 39 2e 6f 72 67 2f 6c 69  ll/sw.oc9.org/li
0320: 62 20 2d 57 6c 2c 2d 2d 72 70 61 74 68 20 2d 57  b -Wl,--rpath -W
0330: 6c 2c 2f 75 72 69 2f 30 69 6e 73 74 61 6c 6c 2f  l,/uri/0install/
0340: 73 77 2e 6f 63 39 2e 6f 72 67 2f 6c 69 62 20 2d  sw.oc9.org/lib -
0350: 57 6c 2c 2d 2d 64 79 6e 61 6d 69 63 2d 6c 69 6e  Wl,--dynamic-lin
0360: 6b 65 72 20 2d 57 6c 2c 24 7b 44 59 4e 4c 49 4e  ker -Wl,${DYNLIN
0370: 4b 45 52 7d 22 0a 43 58 58 49 4e 43 4c 55 44 45  KER}".CXXINCLUDE
0380: 53 3d 2f 75 72 69 2f 30 69 6e 73 74 61 6c 6c 2f  S=/uri/0install/
0390: 73 77 2e 6f 63 39 2e 6f 72 67 2f 69 6e 63 6c 75  sw.oc9.org/inclu
03a0: 64 65 2f 63 2b 2b 2f 60 6c 73 20 2d 31 20 2f 75  de/c++/`ls -1 /u
03b0: 72 69 2f 30 69 6e 73 74 61 6c 6c 2f 73 77 2e 6f  ri/0install/sw.o
03c0: 63 39 2e 6f 72 67 2f 69 6e 63 6c 75 64 65 2f 63  c9.org/include/c
03d0: 2b 2b 20 7c 20 73 65 64 20 20 27 73 40 2e 2a 40  ++ | sed  's@.*@
03e0: 26 2e 20 7c 26 40 3b 73 40 5c 28 7c 2e 2a 5c 29  &. |&@;s@\(|.*\)
03f0: 5c 28 5c 2e 5c 29 40 5c 31 2c 40 67 3b 73 40 5e  \(\.\)@\1,@g;s@^
0400: 40 2e 40 3b 73 40 5c 2e 40 2e 2e 40 67 3b 73 40  @.@;s@\.@..@g;s@
0410: 5c 2e 5c 28 5b 30 2d 39 5d 5c 29 5c 2e 40 2e 30  \.\([0-9]\)\.@.0
0420: 30 5c 31 5c 2e 40 67 3b 73 40 5c 2e 5c 28 5b 30  0\1\.@g;s@\.\([0
0430: 2d 39 5d 5b 30 2d 39 5d 5c 29 5c 2e 40 2e 30 5c  -9][0-9]\)\.@.0\
0440: 31 2e 40 67 3b 73 0a 40 5c 2e 5c 2e 40 2e 40 67  1.@g;s.@\.\.@.@g
0450: 3b 73 40 5e 5c 2e 40 40 3b 73 40 5c 2e 24 40 40  ;s@^\.@@;s@\.$@@
0460: 27 20 7c 20 73 6f 72 74 20 7c 20 74 61 69 6c 20  ' | sort | tail 
0470: 2d 31 20 7c 20 63 75 74 20 2d 66 20 32 2d 20 2d  -1 | cut -f 2- -
0480: 64 20 27 7c 27 20 7c 20 73 65 64 20 73 40 2c 40  d '|' | sed s@,@
0490: 2e 40 67 60 0a 0a 65 63 68 6f 20 22 43 46 4c 41  .@g`..echo "CFLA
04a0: 47 53 3d 27 2d 6d 61 72 63 68 3d 69 34 38 36 20  GS='-march=i486 
04b0: 24 7b 5a 45 58 54 52 41 49 4e 43 7d 20 2d 49 2f  ${ZEXTRAINC} -I/
04c0: 75 72 69 2f 30 69 6e 73 74 61 6c 6c 2f 73 77 2e  uri/0install/sw.
04d0: 6f 63 39 2e 6f 72 67 2f 69 6e 63 6c 75 64 65 27  oc9.org/include'
04e0: 22 0a 65 63 68 6f 20 22 43 58 58 46 4c 41 47 53  ".echo "CXXFLAGS
04f0: 3d 27 2d 6d 61 72 63 68 3d 69 34 38 36 20 24 7b  ='-march=i486 ${
0500: 5a 45 58 54 52 41 49 4e 43 7d 20 2d 49 24 7b 43  ZEXTRAINC} -I${C
0510: 58 58 49 4e 43 4c 55 44 45 53 7d 20 2d 49 24 7b  XXINCLUDES} -I${
0520: 43 58 58 49 4e 43 4c 55 44 45 53 7d 2f 69 34 38  CXXINCLUDES}/i48
0530: 36 2d 70 63 2d 6c 69 6e 75 78 2d 67 6e 75 27 22  6-pc-linux-gnu'"
0540: 0a 65 63 68 6f 20 22 43 50 50 46 4c 41 47 53 3d  .echo "CPPFLAGS=
0550: 27 24 7b 5a 45 58 54 52 41 49 4e 43 7d 20 2d 49  '${ZEXTRAINC} -I
0560: 2f 75 72 69 2f 30 69 6e 73 74 61 6c 6c 2f 73 77  /uri/0install/sw
0570: 2e 6f 63 39 2e 6f 72 67 2f 69 6e 63 6c 75 64 65  .oc9.org/include
0580: 20 2d 49 24 7b 43 58 58 49 4e 43 4c 55 44 45 53   -I${CXXINCLUDES
0590: 7d 20 2d 49 24 7b 43 58 58 49 4e 43 4c 55 44 45  } -I${CXXINCLUDE
05a0: 53 7d 2f 69 34 38 36 2d 70 63 2d 6c 69 6e 75 78  S}/i486-pc-linux
05b0: 2d 67 6e 75 27 22 0a 65 63 68 6f 20 22 4c 44 46  -gnu'".echo "LDF
05c0: 4c 41 47 53 3d 27 24 7b 4c 44 46 4c 41 47 53 7d  LAGS='${LDFLAGS}
05d0: 27 22 0a 65 63 68 6f 20 22 43 43 3d 27 67 63 63  '".echo "CC='gcc
05e0: 27 22 0a 65 63 68 6f 20 22 50 41 54 48 3d 27 24  '".echo "PATH='$
05f0: 7b 5a 45 58 54 52 41 50 41 54 48 7d 3a 2f 75 72  {ZEXTRAPATH}:/ur
0600: 69 2f 30 69 6e 73 74 61 6c 6c 2f 73 77 2e 6f 63  i/0install/sw.oc
0610: 39 2e 6f 72 67 2f 62 69 6e 3a 60 66 69 78 5f 70  9.org/bin:`fix_p
0620: 61 74 68 20 24 7b 50 41 54 48 7d 20 73 77 2e 6f  ath ${PATH} sw.o
0630: 63 39 2e 6f 72 67 60 27 22 20 7c 20 66 69 78 5f  c9.org`'" | fix_
0640: 70 61 74 68 0a 65 63 68 6f 20 22 4c 44 5f 52 55  path.echo "LD_RU
0650: 4e 5f 50 41 54 48 3d 27 24 7b 5a 42 55 49 4c 44  N_PATH='${ZBUILD
0660: 50 41 54 48 7d 3a 2f 75 72 69 2f 30 69 6e 73 74  PATH}:/uri/0inst
0670: 61 6c 6c 2f 73 77 2e 6f 63 39 2e 6f 72 67 2f 6c  all/sw.oc9.org/l
0680: 69 62 3a 60 66 69 78 5f 70 61 74 68 20 24 7b 4c  ib:`fix_path ${L
0690: 44 5f 52 55 4e 5f 50 41 54 48 7d 20 73 77 2e 6f  D_RUN_PATH} sw.o
06a0: 63 39 2e 6f 72 67 60 27 22 20 7c 20 66 69 78 5f  c9.org`'" | fix_
06b0: 70 61 74 68 0a 65 63 68 6f 20 22 4c 44 5f 4c 49  path.echo "LD_LI
06c0: 42 52 41 52 59 5f 50 41 54 48 3d 27 2f 75 72 69  BRARY_PATH='/uri
06d0: 2f 30 69 6e 73 74 61 6c 6c 2f 73 77 2e 6f 63 39  /0install/sw.oc9
06e0: 2e 6f 72 67 2f 6c 69 62 3a 60 66 69 78 5f 70 61  .org/lib:`fix_pa
06f0: 74 68 20 24 7b 4c 44 5f 4c 49 42 52 41 52 59 5f  th ${LD_LIBRARY_
0700: 50 41 54 48 7d 20 73 77 2e 6f 63 39 2e 6f 72 67  PATH} sw.oc9.org
0710: 60 27 22 20 7c 20 66 69 78 5f 70 61 74 68 0a 65  `'" | fix_path.e
0720: 63 68 6f 20 22 50 4b 47 5f 43 4f 4e 46 49 47 5f  cho "PKG_CONFIG_
0730: 50 41 54 48 3d 27 24 7b 5a 42 55 49 4c 44 50 41  PATH='${ZBUILDPA
0740: 54 48 7d 2f 6c 69 62 2f 70 6b 67 63 6f 6e 66 69  TH}/lib/pkgconfi
0750: 67 3a 2f 75 72 69 2f 30 69 6e 73 74 61 6c 6c 2f  g:/uri/0install/
0760: 73 77 2e 6f 63 39 2e 6f 72 67 2f 6c 69 62 2f 70  sw.oc9.org/lib/p
0770: 6b 67 63 6f 6e 66 69 67 3a 60 66 69 78 5f 70 61  kgconfig:`fix_pa
0780: 74 68 20 24 7b 50 4b 47 5f 43 4f 4e 46 49 47 5f  th ${PKG_CONFIG_
0790: 50 41 54 48 7d 20 73 77 2e 6f 63 39 2e 6f 72 67  PATH} sw.oc9.org
07a0: 60 27 22 20 7c 20 66 69 78 5f 70 61 74 68 0a 65  `'" | fix_path.e
07b0: 63 68 6f 20 22 4d 41 4e 50 41 54 48 3d 27 24 7b  cho "MANPATH='${
07c0: 5a 42 55 49 4c 44 50 41 54 48 7d 2f 6d 61 6e 3a  ZBUILDPATH}/man:
07d0: 2f 75 72 69 2f 30 69 6e 73 74 61 6c 6c 2f 73 77  /uri/0install/sw
07e0: 2e 6f 63 39 2e 6f 72 67 2f 6d 61 6e 3a 60 66 69  .oc9.org/man:`fi
07f0: 78 5f 70 61 74 68 20 24 7b 4d 41 4e 50 41 54 48  x_path ${MANPATH
0800: 7d 20 73 77 2e 6f 63 39 2e 6f 72 67 60 27 22 20  } sw.oc9.org`'" 
0810: 7c 20 66 69 78 5f 70 61 74 68 0a 65 63 68 6f 20  | fix_path.echo 
0820: 22 65 78 70 6f 72 74 20 43 46 4c 41 47 53 20 43  "export CFLAGS C
0830: 50 50 46 4c 41 47 53 20 4c 44 46 4c 41 47 53 20  PPFLAGS LDFLAGS 
0840: 50 41 54 48 20 4c 44 5f 4c 49 42 52 41 52 59 5f  PATH LD_LIBRARY_
0850: 50 41 54 48 20 4c 44 5f 52 55 4e 5f 50 41 54 48  PATH LD_RUN_PATH
0860: 20 50 4b 47 5f 43 4f 4e 46 49 47 5f 50 41 54 48   PKG_CONFIG_PATH
0870: 20 4d 41 4e 50 41 54 48 20 43 43 22 0a 0a 09 2e   MANPATH CC"....
0880: 2f 63 6f 6e 66 69 67 75 72 65 20 2d 2d 70 72 65  /configure --pre
0890: 66 69 78 3d 22 24 7b 70 72 65 66 69 78 7d 22 20  fix="${prefix}" 
08a0: 2d 2d 73 79 73 63 6f 6e 66 64 69 72 3d 2f 65 74  --sysconfdir=/et
08b0: 63 20 2d 2d 6c 6f 63 61 6c 73 74 61 74 65 64 69  c --localstatedi
08c0: 72 3d 2f 76 61 72 0a 7d 0a 0a 66 75 6e 63 74 69  r=/var.}..functi
08d0: 6f 6e 20 70 72 65 62 75 69 6c 64 28 29 20 7b 0a  on prebuild() {.
08e0: 09 3a 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 70  .:.}..function p
08f0: 6f 73 74 62 75 69 6c 64 28 29 20 7b 0a 09 3a 0a  ostbuild() {..:.
0900: 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 62 75 69 6c  }..function buil
0910: 64 28 29 20 7b 0a 09 67 72 65 70 20 22 44 45 53  d() {..grep "DES
0920: 54 44 49 52 22 20 4d 61 6b 65 66 69 6c 65 20 7c  TDIR" Makefile |
0930: 7c 20 64 69 65 20 22 44 6f 6e 27 74 20 6b 6e 6f  | die "Don't kno
0940: 77 20 68 6f 77 20 74 6f 20 62 75 69 6c 64 20 74  w how to build t
0950: 68 69 73 20 73 6f 66 74 77 61 72 65 22 0a 0a 09  his software"...
0960: 6d 61 6b 65 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e  make.}..function
0970: 20 70 72 65 69 6e 73 74 61 6c 6c 28 29 20 7b 0a   preinstall() {.
0980: 09 3a 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 70  .:.}..function p
0990: 6f 73 74 69 6e 73 74 61 6c 6c 28 29 20 7b 0a 09  ostinstall() {..
09a0: 3a 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 69 6e  :.}..function in
09b0: 73 74 61 6c 6c 28 29 20 7b 0a 09 6d 61 6b 65 20  stall() {..make 
09c0: 69 6e 73 74 61 6c 6c 20 44 45 53 54 44 49 52 3d  install DESTDIR=
09d0: 22 24 7b 64 65 73 74 64 69 72 7d 22 0a 7d 0a 0a  "${destdir}".}..
09e0: 66 75 6e 63 74 69 6f 6e 20 63 6c 65 61 6e 75 70  function cleanup
09f0: 28 29 20 7b 0a 09 63 64 20 22 24 7b 77 6f 72 6b  () {..cd "${work
0a00: 64 69 72 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a  dir}" || exit 1.
0a10: 09 63 64 20 2e 2e 20 7c 7c 20 65 78 69 74 20 31  .cd .. || exit 1
0a20: 0a 09 72 6d 20 2d 72 66 20 22 24 7b 77 6f 72 6b  ..rm -rf "${work
0a30: 64 69 72 7d 22 0a 7d 0a 0a 66 75 6e 63 74 69 6f  dir}".}..functio
0a40: 6e 20 64 69 65 28 29 20 7b 0a 09 6c 6f 63 61 6c  n die() {..local
0a50: 20 6d 65 73 73 61 67 65 0a 0a 09 6d 65 73 73 61   message...messa
0a60: 67 65 3d 22 24 31 22 0a 0a 09 69 66 20 5b 20 2d  ge="$1"...if [ -
0a70: 6e 20 22 24 7b 6d 65 73 73 61 67 65 7d 22 20 5d  n "${message}" ]
0a80: 3b 20 74 68 65 6e 0a 09 09 65 63 68 6f 20 22 65  ; then...echo "e
0a90: 72 72 6f 72 3a 20 24 7b 6d 65 73 73 61 67 65 7d  rror: ${message}
0aa0: 22 20 3e 26 32 0a 09 66 69 0a 0a 09 63 6c 65 61  " >&2..fi...clea
0ab0: 6e 75 70 0a 0a 09 65 78 69 74 20 31 0a 7d 0a 0a  nup...exit 1.}..
0ac0: 63 64 20 22 24 28 64 69 72 6e 61 6d 65 20 22 24  cd "$(dirname "$
0ad0: 28 77 68 69 63 68 20 22 24 30 22 29 22 29 22 20  (which "$0")")" 
0ae0: 7c 7c 20 65 78 69 74 20 31 0a 0a 69 66 20 5b 20  || exit 1..if [ 
0af0: 2d 66 20 27 62 75 69 6c 64 2e 63 6f 6e 66 27 20  -f 'build.conf' 
0b00: 5d 3b 20 74 68 65 6e 0a 09 2e 20 27 62 75 69 6c  ]; then... 'buil
0b10: 64 2e 63 6f 6e 66 27 0a 66 69 0a 0a 69 66 20 5b  d.conf'.fi..if [
0b20: 20 2d 64 20 22 70 6b 67 73 2f 24 7b 70 6b 67 7d   -d "pkgs/${pkg}
0b30: 22 20 5d 3b 20 74 68 65 6e 0a 09 70 6b 67 64 69  " ]; then..pkgdi
0b40: 72 3d 22 70 6b 67 73 2f 24 7b 70 6b 67 7d 22 0a  r="pkgs/${pkg}".
0b50: 09 70 6b 67 66 69 6c 65 3d 22 24 7b 70 6b 67 64  .pkgfile="${pkgd
0b60: 69 72 7d 2f 69 6e 66 6f 22 0a 65 6c 73 65 0a 09  ir}/info".else..
0b70: 70 6b 67 66 69 6c 65 3d 22 70 6b 67 73 2f 24 7b  pkgfile="pkgs/${
0b80: 70 6b 67 7d 22 0a 09 70 6b 67 64 69 72 3d 22 24  pkg}"..pkgdir="$
0b90: 7b 70 6b 67 66 69 6c 65 7d 22 0a 66 69 0a 70 6b  {pkgfile}".fi.pk
0ba0: 67 64 61 74 65 3d 22 24 28 66 69 6e 64 20 22 24  gdate="$(find "$
0bb0: 7b 70 6b 67 64 69 72 7d 22 20 2d 74 79 70 65 20  {pkgdir}" -type 
0bc0: 66 20 2d 70 72 69 6e 74 66 20 27 25 54 59 25 54  f -printf '%TY%T
0bd0: 6d 25 54 64 25 54 48 25 54 4d 2e 25 54 53 5c 6e  m%Td%TH%TM.%TS\n
0be0: 27 20 7c 20 63 75 74 20 2d 66 20 31 2d 32 20 2d  ' | cut -f 1-2 -
0bf0: 64 20 27 2e 27 20 7c 20 73 6f 72 74 20 2d 6e 20  d '.' | sort -n 
0c00: 7c 20 74 61 69 6c 20 2d 6e 20 31 29 22 0a 0a 2e  | tail -n 1)"...
0c10: 20 22 24 7b 70 6b 67 66 69 6c 65 7d 22 0a 0a 61   "${pkgfile}"..a
0c20: 72 63 68 69 76 65 64 69 72 3d 22 24 28 70 77 64  rchivedir="$(pwd
0c30: 29 2f 41 52 43 48 49 56 45 22 0a 77 6f 72 6b 64  )/ARCHIVE".workd
0c40: 69 72 3d 22 77 6f 72 6b 64 69 72 2d 24 24 24 7b  ir="workdir-$$${
0c50: 52 41 4e 44 4f 4d 7d 24 7b 52 41 4e 44 4f 4d 7d  RANDOM}${RANDOM}
0c60: 24 7b 52 41 4e 44 4f 4d 7d 22 0a 6d 6b 64 69 72  ${RANDOM}".mkdir
0c70: 20 22 24 7b 77 6f 72 6b 64 69 72 7d 22 20 22 24   "${workdir}" "$
0c80: 7b 61 72 63 68 69 76 65 64 69 72 7d 22 0a 63 64  {archivedir}".cd
0c90: 20 22 24 7b 77 6f 72 6b 64 69 72 7d 22 20 7c 7c   "${workdir}" ||
0ca0: 20 65 78 69 74 20 31 0a 77 6f 72 6b 64 69 72 3d   exit 1.workdir=
0cb0: 22 24 28 70 77 64 29 22 0a 0a 23 20 44 6f 77 6e  "$(pwd)"..# Down
0cc0: 6c 6f 61 64 0a 23 23 20 43 6c 65 61 6e 75 70 0a  load.## Cleanup.
0cd0: 72 6d 20 2d 66 20 73 72 63 2e 6e 65 77 20 73 72  rm -f src.new sr
0ce0: 63 0a 0a 23 23 20 46 65 74 63 68 20 66 69 6c 65  c..## Fetch file
0cf0: 0a 77 67 65 74 20 2d 4f 20 73 72 63 2e 6e 65 77  .wget -O src.new
0d00: 20 22 24 7b 75 72 6c 7d 22 20 7c 7c 20 65 78 69   "${url}" || exi
0d10: 74 20 31 0a 0a 23 23 20 56 65 72 69 66 79 20 73  t 1..## Verify s
0d20: 69 67 6e 61 74 75 72 65 0a 23 23 23 20 58 58 58  ignature.### XXX
0d30: 3a 54 4f 44 4f 0a 0a 23 23 20 4d 6f 76 65 20 66  :TODO..## Move f
0d40: 69 6c 65 20 69 6e 74 6f 20 70 6c 61 63 65 0a 6d  ile into place.m
0d50: 76 20 73 72 63 2e 6e 65 77 20 73 72 63 0a 0a 23  v src.new src..#
0d60: 20 44 65 63 6f 6d 70 72 65 73 73 20 61 72 63 68   Decompress arch
0d70: 69 76 65 0a 23 23 20 44 65 74 65 72 6d 69 6e 65  ive.## Determine
0d80: 20 74 79 70 65 20 6f 66 20 61 72 63 68 69 76 65   type of archive
0d90: 0a 63 61 73 65 20 22 24 7b 75 72 6c 7d 22 20 69  .case "${url}" i
0da0: 6e 0a 09 2a 2e 74 61 72 2e 78 7a 7c 2a 2e 74 61  n..*.tar.xz|*.ta
0db0: 72 2e 78 7a 27 3f 27 2a 7c 2a 2e 74 78 7a 29 0a  r.xz'?'*|*.txz).
0dc0: 09 09 64 65 63 6f 6d 70 72 65 73 73 3d 27 78 7a  ..decompress='xz
0dd0: 27 0a 09 09 3b 3b 0a 09 2a 2e 74 61 72 2e 67 7a  '...;;..*.tar.gz
0de0: 7c 2a 2e 74 61 72 2e 67 7a 27 3f 27 2a 7c 2a 2e  |*.tar.gz'?'*|*.
0df0: 74 67 7a 29 0a 09 09 64 65 63 6f 6d 70 72 65 73  tgz)...decompres
0e00: 73 3d 27 67 7a 69 70 27 0a 09 09 3b 3b 0a 09 2a  s='gzip'...;;..*
0e10: 2e 74 61 72 2e 62 7a 32 7c 2a 2e 74 61 72 2e 62  .tar.bz2|*.tar.b
0e20: 7a 32 27 3f 27 2a 7c 2a 2e 74 62 7a 32 29 0a 09  z2'?'*|*.tbz2)..
0e30: 09 64 65 63 6f 6d 70 72 65 73 73 3d 27 62 7a 69  .decompress='bzi
0e40: 70 32 27 0a 09 09 3b 3b 0a 09 2a 2e 7a 69 70 7c  p2'...;;..*.zip|
0e50: 2a 2e 7a 69 70 27 3f 27 2a 29 0a 09 09 64 65 63  *.zip'?'*)...dec
0e60: 6f 6d 70 72 65 73 73 3d 27 75 6e 7a 69 70 27 0a  ompress='unzip'.
0e70: 09 09 3b 3b 0a 09 2a 29 0a 09 09 65 63 68 6f 20  ..;;..*)...echo 
0e80: 22 55 6e 6b 6e 6f 77 6e 20 63 6f 6d 70 72 65 73  "Unknown compres
0e90: 73 69 6f 6e 20 6d 65 74 68 6f 64 3a 20 24 7b 75  sion method: ${u
0ea0: 72 6c 7d 22 20 3e 26 32 0a 0a 09 09 65 78 69 74  rl}" >&2....exit
0eb0: 20 31 0a 09 09 3b 3b 0a 65 73 61 63 0a 0a 23 23   1...;;.esac..##
0ec0: 20 44 6f 20 64 65 63 6f 6d 70 72 65 73 73 69 6f   Do decompressio
0ed0: 6e 0a 63 61 73 65 20 22 24 7b 64 65 63 6f 6d 70  n.case "${decomp
0ee0: 72 65 73 73 7d 22 20 69 6e 0a 09 75 6e 7a 69 70  ress}" in..unzip
0ef0: 29 0a 09 09 75 6e 7a 69 70 20 27 73 72 63 27 20  )...unzip 'src' 
0f00: 7c 7c 20 64 69 65 20 27 55 6e 61 62 6c 65 20 74  || die 'Unable t
0f10: 6f 20 75 6e 63 6f 6d 70 72 65 73 73 20 61 72 63  o uncompress arc
0f20: 68 69 76 65 27 0a 09 09 3b 3b 0a 09 2a 29 0a 09  hive'...;;..*)..
0f30: 09 22 24 7b 64 65 63 6f 6d 70 72 65 73 73 7d 22  ."${decompress}"
0f40: 20 2d 64 63 20 73 72 63 20 7c 20 74 61 72 20 2d   -dc src | tar -
0f50: 78 66 20 2d 20 7c 7c 20 64 69 65 20 27 55 6e 61  xf - || die 'Una
0f60: 62 6c 65 20 74 6f 20 75 6e 63 6f 6d 70 72 65 73  ble to uncompres
0f70: 73 20 61 72 63 68 69 76 65 27 0a 09 09 3b 3b 0a  s archive'...;;.
0f80: 65 73 61 63 0a 0a 23 23 20 43 6c 65 61 6e 75 70  esac..## Cleanup
0f90: 20 73 6f 75 72 63 65 0a 72 6d 20 2d 66 20 73 72   source.rm -f sr
0fa0: 63 0a 0a 23 20 49 66 20 77 65 20 6a 75 73 74 20  c..# If we just 
0fb0: 68 61 76 65 20 6f 6e 65 20 64 69 72 65 63 74 6f  have one directo
0fc0: 72 79 2c 20 75 73 65 20 74 68 61 74 20 64 69 72  ry, use that dir
0fd0: 65 63 74 6f 72 79 0a 64 69 72 3d 22 24 28 65 63  ectory.dir="$(ec
0fe0: 68 6f 20 2a 29 22 0a 69 66 20 5b 20 2d 65 20 22  ho *)".if [ -e "
0ff0: 24 7b 64 69 72 7d 22 20 5d 3b 20 74 68 65 6e 0a  ${dir}" ]; then.
1000: 09 6d 76 20 22 24 7b 64 69 72 7d 22 2f 2a 20 2e  .mv "${dir}"/* .
1010: 0a 66 69 0a 0a 23 20 53 74 61 72 74 20 6c 6f 67  .fi..# Start log
1020: 67 69 6e 67 0a 73 65 74 20 2d 78 0a 0a 23 20 44  ging.set -x..# D
1030: 65 74 65 72 6d 69 6e 65 20 70 72 6f 70 65 72 74  etermine propert
1040: 69 65 73 0a 64 65 74 65 72 6d 69 6e 65 50 72 65  ies.determinePre
1050: 66 69 78 0a 0a 23 20 53 74 61 72 74 20 74 68 65  fix..# Start the
1060: 20 62 75 69 6c 64 0a 70 72 65 63 6f 6e 66 69 67   build.preconfig
1070: 75 72 65 20 7c 7c 20 64 69 65 20 27 70 72 65 63  ure || die 'prec
1080: 6f 6e 66 69 67 75 72 65 20 66 61 69 6c 65 64 27  onfigure failed'
1090: 0a 63 6f 6e 66 69 67 75 72 65 20 7c 7c 20 64 69  .configure || di
10a0: 65 20 27 63 6f 6e 66 69 67 75 72 65 20 66 61 69  e 'configure fai
10b0: 6c 65 64 27 0a 70 6f 73 74 63 6f 6e 66 69 67 75  led'.postconfigu
10c0: 72 65 20 7c 7c 20 64 69 65 20 27 70 6f 73 74 63  re || die 'postc
10d0: 6f 6e 66 69 67 75 72 65 20 66 61 69 6c 65 64 27  onfigure failed'
10e0: 0a 0a 70 72 65 62 75 69 6c 64 20 7c 7c 20 64 69  ..prebuild || di
10f0: 65 20 27 70 72 65 62 75 69 6c 64 20 66 61 69 6c  e 'prebuild fail
1100: 65 64 27 0a 62 75 69 6c 64 20 7c 7c 20 64 69 65  ed'.build || die
1110: 20 27 62 75 69 6c 64 20 66 61 69 6c 65 64 27 0a   'build failed'.
1120: 70 6f 73 74 62 75 69 6c 64 20 7c 7c 20 64 69 65  postbuild || die
1130: 20 27 70 6f 73 74 62 75 69 6c 64 20 66 61 69 6c   'postbuild fail
1140: 65 64 27 0a 0a 70 72 65 69 6e 73 74 61 6c 6c 20  ed'..preinstall 
1150: 7c 7c 20 64 69 65 20 27 70 72 65 69 6e 73 74 61  || die 'preinsta
1160: 6c 6c 20 66 61 69 6c 65 64 27 0a 69 6e 73 74 61  ll failed'.insta
1170: 6c 6c 20 7c 7c 20 64 69 65 20 27 69 6e 73 74 61  ll || die 'insta
1180: 6c 6c 20 66 61 69 6c 65 64 27 0a 70 6f 73 74 69  ll failed'.posti
1190: 6e 73 74 61 6c 6c 20 7c 7c 20 64 69 65 20 27 70  nstall || die 'p
11a0: 6f 73 74 69 6e 73 74 61 6c 6c 20 66 61 69 6c 65  ostinstall faile
11b0: 64 27 0a 0a 28 0a 09 61 70 70 64 69 72 3d 22 24  d'..(..appdir="$
11c0: 28 61 70 70 66 73 69 6e 73 74 61 6c 6c 64 69 72  (appfsinstalldir
11d0: 29 2f 24 7b 70 72 65 66 69 78 73 75 66 66 69 78  )/${prefixsuffix
11e0: 7d 22 0a 09 6d 6b 64 69 72 20 2d 70 20 22 24 7b  }"..mkdir -p "${
11f0: 61 70 70 64 69 72 7d 22 0a 0a 09 63 64 20 22 24  appdir}"...cd "$
1200: 7b 64 65 73 74 64 69 72 7d 2f 24 7b 70 72 65 66  {destdir}/${pref
1210: 69 78 7d 22 20 7c 7c 20 65 78 69 74 20 31 0a 09  ix}" || exit 1..
1220: 63 70 20 2d 72 70 20 2a 20 22 24 7b 61 70 70 64  cp -rp * "${appd
1230: 69 72 7d 22 0a 09 66 69 6e 64 20 22 24 7b 61 70  ir}"..find "${ap
1240: 70 64 69 72 7d 22 20 2d 70 72 69 6e 74 30 20 7c  pdir}" -print0 |
1250: 20 78 61 72 67 73 20 2d 30 20 74 6f 75 63 68 20   xargs -0 touch 
1260: 2d 74 20 22 24 7b 70 6b 67 64 61 74 65 7d 22 0a  -t "${pkgdate}".
1270: 29 0a 0a 63 6c 65 61 6e 75 70 0a 0a 65 78 69 74  )..cleanup..exit
1280: 20 30 0a                                          0.