1
0

build 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #!/bin/sh
  2. # Awk out the version from source
  3. ver="?.?.?"
  4. ver=`grep "char" src/main.c | awk '/egg_version/ {print $4}' | sed -e 's/\"//g' | sed -e 's/\;//g'`
  5. numver=`grep "int" src/main.c | awk '/egg_numver =/ {print $4}' | sed -e 's/\;//g'`
  6. PACKNAME=`grep "PACKNAME " pack/pack.cfg | awk '/PACKNAME/ {print $2}'`
  7. echo "*** wraith v${ver}/${numver} builder ***"
  8. usage()
  9. {
  10. echo "Usage: $0 [-d] [-c] type"
  11. echo " -c - Cleans up old binaries/files before compile (default: off)"
  12. echo " -d - Builds a debug package. (default: off)"
  13. echo " type - One of the following: all, leaf, hub."
  14. }
  15. debug=0
  16. all=0
  17. hub=0
  18. leaf=0
  19. clean=0
  20. type=
  21. while getopts cdh opt ; do
  22. case "$opt" in
  23. # m) mode="$OPTARG" ;;
  24. c) clean=1 ;;
  25. d) debug=1 ;;
  26. h) usage; exit 0 ;;
  27. *) usage; exit 1 ;;
  28. esac
  29. done
  30. shift $(($OPTIND - 1))
  31. if test -z "$1"; then
  32. usage
  33. exit 1
  34. else
  35. if [ $1 = "all" ]; then
  36. all=1
  37. elif [ $1 = "leaf" ]; then
  38. leaf=1
  39. type="leaf"
  40. elif [ $1 = "hub" ]; then
  41. hub=1
  42. type="hub"
  43. else
  44. all=1
  45. # usage
  46. # exit 1
  47. fi
  48. fi
  49. if [ $debug = "1" ]; then
  50. d="d"
  51. else
  52. d=""
  53. fi
  54. if [ $all = "1" ]; then
  55. type="all"
  56. leaf=1
  57. hub=1
  58. fi
  59. ############# CHECK FOR pack/ FILES #################
  60. # Figure what bins we're making
  61. case `uname` in
  62. Linux) os=Linux;;
  63. FreeBSD) case `uname -r` in
  64. 5*) os=FreeBSD5;;
  65. 4*) os=FreeBSD4;;
  66. 3*) os=FreeBSD3;;
  67. esac;;
  68. OpenBSD) os=OpenBSD;;
  69. esac
  70. if test -z $os
  71. then
  72. echo "[!] Automated packaging disabled, `uname` isn't recognized"
  73. fi
  74. echo "[*] Building ${PACKNAME}::${type} for $os"
  75. # Run ./configure, then verify it's ok
  76. echo "[*] Configuring..."
  77. umask 077 >/dev/null
  78. TCLDIR=`cat pack/conf.h 2>&1 | grep "//" | awk '/TCLDIR/ {print $2}' | sed -e 's/\"//g'`
  79. if test -z ${TCLDIR}
  80. then
  81. echo "[*] Searching for TCL in default dirs (edit ${PACKNAME} to change)"
  82. ./configure --silent --disable-tcl-threads
  83. else
  84. echo "[*] Searching for TCL in: $TCLDIR"
  85. ./configure --silent --disable-tcl-threads --with-tcllib=${TCLDIR}/lib/libtcl8.4.a --with-tclinc=${TCLDIR}/include/tcl.h
  86. fi
  87. # make clean, just in case
  88. if [ $clean = "1" ]; then
  89. echo "[*] Cleaning up old binaries/files..."
  90. make clean > /dev/null
  91. fi
  92. _leaf()
  93. {
  94. if [ $leaf = "1" ]; then
  95. # Build leaf and check
  96. echo "[*] Building ${d}leaf..."
  97. make ${d}leaf -s
  98. if ! test -f leaf
  99. then
  100. echo "[!] ${d}leaf build failed"
  101. exit 1
  102. fi
  103. fi
  104. }
  105. _hub()
  106. {
  107. if [ $hub = "1" ]; then
  108. # Build hub and check
  109. echo "[*] Building ${d}hub..."
  110. make ${d}hub -s
  111. if ! test -f hub
  112. then
  113. echo "[!] ${d}hub build failed"
  114. exit 1
  115. fi
  116. fi
  117. }
  118. if [ -f stamp.hub ]; then
  119. _hub
  120. _leaf
  121. else
  122. _leaf
  123. _hub
  124. fi
  125. # Wrap it nicely up into an archive
  126. echo "[*] Packaging..."
  127. if [ $all = "1" ]; then
  128. fls="leaf hub"
  129. elif [ $leaf = "1" ]; then
  130. fls="leaf"
  131. elif [ $hub = "1" ]; then
  132. fls="hub"
  133. fi
  134. if test -n "$d"; then
  135. d="-debug"
  136. fi
  137. for bin in $fls
  138. do
  139. mv -f $bin $bin.$os.$numver${d}
  140. done
  141. tar -zcf ${PACKNAME}.$os.$numver${d}.tgz *.$os.$numver${d}
  142. rm -f *$os.$numver${d}
  143. echo "Binaries are now in '${PACKNAME}.$os.$numver${d}.tgz'."
  144. exit 0