[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20010430: McIDAS on Red Hat 7 (cont.)



>From: Wahner Paul Contr CSR4500 <address@hidden>
>Organization: Cape Canaveral Air Force Station
>Keywords: 200102121310.f1CDAFL23157 McIDAS-X Linux &

Paul,

>I'm finally  getting a chance to get back into this project. I do want to
>stick to your suggestion of  trying to stay as close to the McIDAS
>distribution as possible.

OK.  Originally, I was interested in seeing if your build of the 99.999%
SSEC distribution of McIDAS-X on RedHat 7.x would exhibit the same problem
serving sounding data through the remote ADDE server as I had seen here
at Unidata and at a couple of my sites.  I now know that this is a problem
that is not limited to the Unidata distribution.  I have had several
exchanges with SSEC (Dave Santec and others) about the problem.  I _think_
that the problem has finally been sent along to John Benson so he could
take a good look at what is going on.

>So I intend to tackle one problem at a time as
>they come up. At this point I'm up to the newer version of Tcl/Tk problem.
>Would you be willing to send me a copy of your "tclcomp.sh" file? With that,
>then I'll see how far I can get until something else breaks. 

Sure. By the way, hopefully my mods to tclcomp.sh will show up in the SSEC
7.8 distribution.

Here it is:

---------------------------- tclcomp.sh -------------------------------------

#!/bin/sh
#
# Copyright(c) 1998, Space Science and Engineering Center, UW-Madison
# Refer to "McIDAS Software Acquisition and Distribution Policies"
# in the file  mcidas/data/license.txt
#
#       $Id: tclcomp.sh,v 1.10 1999/04/23 18:39:17 beckys Exp $
#

# save program name
#
prog=`basename $0`

# make sure we got the correct number of arguments
#
if [ $# -ne 4 ]; then
        echo "Usage: $prog tcldir tclsrc tksrc target" 1>&2
        exit 1
fi

# save arguments
#
tcldir="$1"
tclsrc="$2"
tksrc="$3"
target="$4"

# if no Tcl source directory...
#
if [ ! -d "$tclsrc" ]; then
        echo "$prog: Tcl source directory \"$tclsrc\" does not exist" 1>&2
        exit 1
fi

# if no Tk source directory...
#
if [ ! -d "$tksrc" ]; then
        echo "$prog: Tk source directory \"$tksrc\" does not exist" 1>&2
        exit 1
fi

# Set use of shared libraries for all systems EXCEPT BSDI and Solaris X86
#
# Generation of TK shared libraries appeared busted under Solaris on Intel, but
# is OK on Sparc. If this gets fixed in a later OS version, we can remove this 
# special case.
#
case `uname -s` in
BSD/OS)
        shared=""
        ;;
FreeBSD)
        shared=""
        ;;
SunOS)
        case `uname -i` in
        i86pc)
                shared=""
                ;;
        *)
                shared="--enable-shared"
        esac
        ;;
*)
        shared="--enable-shared"
        ;;
esac

case $CC in
gcc)
        gcc="--enable-gcc"
        ;;
*)      gcc=""
        ;;
esac

# find Tcl configuration file
#
tclconf=
for i in "$tclsrc/unix/tclConfig.sh" "$tclsrc/lib/tclConfig.sh"; do
        if [ -f "$i" ]; then
                tclconf="$i"
        fi
done
if [ X"$tclconf" = X ]; then
        if [ -d "$tclsrc/unix" ]; then
                (cd "$tclsrc/unix" &&
                 ./configure $shared $gcc --prefix="$tcldir" >/dev/null 2>&1)
        fi
        tclconf=$tclsrc/unix/tclConfig.sh

        # if there's STILL no Tcl configuration file...
        #
        if [ ! -f "$tclconf" ]; then
                echo "$prog: Couldn't find Tcl configuration information" 1>&2
                exit 1
        fi
fi

# if no Tk configuration file...
#
tkconf=
for i in "$tksrc/unix/tkConfig.sh" "$tksrc/lib/tkConfig.sh"; do
        if [ -f "$i" ]; then
                tkconf="$i"
        fi
done
if [ X"$tkconf" = X ]; then
        if [ -d "$tksrc/unix" ]; then
                (cd "$tksrc/unix" &&
                 ./configure $shared $gcc --prefix="$tcldir" \
                        --with-tcl="../$tclsrc/unix" >/dev/null 2>&1)
        fi
        tkconf=$tksrc/unix/tkConfig.sh

        # if there's STILL no Tk configuration file...
        #
        if [ ! -f "$tkconf" ]; then
                echo "$prog: Couldn't find Tk configuration information" 1>&2
                exit 1
        fi
