Whamcloud - gitweb
LU-2906 ldlm: use accessor macros for l_flags
[fs/lustre-release.git] / lustre / contrib / wireshark / wsconfig.sh
index 78c4904..7fbe6de 100644 (file)
@@ -1,33 +1,35 @@
 # This file contain all configuration information to build
 # `lustre-release/lustre/contrib/wireshark'
 
-###########################################################################
-#                                                                         #
-#    DOWNLOAD CONFIGURATION
-#                                                                         #
-###########################################################################
+[[ $1 =~ --.* ]] || {
+    ###########################################################################
+    #                                                                         #
+    #    DOWNLOAD CONFIGURATION
+    #                                                                         #
+    ###########################################################################
 
-##   BEGIN: -can-edit   ##
+    ##   BEGIN: -can-edit   ##
     # URL of directory containing all source tar balls
-export WS_DOWNLOAD_BASE_URL='http://wiresharkdownloads.riverbed.com/wireshark/src/all-versions'
+    export WS_DOWNLOAD_BASE_URL='http://wiresharkdownloads.riverbed.com'
+    WS_DOWNLOAD_BASE_URL+='/wireshark/src/all-versions'
 
     # wireshark verion to be used
-export WS_VERSION='1.6.8'
-##   END  : -can-edit   ##
+    export WS_VERSION='1.6.8'
+    ##   END  : -can-edit   ##
 
     # URL of the wireshark source code tarball
     # Implicit assumption: Wireshark release names follow the nameing
     # convention coded in the content of the following varialble
-export WS_SOURCE_URL="${WS_DOWNLOAD_BASE_URL}/wireshark-${WS_VERSION}.tar.bz2"
+    export WS_SOURCE_URL="${WS_DOWNLOAD_BASE_URL}/wireshark-${WS_VERSION}.tar.bz2"
 
 
-###########################################################################
-#                                                                         #
-#                   BUILD ENVIRONMENT                                     #
-#                                                                         #
-###########################################################################
+    ###########################################################################
+    #                                                                         #
+    #                   BUILD ENVIRONMENT                                     #
+    #                                                                         #
+    ###########################################################################
 
-##   BEGIN: -can-edit   ##
+    ##   BEGIN: -can-edit   ##
     # Space separate list of RPMs needed to be installed for 
     # compilation of wireshark
 
@@ -35,31 +37,155 @@ export WS_SOURCE_URL="${WS_DOWNLOAD_BASE_URL}/wireshark-${WS_VERSION}.tar.bz2"
     # If distributions 'marked' by same release file, content has to
     # parsed and variable PREREQUISITE_RPMS has to be set accoringly to
     # package name(s) used for each distro.
-if [ -r /etc/redhat-release ] ; then
-    export PREREQUISITE_RPMS='gtk2 gtk2-devel glib2 libpcap libpcap-devel perl'
-elif [ -r /etc/SuSE-release ] ; then
-    export PREREQUISITE_RPMS='gtk2 gtk2-devel glib2 libpcap0 libpcap-devel perl'
-fi
+    if [ -r /etc/redhat-release ] ; then
+        export PREREQUISITE_RPMS='gtk2 gtk2-devel glib2 libpcap libpcap-devel perl'
+    elif [ -r /etc/SuSE-release ] ; then
+        export PREREQUISITE_RPMS='gtk2 gtk2-devel glib2 libpcap0 libpcap-devel perl'
+    fi
 
     # Include and linker flags needed to Lustre/LNet
     # Only version indepent information should be added here
     # (Back ticked expression will be evaluated by make command)
-export PLUGIN_COMPILE_FLAGS='`pkg-config --libs --cflags glib-2.0`'
-##   END  : -can-edit   ##
+    export PLUGIN_COMPILE_FLAGS='`pkg-config --libs --cflags glib-2.0`'
+    ##   END  : -can-edit   ##
 
-    # Top-level directory to be used to unpack/compile/install wireshark/lustre-git-repo
-export BUILD_DIR=`pwd`
+    # Top-level directory to be used to unpack/compile/install
+    # wireshark/lustre-git-repo
+    export BUILD_DIR=`pwd`
 
     # Directory location of wireshark source code
-export WS_HOME="${BUILD_DIR}/wireshark-${WS_VERSION}"
+    export WS_HOME="${BUILD_DIR}/wireshark-${WS_VERSION}"
 
     # (Relative) path of the wireshark contribution directory
-export LUSTRE_WS_DIR='lustre-release/lustre/contrib/wireshark'
+    export LUSTRE_WS_DIR='lustre-release/lustre/contrib/wireshark'
 
     # RPM internal name for the Lustre/LNet plugins
-export PLUGIN_RPM_NAME='lustre-wireshark-plugins'
+    export PLUGIN_RPM_NAME='lustre-wireshark-plugins'
 
     # TAR command + options to be used to create a bzip2 tarball
-export TAR='/bin/tar jcpf '
+    export TAR='/bin/tar jcpf '
     # TAR command + options to be used to unpack a bzip2 tarball
-export UNTAR='/bin/tar jxpf '
+    export UNTAR='/bin/tar jxpf '
+    exit 0
+}
+
+die() {
+    echo "wsconfig error:  $*"
+    exit 1
+} 1>&2
+
+# arg1: complete package name, with version
+# arg2: the minimum version
+#
+chk_ver() {
+    act_ver=${1#*-devel-} ; shift
+    act_ver=${act_ver%%-*}
+
+    declare low_ver=$(
+        printf "${act_ver}\n$1\n" | sort -V | head -n1 )
+    test "X$low_ver" = "X$1" || \
+        die "wireshark too old: $act_ver is before $1"
+}
+
+set_var() {
+    case "X$2" in
+    Xlibdir )
+        txt=$(echo $(rpm -q --list $1 | \
+            sed -n '\@/libwire@s@/libwire[^/]*$@@p' | \
+            sort -u) )
+        ;;
+    * )
+        die "unknown variable: $2"
+        ;;
+    esac
+}
+
+set_cflags() {
+    dlst=$(rpm -q --list $pkg | \
+        grep '/usr.*/include.*/wireshark$' | \
+        while read f ; do test -d $f && echo "$f" ; done)
+    rm -f config.h
+    for f in $dlst XX
+    do test -f $f/config.h && ln -s ${f}/config.h .
+        txt+=" -I$f"
+    done
+    test -f config.h || die "cannot find config header"
+}
+
+parse_wireshark() {
+    declare pkg=$(rpm -qa | sed -n '/wireshark-devel/{;p;q;}')
+    declare dlst=
+
+    while test $# -gt 1
+    do
+        txt=
+        case "$1" in
+        --libs )
+            txt=$(rpm -q --list $pkg | \
+                sed -n 's@\.so$@@p' | \
+                sed 's@.*/lib@-l@')
+            ;;
+
+        --cflags )
+            set_cflags
+            ;;
+
+        --modversion )
+            txt=${pkg#wireshark-devel-}
+            txt=${txt%%-*}
+            ;;
+
+        --atleast-version=* )
+            chk_ver ${pkg} ${1#*=}
+            ;;
+
+        --atleast-version )
+            shift
+            chk_ver ${pkg} ${1}
+            ;;
+
+        --variable=* )
+            set_var ${pkg} ${1#*=}
+            ;;
+
+        --variable )
+            shift
+            set_var ${pkg} ${1}
+            ;;
+
+        * )
+            die "unknown option: $1"
+            ;;
+        esac
+        test ${#txt} -gt 0 && \
+            printf "%s" "$(echo ' '$txt)"
+        shift
+    done
+    echo
+}
+
+pkg-config "$@" 2>/dev/null && exit 0
+
+pkg=$#
+case ${!pkg} in
+glib* )
+    fullpkg=$(rpm -qa | grep -E '^glib[2-9].*-devel' | head -n1)
+    dirs=$(rpm -q --list $fullpkg | \
+        while read f ; do test -d $f && echo $f ; done | \
+        grep -F /include)
+    for f in $dirs ; do printf "-I$f " ; done
+    rpm -q --list $fullpkg | \
+        sed -n 's@^.*/libglib@-lglib@p' | \
+        sed -n 's/\.so$//p' | \
+        head -n 1
+    ;;
+
+wireshark )
+    parse_wireshark "$@"
+    ;;
+
+* )
+    echo huh?
+    exit 1
+    ;;
+esac