On Tue, 12 Jul 2011 03:30:25 +0800
YunQiang Su <wzss...@gmail.com> wrote:

> Could you give me more details about how you start it?
> 
> I cannot reproduce it.
> 

Two ways:

Alone from the command line:

        $~ savi
        SaVi: did not attempt to launch a missing binary executable.

please note the home directory

Through Geomview

        $~ geomview -run savi
        SaVi: did not attempt to launch a missing binary executable.

At this point Geomview starts but SaVi doesn't.

Now, if I change from home directory to /usr/lib/savi Savi works
both ways.

Well, I think the bug is in the file /usr/lib/savi/savi, line 71.
The variable SAVIBIN is set to bin/SaVi which is only correct when
the working directory is /usr/lib/savi. Changing this line to
SAVIBIN=${SAVI}/bin/SaVi fix things for me.

Attached is a trace using the original /usr/lib/savi/savi file.

Best Regards,
-- 
Manolo Díaz
#! /bin/sh
######################################################
#
#  SaVi by Lloyd Wood (lloydw...@users.sourceforge.net),
#          Patrick Worfolk (worf...@alum.mit.edu) and
#          Robert Thurman.
#
#  Copyright (c) 1997 by The Geometry Center.
#  Also Copyright (c) 2010 by Lloyd Wood.
#
#  This file is part of SaVi.  SaVi is free software;
#  you can redistribute it and/or modify it only under
#  the terms given in the file COPYRIGHT which you should
#  have received along with this file.  SaVi may be
#  obtained from:
#  http://savi.sourceforge.net/
#  http://www.geom.uiuc.edu/locate/SaVi 
#
######################################################
#
# Script that is always used to launch the binary SaVi executable
#
# $Id: savi,v 1.59 2011/04/17 20:47:53 lloydwood Exp $

#
# Set locations of tcl and tk library code needed at runtime
# Cygwin and Mac OS X are special cases, handled later.
# The version numbers used here should match the versions given
# in the src/Makefile_defs_ARCH file used to compile SaVi.
# Try under /usr/lib and /usr/local/lib.
# If using other versions or locations, insert in the next lines.
#
TCL_LIBRARY=""
+ TCL_LIBRARY=
TK_LIBRARY=""
+ TK_LIBRARY=

if [ ! -d "$TK_LIBRARY" ]; then
  TCL_LIBRARY=/usr/lib/tcl8.5
  TK_LIBRARY=/usr/lib/tk8.5
fi
+ [ ! -d  ]
+ TCL_LIBRARY=/usr/lib/tcl8.5
+ TK_LIBRARY=/usr/lib/tk8.5

if [ ! -d "$TK_LIBRARY" ]; then
  TCL_LIBRARY=/usr/local/lib/tcl8.5
  TK_LIBRARY=/usr/local/lib/tk8.5
fi
+ [ ! -d /usr/lib/tk8.5 ]
+ TCL_LIBRARY=/usr/local/lib/tcl8.5
+ TK_LIBRARY=/usr/local/lib/tk8.5

if [ ! -d "$TK_LIBRARY" ]; then
  # Mandriva One 2010
  TCL_LIBRARY=/usr/include
  TK_LIBRARY=/usr/include
fi
+ [ ! -d /usr/local/lib/tk8.5 ]
+ TCL_LIBRARY=/usr/include
+ TK_LIBRARY=/usr/include

#
# If SAVI environment variable is not defined
# then set it to be the path of this file
#
: ${SAVI:=`dirname "$0"`}
+ dirname /usr/lib/savi/savi
+ : /usr/lib/savi

#
# If you copy this script from the SaVi installation and run it
# elsewhere, then you should uncomment the following line:
# SAVI=/usr/local/savi
# and replace /usr/local/savi with the location of
# your SaVi installation.
#
export SAVI
+ export SAVI


#
# Default executable relative location and name
#
SAVIBIN=bin/SaVi
+ SAVIBIN=bin/SaVi


#
# Default parameters to pass to executable
#
params=""
+ params=


