NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.


[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