Module: ngircd.git Branch: master Commit: 21bb2bd65808dbeacc5959a9ac3bc4fd9b3087c7 URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=21bb2...
Author: Alexander Barton alex@barton.de Date: Tue Aug 4 22:30:59 2009 +0200
New script contrib/platformtest.sh
This script analyzes the build process of ngIRCd and generates output suitable for inclusion in doc/Platforms.txt.
---
contrib/README | 3 + contrib/platformtest.sh | 143 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+), 0 deletions(-)
diff --git a/contrib/README b/contrib/README index 353e2bb..6593fdd 100644 --- a/contrib/README +++ b/contrib/README @@ -28,5 +28,8 @@ ngircd-redhat.init ngircd.spec - RPM "spec" file.
+platformtest.sh + - Build ngIRCd and output a "result line" suitable for doc/Platforms.txt. + systrace.policy - Systrace policy file for OpenBSD (and probably NetBSD). diff --git a/contrib/platformtest.sh b/contrib/platformtest.sh new file mode 100755 index 0000000..aee7f29 --- /dev/null +++ b/contrib/platformtest.sh @@ -0,0 +1,143 @@ +#!/bin/sh +# +# ngIRCd -- The Next Generation IRC Daemon +# Copyright (c)2001-2009 Alexander Barton alex@barton.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# Please read the file COPYING, README and AUTHORS for more information. +# + +# This script analyzes the build process of ngIRCd and generates output +# suitable for inclusion in doc/Platforms.txt -- please send reports +# to the ngIRCd mailing list: ngircd-ml@ngircd.barton.de. + +NAME=`basename "$0"` +VERBOSE= + +PLATFORM= +COMPILER="unknown" +VERSION="unknown" +DATE=`date "+%y-%m-%d"` + +CONFIGURE= +MAKE= +CHECK= +RUN= +COMMENT= + +while [ $# -gt 0 ]; do + case "$1" in + "-v") + VERBOSE=1 + ;; + *) + echo "Usage: $NAME [-v]" + exit 2 + esac + shift +done + +echo "$NAME: Checking ngIRCd base source directory ..." +grep "ngIRCd" ./ChangeLog >/dev/null 2>&1 +if [ $? -ne 0 ]; then + grep "ngIRCd" ../ChangeLog >/dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "$NAME: ngIRCd base source directory not found!?" + exit 1 + fi + cd .. +fi + +echo "$NAME: Checking for ./configure script ..." +if [ ! -e ./configure ]; then + echo "$NAME: Not found. Running ./autogen.sh ..." + [ -n "$VERBOSE" ] && ./autogen.sh || ./autogen.sh >/dev/null +fi + +if [ -e ./configure ]; then + echo "$NAME: Running "./configure" script ..." + [ -n "$VERBOSE" ] && ./configure || ./configure >/dev/null + if [ $? -eq 0 -a -e ./Makefile ]; then + CONFIGURE=1 + echo "$NAME: Running "make" ..." + [ -n "$VERBOSE" ] && make || make >/dev/null + if [ $? -eq 0 -a -x src/ngircd/ngircd ]; then + MAKE=1 + echo "$NAME: Running "make check" ..." + [ -n "$VERBOSE" ] && make check || make check >/dev/null + if [ $? -eq 0 ]; then + CHECK=1 + RUN=$CHECK + else + ./src/ngircd/ngircd --help 2>/dev/null \ + | grep "^ngircd" >/dev/null + [ $? -eq 0 ] && RUN=1 + fi + fi + fi +fi + +# Get target platform information +if [ -r "src/config.h" ]; then + CPU=`grep "TARGET_CPU" "src/config.h" | cut -d'"' -f2` + OS=`grep "TARGET_OS" "src/config.h" | cut -d'"' -f2` + VENDOR=`grep "TARGET_VENDOR" "src/config.h" | cut -d'"' -f2` + PLATFORM="$CPU/$VENDOR/$OS" +fi +if [ -z "$PLATFORM" ]; then + PLATFORM="`uname 2>/dev/null` `uname -r 2>/dev/null`, `uname -m 2>/dev/null`" +fi + +# Get compiler information +if [ -r "Makefile" ]; then + eval $(grep "^CC = " Makefile | sed -e 's/ //g') + $CC --version 2>&1 | grep -i "GCC" >/dev/null + if [ $? -eq 0 ]; then + COMPILER=$($CC --version | head -n 1 | awk "{ print $3 }" \ + | cut -d'-' -f1) + COMPILER="gcc $COMPILER" + fi +fi + +# Get ngIRCd version information +if [ -d ".git" ]; then + VERSION=`git log --abbrev-commit --pretty=oneline HEAD~1.. \ + | cut -d' ' -f1 | tr -d '.'` +elif [ -r "Makefile" ]; then + eval $(grep "^VERSION = " Makefile | sed -e 's/ //g') +fi +[ -n "$VERSION" ] || VERSION="unknown" + +# Get IO interface information +if [ "$OS" = "linux-gnu" ]; then + COMMENT="(1)" +else + grep "^#define HAVE_SYS_DEVPOLL_H 1" src/config.h >/dev/null 2>&1 + [ $? -eq 0 ] && COMMENT="(4)" + grep "^#define HAVE_EPOLL_CREATE 1" src/config.h >/dev/null 2>&1 + [ $? -eq 0 ] && COMMENT="(5)" + grep "^#define HAVE_KQUEUE 1" src/config.h >/dev/null 2>&1 + [ $? -eq 0 ] && COMMENT="(3)" +fi + +[ -n "$CONFIGURE" ] && C="Y" || C="N" +[ -n "$MAKE" ] && M="Y" || M="N" +[ -n "$CHECK" ] && T="Y" || T="N" +[ -n "$RUN" ] && R="Y" || R="N" +[ -n "$COMMENT" ] && COMMENT=" $COMMENT" + +echo +echo " the executable works ("runs") as expected --+" +echo " tests run successfully ("make check") --+ |" +echo " ngIRCd compiles ("make") --+ | |" +echo " ./configure works --+ | | |" +echo " | | | |" +echo "Platform Compiler ngIRCd Date Tester C M T R See" +echo "--------------------------- ------------ ---------- -------- ------ - - - - ---" +printf "%-27s %-12s %-10s %s %-6s %s %s %s %s%s" \ + "$PLATFORM" "$COMPILER" "$VERSION" "$DATE" "$USER" \ + "$C" "$M" "$T" "$R" "$COMMENT" +echo; echo