[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

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