#
# Check for known machine types
#
if [ -f /vmlinuz -o -f /boot/vmlinuz ]; then
  ARCH=linux
  if [ -f /etc/debian_version ]; then
    # Ubuntu is the most popular Debian variant.
    ARCH=ubuntu
  fi
elif [ -d /devices ]; then
  ARCH=sun
elif [ -d /usr/bsd -a -d /usr/sbin ]; then
  ARCH=irix
elif [ -d /cygdrive ]; then
  ARCH=cygwin
elif [ -d /System ]; then
  ARCH=macosx
  # Tk in 10.5 Leopard has menubar bugs.
  # Not required by 10.6 Snow Leopard or 10.4 Tiger users
  if [ -d /Developer/SDKs ]; then
    # we can guess version from libraries available
    if [ ! -d /Developer/SDKs/MacOSX10.6.sdk ]; then
      # We're not later than 10.5
      if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
        # We are 10.5 - use popup menus instead.
        # Comment out these lines if ActiveTcl is installed
        # and SaVi has been compiled with it - see src/Makefile_defs_macosx
        echo "SaVi: using popup menus to work around a Mac OS X 10.5-specific 
problem." >&2
        params="-redrawn-menus ${params}"
      fi
    fi
  fi
elif [ -d /sys/boot ]; then
  ARCH=freebsd
else
  ARCH=unknown
fi
+ [ -f /vmlinuz -o -f /boot/vmlinuz ]
+ [ -d /devices ]
+ [ -d /usr/bsd -a -d /usr/sbin ]
+ [ -d /cygdrive ]
+ [ -d /System ]
+ [ -d /sys/boot ]
+ ARCH=unknown

# are we 64-bit? Known to affect linux installs.
MACHINE=`uname -m`
+ uname -m
+ MACHINE=x86_64
KNOWN64=x86_64
+ KNOWN64=x86_64
SIXTYFOUR=no
+ SIXTYFOUR=no
if [ ${MACHINE} = ${KNOWN64} ]; then
  SIXTYFOUR=yes
fi
+ [ x86_64 = x86_64 ]
+ SIXTYFOUR=yes

#
# Set platform-specific Tcl/Tk locations if needed
#
if [ ${ARCH} = "cygwin" ]; then
  # Cygwin installs Insight Tcl/Tk here.
  TCL_LIBRARY=/usr/share/tcl8.4
  TK_LIBRARY=/usr/share/tk8.4
elif [ ${ARCH} = "macosx" ]; then
  # Mac OS X installs libraries in shared folder
  TCL_LIBRARY=/usr/lib
  TK_LIBRARY=/usr/lib
fi
+ [ unknown = cygwin ]
+ [ unknown = macosx ]

#
# Sanity check $SAVI location
#
if [ ! -f "$SAVI/savi" ]; then
  echo "SaVi: a copy of this script is not at $SAVI/savi. Is \$SAVI set 
correctly?" >&2
fi
+ [ ! -f /usr/lib/savi/savi ]

#
# Verify that tcl and tk directories exist
#
EDIT=no
+ EDIT=no

if [ ! -d "$TCL_LIBRARY" ]; then
  echo "SaVi: specified TCL_LIBRARY $TCL_LIBRARY was not found." >&2
  echo "      Does Tcl need to be installed?" >&2
  EDIT=yes
fi
+ [ ! -d /usr/include ]

if [ ! -d "$TK_LIBRARY" ]; then
  echo "SaVi: specified TK_LIBRARY $TK_LIBRARY was not found." >&2
  echo "      Does Tk need to be installed?" >&2
  EDIT=yes
fi
+ [ ! -d /usr/include ]

if [ ${EDIT} = "yes" ]; then
  echo "      edit this script to set correct LIBRARY locations. Read the 
comments." >&2
fi
+ [ no = yes ]

export TCL_LIBRARY
+ export TCL_LIBRARY
export TK_LIBRARY
+ export TK_LIBRARY

#
# Do we need to complain that SaVi has not been compiled properly?
#
NOTFOUND=no
+ NOTFOUND=no
COMPLAIN=no
+ COMPLAIN=no
MAKEFILE=no
+ MAKEFILE=no

