Annotation of ircnowd/contrib/platformtest.sh, Revision 1.1
1.1 ! tomglok 1: #!/bin/sh
! 2: #
! 3: # ngIRCd -- The Next Generation IRC Daemon
! 4: # Copyright (c)2001-2016 Alexander Barton (alex@barton.de) and Contributors
! 5: #
! 6: # This program is free software; you can redistribute it and/or modify
! 7: # it under the terms of the GNU General Public License as published by
! 8: # the Free Software Foundation; either version 2 of the License, or
! 9: # (at your option) any later version.
! 10: # Please read the file COPYING, README and AUTHORS for more information.
! 11: #
! 12:
! 13: # This script analyzes the build process of ngIRCd and generates output
! 14: # suitable for inclusion in doc/Platforms.txt -- please send reports
! 15: # to the ngIRCd mailing list: <ngircd-ml@ngircd.barton.de>.
! 16:
! 17: NAME=$(basename "$0")
! 18: VERBOSE=
! 19: CLEAN=1
! 20:
! 21: PLATFORM=
! 22: COMPILER="unknown"
! 23: VERSION="unknown"
! 24: DATE=$(date "+%y-%m-%d")
! 25: COMMENT=
! 26:
! 27: R_CONFIGURE=
! 28: R_MAKE=
! 29: R_CHECK=
! 30: R_CHECK_Y="?"
! 31: R_RUN=
! 32:
! 33: SRC_D=$(dirname "$0")
! 34: MY_D="$PWD"
! 35:
! 36: [ -n "$MAKE" ] || MAKE="make"
! 37: export MAKE CC
! 38:
! 39: while [ $# -gt 0 ]; do
! 40: case "$1" in
! 41: "-v")
! 42: VERBOSE=1
! 43: ;;
! 44: "-x")
! 45: CLEAN=
! 46: ;;
! 47: *)
! 48: echo "Usage: $NAME [-v] [-x]"
! 49: echo
! 50: echo " -v Verbose output"
! 51: echo " -x Don't regenerate build system, even when possible"
! 52: echo
! 53: exit 2
! 54: esac
! 55: shift
! 56: done
! 57:
! 58: for cmd in telnet expect; do
! 59: command -v "$cmd" >/dev/null 2>&1 \
! 60: || echo "$NAME: WARNING: $cmd(1) not found, \"make check\" won't run all tests!"
! 61: done
! 62:
! 63: echo "$NAME: Checking ngIRCd base source directory ..."
! 64: grep "ngIRCd" "$SRC_D/ChangeLog" >/dev/null 2>&1
! 65: if [ $? -ne 0 ]; then
! 66: grep "ngIRCd" "$SRC_D/../ChangeLog" >/dev/null 2>&1
! 67: if [ $? -ne 0 ]; then
! 68: echo "$NAME: ngIRCd base source directory not found!?"
! 69: exit 1
! 70: fi
! 71: SRC_D="$SRC_D/.."
! 72: fi
! 73: echo "$NAME: - source directory: $SRC_D"
! 74: echo "$NAME: - working directory: $MY_D"
! 75:
! 76: echo "$NAME: Checking for GIT tree ..."
! 77: if [ -d "$SRC_D/.git" ]; then
! 78: echo "$NAME: Checking for \"git\" command ..."
! 79: git version >/dev/null 2>&1
! 80: if [ $? -eq 0 ] && [ -n "$CLEAN" ]; then
! 81: echo "$NAME: Running \"git clean\" ..."
! 82: cd "$SRC_D" || exit 1
! 83: if [ -n "$VERBOSE" ]; then
! 84: git clean -dxf
! 85: else
! 86: git clean -dxf >/dev/null
! 87: fi
! 88: cd "$MY_D" || exit 1
! 89: fi
! 90: fi
! 91:
! 92: echo "$NAME: Checking for \"$SRC_D/configure\" script ..."
! 93: if [ ! -r "$SRC_D/configure" ]; then
! 94: echo "$NAME: Running \"$SRC_D/autogen.sh\" ..."
! 95: cd "$SRC_D" || exit 1
! 96: if [ -n "$VERBOSE" ]; then
! 97: ./autogen.sh
! 98: else
! 99: ./autogen.sh >/dev/null
! 100: fi
! 101: if [ $? -ne 0 ]; then
! 102: echo "$NAME: \"$SRC_D/autogen.sh\" script failed, aborting!"
! 103: exit 1
! 104: fi
! 105: cd "$MY_D" || exit 1
! 106: fi
! 107:
! 108: if [ -r "$SRC_D/configure" ]; then
! 109: echo "$NAME: Running \"$SRC_D/configure\" script ..."
! 110: if [ -n "$VERBOSE" ]; then
! 111: "$SRC_D/configure" -C
! 112: else
! 113: "$SRC_D/configure" -C >/dev/null
! 114: fi
! 115: if [ $? -eq 0 ] && [ -r ./Makefile ]; then
! 116: R_CONFIGURE=1
! 117: rm -f "src/ngircd/ngircd"
! 118: echo "$NAME: Running \"$MAKE\" ..."
! 119: if [ -n "$VERBOSE" ]; then
! 120: "$MAKE"
! 121: else
! 122: "$MAKE" >/dev/null
! 123: fi
! 124: if [ $? -eq 0 ] && [ -x src/ngircd/ngircd ]; then
! 125: R_MAKE=1
! 126: echo "$NAME: Running \"$MAKE check\" ..."
! 127: if [ -n "$VERBOSE" ]; then
! 128: "$MAKE" check
! 129: else
! 130: "$MAKE" check >/dev/null
! 131: fi
! 132: if [ $? -eq 0 ]; then
! 133: R_CHECK=1
! 134: R_RUN=$R_CHECK
! 135: [ -r ./src/testsuite/tests-skipped.lst ] \
! 136: && R_CHECK_Y="y" || R_CHECK_Y="Y"
! 137: else
! 138: ./src/ngircd/ngircd --help 2>/dev/null \
! 139: | grep "^ngIRCd" >/dev/null
! 140: [ $? -eq 0 ] && R_RUN=1
! 141: fi
! 142: fi
! 143: fi
! 144: fi
! 145:
! 146: # Get target platform information
! 147: if [ -r "src/config.h" ]; then
! 148: CPU=$(grep "HOST_CPU" "src/config.h" | cut -d'"' -f2)
! 149: OS=$(grep "HOST_OS" "src/config.h" | cut -d'"' -f2)
! 150: VENDOR=$(grep "HOST_VENDOR" "src/config.h" | cut -d'"' -f2)
! 151: PLATFORM="$CPU/$VENDOR/$OS"
! 152: fi
! 153: if [ -z "$PLATFORM" ]; then
! 154: PLATFORM="$(uname 2>/dev/null) $(uname -r 2>/dev/null), $(uname -m 2>/dev/null)"
! 155: fi
! 156:
! 157: # Get compiler information
! 158: if [ -r "Makefile" ]; then
! 159: CC=$(grep "^CC = " Makefile | cut -d' ' -f3)
! 160: $CC --version 2>&1 | grep -i "GCC" >/dev/null
! 161: if [ $? -eq 0 ]; then
! 162: # GCC, or compiler that mimics GCC
! 163: $CC --version 2>&1 | grep -i "Open64" >/dev/null
! 164: if [ $? -eq 0 ]; then
! 165: COMPILER="Open64"
! 166: else
! 167: COMPILER=$($CC --version | head -1 \
! 168: | cut -d')' -f2 | cut -d' ' -f2)
! 169: COMPILER="gcc $COMPILER"
! 170: fi
! 171: else
! 172: # Non-GCC compiler
! 173: $CC --version 2>&1 | grep -i "clang" >/dev/null
! 174: if [ $? -eq 0 ]; then
! 175: COMPILER=$($CC --version 2>/dev/null | head -1 \
! 176: | cut -d'(' -f1 | cut -d'-' -f1 \
! 177: | sed -e 's/version //g; s/^\([A-Z]\)[A-Za-z]* clang/\1-clang/g; s/LLVM /clang /g')
! 178: fi
! 179: $CC -version 2>&1 | grep -i "tcc" >/dev/null
! 180: if [ $? -eq 0 ]; then
! 181: COMPILER=$($CC -version 2>/dev/null | head -1 \
! 182: | cut -d'(' -f1 | sed -e 's/version //g')
! 183: fi
! 184: if [ "$COMPILER" = "unknown" ]; then
! 185: v="$($CC --version 2>/dev/null | head -1)"
! 186: [ -z "$v" ] && v="$($CC -version 2>/dev/null | head -1)"
! 187: [ -n "$v" ] && COMPILER="$v"
! 188: fi
! 189: fi
! 190: fi
! 191:
! 192: # Get ngIRCd version information
! 193: eval "$(grep "^VERSION = " Makefile | sed -e 's/ //g')"
! 194: case "$VERSION" in
! 195: *~*-*)
! 196: VERSION=$(echo "$VERSION" | cut -b1-10)
! 197: ;;
! 198: esac
! 199: [ -n "$VERSION" ] || VERSION="unknown"
! 200:
! 201: # Get IO interface information
! 202: if [ "$OS" = "linux-gnu" ]; then
! 203: COMMENT="1"
! 204: else
! 205: grep "^#define HAVE_SYS_DEVPOLL_H 1" src/config.h >/dev/null 2>&1
! 206: [ $? -eq 0 ] && COMMENT="4"
! 207: grep "^#define HAVE_EPOLL_CREATE 1" src/config.h >/dev/null 2>&1
! 208: [ $? -eq 0 ] && COMMENT="5"
! 209: grep "^#define HAVE_KQUEUE 1" src/config.h >/dev/null 2>&1
! 210: [ $? -eq 0 ] && COMMENT="3"
! 211: fi
! 212:
! 213: [ -n "$R_CONFIGURE" ] && C="Y" || C="N"
! 214: [ -n "$R_MAKE" ] && M="Y" || M="N"
! 215: [ -n "$R_CHECK" ] && T="$R_CHECK_Y" || T="N"
! 216: if [ -n "$R_RUN" ]; then
! 217: # Mark "runs" with "Y" only when the test suite succeeded:
! 218: [ "$T" = "N" ] && R="?" || R="Y"
! 219: else
! 220: R="N"
! 221: fi
! 222: [ -n "$COMMENT" ] && COMMENT=" $COMMENT"
! 223:
! 224: echo
! 225: echo " the executable works (\"runs\") as expected --+"
! 226: echo " tests run successfully (\"make check\") --+ |"
! 227: echo " ngIRCd compiles (\"make\") --+ | |"
! 228: echo " ./configure works --+ | | |"
! 229: echo " | | | |"
! 230: echo "Platform Compiler ngIRCd Date Tester C M T R *"
! 231: echo "--------------------------- ------------ ---------- -------- -------- - - - - -"
! 232: command -v printf >/dev/null 2>&1
! 233: if [ $? -eq 0 ]; then
! 234: printf "%-27s %-12s %-10s %s %-8s %s %s %s %s%s\n" \
! 235: "$PLATFORM" "$COMPILER" "$VERSION" "$DATE" "$LOGNAME" \
! 236: "$C" "$M" "$T" "$R" "$COMMENT"
! 237: else
! 238: echo "$PLATFORM $COMPILER $VERSION $DATE $LOGNAME" \
! 239: "$C" "$M" "$T" "$R" "$COMMENT"
! 240: fi
! 241: echo
! 242:
! 243: double_check() {
! 244: echo "Please double check that the ngIRCd daemon starts up, runs and handles IRC"
! 245: echo "connections successfully!"
! 246: }
! 247:
! 248: if [ "$R_CHECK_Y" = "y" ]; then
! 249: echo "WARNING: Some tests have been skipped!"
! 250: double_check
! 251: echo
! 252: fi
! 253: if [ "$R" = "?" ]; then
! 254: echo "WARNING: The resulting binary passed simple tests, but the test suite failed!"
! 255: double_check
! 256: echo
! 257: fi
CVSweb