[BACK]Return to platformtest.sh CVS log [TXT][DIR] Up to [local] / ircnowd / contrib

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