#
# Try specific binary, then default to filename without extension
#
if [ ! ${ARCH} = "unknown" ]; then
  SAVIBIN="${SAVI}/${SAVIBIN}"
  PLATFORMSAVIBIN="${SAVI}/${SAVIBIN}-${ARCH}.bin"
  if [ -f "${PLATFORMSAVIBIN}" ]; then
    # found the platform-specific executable
    if [ -f "${SAVIBIN}" ]; then
      # if default as well, indicate a choice was made - the safer choice.
      echo "SaVi: selected platform-specific binary $SAVI/$PLATFORMSAVIBIN" >&2
    fi
    SAVIBIN="${PLATFORMSAVIBIN}"
  else
    # try default SaVi binary; assuming it's for our platform.
    if [ ! -f "${SAVIBIN}" ]; then
      echo "nofied">&2
      # couldn't find default binary. Are we 64-bit?
      if [ ${SIXTYFOUR} = yes ]; then
        SAVI64BIN="${SAVI}/${SAVIBIN}-${KNOWN64}.bin"
        if [ -f "${SAVI64BIN}" ]; then
          # found the 64-bit executable
          SAVIBIN="${SAVI64BIN}"
          echo "SaVi: found 64-bit binary $SAVI/$SAVI64BIN" >&2
        else
          echo "SaVi: couldn't find 64-bit binary $SAVI/$SAVI64BIN" >&2
          NOTFOUND=yes
        fi
      else
        # couldn't find any SaVi* binary.
        NOTFOUND=yes
      fi
    fi
  fi
fi
+ [ ! unknown = unknown ]

if [ ${NOTFOUND} = yes ]; then
  echo "SaVi: couldn't find platform-specific binary $SAVI/$PLATFORMSAVIBIN" >&2
  echo "SaVi: couldn't find generic executable binary $SAVI/$SAVIBIN." >&2
  COMPLAIN=yes
  if [ ! -f "${SAVI}/src/main.o" ]; then
     echo "SaVi: can't see expected main.o object file in the $SAVI/src/ 
directory." >&2
     echo "      Has the master Makefile been run to call the C Makefile?" >&2
     MAKEFILE=yes
  fi
fi
+ [ no = yes ]

if [ ! -f "${SAVI}/tcl/tclIndex" ]; then
      echo "SaVi: couldn't find generated list of Tcl commands in 
$SAVI/tcl/tclIndex" >&2
      echo "      Has the master Makefile been run to call the Tcl Makefile?" 
>&2
      MAKEFILE=yes
      COMPLAIN=yes
fi
+ [ ! -f /usr/lib/savi/tcl/tclIndex ]

if [ ${MAKEFILE} = "yes" ]; then
  echo "      The master Makefile in $SAVI must run all other makefiles to make 
SaVi work." >&2
fi
+ [ no = yes ]

if [ ${COMPLAIN} = "yes" ]; then
  echo "SaVi: Try compiling SaVi by making in the same directory as this 
script:" >&2
  echo "        cd $SAVI" >&2
  echo "        make ARCH=$ARCH" >&2
  echo "      before running this script again to launch and run the SaVi 
binary." >&2
fi
+ [ no = yes ]

#
# Run binary
#
if [ ! -f ${SAVIBIN} ]; then
  echo "SaVi: did not attempt to launch a missing binary executable.">&2
else
  #
  # Find what directory this script was invoked from
  #
  OLDCWD=`pwd`; export OLDCWD

  #
  # Change directory
  #
  cd "$SAVI"

  #
  # See if we need to add a -geomview flag
  #
  if [ -t 1 ]; then
    exec > /dev/null
  else
    case "$*" in
      *-geomview*) ;;
      *) set -- -geomview $*;;
    esac

    # send SAVI env variable to geomview
    echo "(setenv SAVI \"$SAVI\")"
  fi
  exec ${SAVIBIN} $* ${params}
fi+ [ ! -f bin/SaVi ]
+ echo SaVi: did not attempt to launch a missing binary executable.
SaVi: did not attempt to launch a missing binary executable.

Reply via email to