fi

# load Tcl and Tk configuration information
#
. "$tclconf"
. "$tkconf"

# get rid of target if it exists
#
if [ -f "$target" ]; then
        rm -f "$target"
fi

# extract library name from Tcl LIB and BUILD specifications
#
MY_TCL_LIB_NAME=`echo $TCL_LIB_SPEC | sed 's/[  ]*-L[^  ]*//g'`
MY_TCL_BUILD_NAME=`echo $TCL_BUILD_LIB_SPEC | sed 's/[  ]*-L[^  ]*//g'`
if [ "$MY_TCL_LIB_NAME" != "$MY_TCL_BUILD_NAME" ]; then
  echo "$prog: Library name mismatch (LIB=$MY_TCL_LIB_NAME, 
BUILD=$MY_TCL_BUILD_NAME)" 1>&2
  exit 1
fi

# extract library path from Tcl LIB and BUILD specifications
#
MY_TCL_LIB_DIR=`echo $TCL_LIB_SPEC | sed 's/[   ]*-l[^  ]*//g'`
MY_TCL_BUILD_DIR=`echo $TCL_BUILD_LIB_SPEC | sed 's/[   ]*-l[^  ]*//g'`

# extract library name from Tk LIB and BUILD specifications
#
MY_TK_LIB_NAME=`echo $TK_LIB_SPEC | sed 's/[    ]*-L[^  ]*//g'`
MY_TK_BUILD_NAME=`echo $TK_BUILD_LIB_SPEC | sed 's/[    ]*-L[^  ]*//g'`
if [ "$MY_TK_LIB_NAME" != "$MY_TK_BUILD_NAME" ]; then
  echo "$prog: Library name mismatch (LIB=$MY_TK_LIB_NAME, 
BUILD=$MY_TK_BUILD_NAME)" 1>&2
  exit 1
fi

# extract library path from Tk LIB and BUILD specifications
#
MY_TK_LIB_DIR=`echo $TK_LIB_SPEC | sed 's/[     ]*-l[^  ]*//g'`
MY_TK_BUILD_DIR=`echo $TK_BUILD_LIB_SPEC | sed 's/[     ]*-l[^  ]*//g'`

# build my library specification
#
MY_LIB_DIR="$MY_TK_BUILD_DIR $MY_TCL_BUILD_DIR $MY_TK_LIB_DIR $MY_TCL_LIB_DIR"
MY_LIB_NAME="$MY_TK_LIB_NAME $MY_TCL_LIB_NAME"

# create the target using the Tcl & Tk configuration information
#
cat > "$target" <<EOF
#!/bin/sh

# if this is Solaris, need to add a run-time path when linking
# <<<<< UPC mods 981130 >>>>> - added Linux and OSF1 to list
#                               of OSes needing RUNTIME_PATH
#
RUNTIME_PATH=
case \`uname -sr\` in
"SunOS 5."*) RUNTIME_PATH="-R $TCL_PREFIX/lib";;
"Linux 2."*) RUNTIME_PATH="-Wl,-rpath,$TCL_PREFIX/lib";;
OSF1*) RUNTIME_PATH="-Wl,-rpath,$TCL_PREFIX/lib";;
IRIX*) RUNTIME_PATH="-Wl,-rpath,$TCL_PREFIX/lib";;
HP-UX*) RUNTIME_PATH="-Wl,+b,$TCL_PREFIX/lib";;
esac

# need different sets of flags for compiling and linking
#
eval \`linking=yup
        while [ \$# -gt 0 ]; do
                case \$1 in
                -c)     linking=
                        break
                        ;;
                esac
                shift
        done
        if [ -z "\$linking" ]; then
                tclflags="$TCL_DEFS $TK_DEFS"
        else
                tclflags="\$RUNTIME_PATH $MY_LIB_DIR $MY_LIB_NAME $TK_LIBS 
$TCL_LIBS"
        fi
        echo "tclflags='\$tclflags'"\`

# let compiler do the rest of the dirty work
#
compiler=\$1; shift
exec \$compiler \$* \$tclflags || exit 1
EOF

# make sure the target is executable
#
chmod a+x "$target"

# success!
#
exit 0

---------------------------- tclcomp.sh -------------------------------------

Tom