build 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #!/bin/sh
  2. # Awk out the version from source
  3. ver="?.?.?"
  4. ver=`cat src/main.c 2>&1 | grep "char" | awk '/egg_version/ {print $4}' | sed -e 's/\"//g' | sed -e 's/\;//g'`
  5. numver=`cat src/main.c 2>&1 | grep "int" | awk '/egg_numver =/ {print $4}' | sed -e 's/\;//g'`
  6. PACKNAME=`cat pack/pack.cfg | grep "PACKNAME" | grep -v "PACKNAME:" | 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. (default: all)"
  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. packname=${PACKNAME}
  60. ############# CHECK FOR pack/ FILES #################
  61. # Figure what bins we're making
  62. case `uname` in
  63. Linux) os=Linux;;
  64. FreeBSD) case `uname -r` in
  65. 5*) os=FreeBSD5;;
  66. 4*) os=FreeBSD4;;
  67. 3*) os=FreeBSD3;;
  68. esac;;
  69. OpenBSD) os=OpenBSD;;
  70. esac
  71. if test -z $os
  72. then
  73. echo "[!] Automated packaging disabled, `uname` isn't recognized"
  74. fi
  75. echo "[*] Building ${PACKNAME}::${type} for $os"
  76. # Run ./configure, then verify it's ok
  77. echo "[*] Configuring..."
  78. umask 077 >/dev/null
  79. TCLDIR=`cat pack/conf.h 2>&1 | grep "//" | awk '/TCLDIR/ {print $2}' | sed -e 's/\"//g'`
  80. if test -z ${TCLDIR}
  81. then
  82. echo "[*] Searching for TCL in default dirs (edit $packname to change)"
  83. ./configure --silent --disable-tcl-threads
  84. else
  85. echo "[*] Searching for TCL in: $TCLDIR"
  86. ./configure --silent --disable-tcl-threads --with-tcllib=${TCLDIR}/lib/libtcl8.4.a --with-tclinc=${TCLDIR}/include/tcl.h
  87. fi
  88. # make clean, just in case
  89. if [ $clean = "1" ]; then
  90. echo "[*] Cleaning up old binaries/files..."
  91. make clean > /dev/null
  92. fi
  93. _leaf()
  94. {
  95. if [ $leaf = "1" ]; then
  96. # Build leaf and check
  97. echo "[*] Building ${d}leaf..."
  98. make ${d}leaf -s
  99. if ! test -f leaf
  100. then
  101. echo "[!] ${d}leaf build failed"
  102. exit 1
  103. fi
  104. fi
  105. }
  106. _hub()
  107. {
  108. if [ $hub = "1" ]; then
  109. # Build hub and check
  110. echo "[*] Building ${d}hub..."
  111. make ${d}hub -s
  112. if ! test -f hub
  113. then
  114. echo "[!] ${d}hub build failed"
  115. exit 1
  116. fi
  117. fi
  118. }
  119. if [ -f stamp.hub ]; then
  120. _hub
  121. _leaf
  122. else
  123. _leaf
  124. _hub
  125. fi
  126. # Wrap it nicely up into an archive
  127. echo "[*] Packaging..."
  128. packname=`basename $packname .cfg`
  129. if [ $all = "1" ]; then
  130. fls="leaf hub"
  131. elif [ $leaf = "1" ]; then
  132. fls="leaf"
  133. elif [ $hub = "1" ]; then
  134. fls="hub"
  135. fi
  136. if test -n "$d"; then
  137. d="-debug"
  138. fi
  139. for bin in $fls
  140. do
  141. mv -f $bin $bin.$os.$numver${d}
  142. done
  143. tar -zcf $packname.$os.$numver${d}.tgz *.$os.$numver${d}
  144. rm -f *.$os.$numver${d}
  145. echo "Binaries are now in '$packname.$os.$numver${d}.tgz'."
  146. exit 0