Commit 7276807a authored by hrchilds's avatar hrchilds

Update from April 29, 2004

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@232 18c085ea-50e0-402c-830e-de6fd14e8384
parent 78852029
......@@ -44,7 +44,7 @@ operating systems. It is suggested that you use the same compilers.
Operating System Compiler
================ ========
AIX 5.1 g++ 3.1
Darwin 6.5 g++ 3.1
MacOS X 10.3 (Darwin) g++ 3.3
IRIX64 6.5 MIPSpro 7.3.1.1m and MIPSpro 7.3.1.2m
Redhat Linux 7.1 and 7.2 g++ 2.96
Solaris 7 g++ 2.95.2
......@@ -131,10 +131,10 @@ cp include/GL/*.h ../visit/mesa/include/GL
# rm *.o
# cd ..
#
cp lib/*.so ../visit/mesa/lib
cd ..
VTK
====
......
This diff is collapsed.
......@@ -56,16 +56,14 @@ Unix and Mac OS X:
This completes the installation process for VisIt.
3. If you are installing VisIt on a Linux system with an NVidia graphics
card, we recommend using the NVidia 2960 driver unless you will be
doing stereo rendering. If you will be doing stereo rendering then you
must use the 3123 driver, although it has some bugs. Below are notes
on the various NVidia Linux drivers.
card, we recommend using the NVidia 4363 driver or newer. Below are
notes on the various NVidia Linux drivers.
2802 - Not recommended. It has a triangle shading bug.
2960 - Recommended. Doesn't support stereo rendering.
2960 - Doesn't support stereo rendering, but no critical bugs.
3123 - Recommended for stereo rendering. It may not render large
3123 - Does support stereo rendering, but it may not render large
numbers of polygons when using display lists. You can turn
off display lists by bringing up the "Rendering options"
window and deselecting the "Use display lists" toggle button.
......@@ -73,6 +71,8 @@ Unix and Mac OS X:
4191 - Not recommended. VisIt either crashes your X server or puts
up a visualization window that never gets refreshed.
4363 - Recommended. There are no known critical bugs with this or
newer drivers.
Windows:
......
# Copyright 2000 - 2003
# Copyright 2000 - 2004
# The Regents of the University of California.
# All rights reserved.
#
......@@ -110,6 +110,11 @@
# Eric Brugger, Thu Nov 20 10:04:46 PST 2003
# I made the build in the help directory optional.
#
# Brad Whitlock, Thu Apr 22 11:38:06 PDT 2004
# I moved common/winutil to the top level because of some dependencies
# on the components directory. I did this because of prebinding on the
# Mac.
#
##############################################################################
@SET_MAKE@
......@@ -119,7 +124,7 @@
DISTRIB=configure configure.in VERSION
SUBDIRS=include lib bin common @VTKQT@ visit_vtk components engine \
launcher @METADATA_SERVER@ @VIEWER@ @GUI@ @VISITPY@ \
launcher @METADATA_SERVER@ winutil @VIEWER@ @GUI@ @VISITPY@ \
@JAVA_TARGET@ plots operators databases @HELP@ tools
#
......
......@@ -316,6 +316,9 @@ $0 = shift @ARGV;
# Jeremy Meredith, Thu Apr 1 16:11:43 PST 2004
# Made the new parallel argument stuff backwards-compatible.
#
# Brad Whitlock, Tue Apr 27 09:49:57 PDT 2004
# I removed some obsolete MacOS X coding and I updated the GDB directories.
#
###############################################################################
......@@ -887,7 +890,6 @@ if (-e "$visitdir/bin/$exe_name" ||
$visitlibdir = "$visitdir/lib";
$visithelpdir = "$visitdir/help";
$visitplugins = "$visitdir/plugins";
$visitframeworks = "$visitdir/Frameworks";
$publicversion = 0;
# Set the version to nothing because we're running the component that
......@@ -959,7 +961,6 @@ else
$visitlibdir = "$visitdir/$archdir/lib";
$visithelpdir = "$visitdir/$archdir/help";
$visitplugins = "$visitdir/$archdir/plugins";
$visitframeworks = "$visitdir/$archdir/Frameworks";
$publicversion = 1;
# Parse the version
......@@ -1066,8 +1067,6 @@ $ENV{LD_LIBRARY_PATH} = "/usr/local/lib:$ENV{LD_LIBRARY_PATH}";
if($os eq "darwin")
{
$ENV{DYLD_LIBRARY_PATH} = "$visitlibdir:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries:$ENV{DYLD_LIBRARY_PATH}";
$ENV{DYLD_BIND_AT_LAUNCH} = "1";
$ENV{DYLD_FRAMEWORK_PATH} = "$visitframeworks:${DYLD_FRAMEWORK_PATH}";
}
# Set up plugin search paths in the correct order
......@@ -1311,6 +1310,15 @@ else
}
elsif ($debug_gdb)
{
# Determine the name of the program. This is only necessary on
# MacOS X to make sure that we run the executable from its
# bundle directory so it gets events while we debug it.
$real_exe = $exe_name;
if($os eq "darwin" and ($exe_name eq "gui" or $exe_name eq "viewer" or $exe_name eq "xmledit" or $exe_name eq "silex"))
{
$real_exe = "$visitbindir/$exe_name";
}
$gdbfilename = "$exe_name$ver-gdbcommands";
$gdbfile_opened = 1;
open(GDBFILE, ">$gdbfilename") or $gdbfile_opened = 0;
......@@ -1332,27 +1340,30 @@ else
}
print GDBFILE "set environment MESA_GLX_FX=$ENV{MESA_GLX_FX}\n";
print GDBFILE "path $ENV{VISITHOME}/bin\n";
print GDBFILE "file $exe_name\n";
print GDBFILE "file $real_exe\n";
print GDBFILE "directory $ENV{VISITHOME}/common/Exceptions/Database\n";
print GDBFILE "directory $ENV{VISITHOME}/common/Exceptions/Pipeline\n";
print GDBFILE "directory $ENV{VISITHOME}/common/Exceptions/VisWindow\n";
print GDBFILE "directory $ENV{VISITHOME}/common/comm\n";
print GDBFILE "directory $ENV{VISITHOME}/common/state\n";
print GDBFILE "directory $ENV{VISITHOME}/common/misc\n";
print GDBFILE "directory $ENV{VISITHOME}/common/parser\n";
print GDBFILE "directory $ENV{VISITHOME}/common/proxybase\n";
print GDBFILE "directory $ENV{VISITHOME}/common/plugin\n";
print GDBFILE "directory $ENV{VISITHOME}/common/utility\n";
print GDBFILE "directory $ENV{VISITHOME}/common/winutil\n";
print GDBFILE "directory $ENV{VISITHOME}/components/DBAtts/MetaData\n";
print GDBFILE "directory $ENV{VISITHOME}/components/DBAtts/SIL\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Database/Database\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Database/Formats\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Database/Ghost\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Exceptions/Database\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Exceptions/Pipeline\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Exceptions/VisWindow\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Expressions/Abstract\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Expressions/Conditional\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Expressions/Derivations\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Expressions/General\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Expressions/Management\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Expressions/Math\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Expressions/MeshQuality\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Filters\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Math\n";
print GDBFILE "directory $ENV{VISITHOME}/components/MIR/Base\n";
print GDBFILE "directory $ENV{VISITHOME}/components/MIR/Tet\n";
......@@ -1360,13 +1371,15 @@ else
print GDBFILE "directory $ENV{VISITHOME}/components/Pipeline/Data\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Pipeline/Pipeline\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Pipeline/PrivateFilters\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Pipeline/PublicFilters\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Pipeline/Sinks\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Pipeline/Sources\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Plotter\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Preprocessor\n";
print GDBFILE "directory $ENV{VISITHOME}/components/QtVisWindow\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Queries/Abstract\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Queries/Misc\n";
print GDBFILE "directory $ENV{VISITHOME}/components/Queries/Queries\n";
print GDBFILE "directory $ENV{VISITHOME}/components/View\n";
print GDBFILE "directory $ENV{VISITHOME}/components/VisWindow/Colleagues\n";
print GDBFILE "directory $ENV{VISITHOME}/components/VisWindow/Interactors\n";
print GDBFILE "directory $ENV{VISITHOME}/components/VisWindow/Proxies\n";
......@@ -1376,6 +1389,9 @@ else
print GDBFILE "directory $ENV{VISITHOME}/engine/proxy\n";
print GDBFILE "directory $ENV{VISITHOME}/engine/rpc\n";
print GDBFILE "directory $ENV{VISITHOME}/gui\n";
print GDBFILE "directory $ENV{VISITHOME}/launcher/main\n";
print GDBFILE "directory $ENV{VISITHOME}/launcher/proxy\n";
print GDBFILE "directory $ENV{VISITHOME}/launcher/rpc\n";
print GDBFILE "directory $ENV{VISITHOME}/mdserver/main\n";
print GDBFILE "directory $ENV{VISITHOME}/mdserver/proxy\n";
print GDBFILE "directory $ENV{VISITHOME}/mdserver/rpc\n";
......@@ -1383,8 +1399,12 @@ else
print GDBFILE "directory $ENV{VISITHOME}/viewer/proxy\n";
print GDBFILE "directory $ENV{VISITHOME}/viewer/rpc\n";
print GDBFILE "directory $ENV{VISITHOME}/visitpy\n";
print GDBFILE "directory $ENV{VISITHOME}/visit_vtk\n";
print GDBFILE "directory $ENV{VISITHOME}/visit_vtk/full\n";
print GDBFILE "directory $ENV{VISITHOME}/visit_vtk/lightweight\n";
print GDBFILE "directory $ENV{VISITHOME}/visit_vtk/sl_io\n";
print GDBFILE "directory $ENV{VISITHOME}/vtkqt\n";
print GDBFILE "directory $ENV{VISITHOME}/winutil\n";
if ($security_key_set)
{
print GDBFILE "set args @visitargs -dograb -key $security_key\n";
......@@ -1417,12 +1437,12 @@ else
close GDBFILE;
# Run gdb directly
@debugcmd = ("gdb", $exe_name, "-x", $gdbfilename);
@debugcmd = ("gdb", $real_exe, "-x", $gdbfilename);
if($gdb_xterm)
{
# Run GDB under an xterm
$debugtitle = "\"Debug $exe_name\"";
@debugcmd = ("xterm", "-title", $debugtitle, "-fn", "fixed", "-e", "gdb", $exe_name, "-x", $gdbfilename);
$debugtitle = "\"Debug $real_exe\"";
@debugcmd = ("xterm", "-title", $debugtitle, "-fn", "fixed", "-e", "gdb", $real_exe, "-x", $gdbfilename);
}
print STDERR "Running: @debugcmd\n";
......@@ -1430,14 +1450,14 @@ else
exec @debugcmd or $exec_gdb_failed = 1;
if($exec_gdb_failed)
{
print STDERR "Could not run $exe_name in the gdb debugger. Running VisIt normally.\n";
RunComponent($exe_name, $ver, $security_key_set, $security_key, @visitcmd);
print STDERR "Could not run $real_exe in the gdb debugger. Running VisIt normally.\n";
RunComponent($real_exe, $ver, $security_key_set, $security_key, @visitcmd);
}
}
else
{
print STDERR "Could not create GDB command file \"$gdbfilename\". Running VisIt normally.\n";
RunComponent($exe_name, $ver, $security_key_set, $security_key, @visitcmd);
RunComponent($real_exe, $ver, $security_key_set, $security_key, @visitcmd);
}
}
else
......
#!/usr/bin/python
###############################################################################
# Purpose:
# This script is part of the coding to automatically determine segment
# offsets for dynamic libraries on MacOS X so we can have prebound
# libraries so VisIt launches faster.
#
# Notes:
# When this program is called with the -readlines argument, we print the
# segment offset. Otherwise, we read in the link edit file and compute the
# next segment offset.
#
# Programmer: Brad Whitlock
# Date: Wed Apr 21 17:22:24 PST 2004
#
# Modifications:
#
###############################################################################
import os, sys, string
def ReadLines(fileName):
f = open(fileName, "r")
lines = f.readlines()
f.close()
return lines
def StringToHex(s):
retval = 0
e = 1
for i in range(len(s)):
pos = len(s) - i - 1
c = s[pos]
val = 0
if(c >= '0' and c <= '9'):
val = int(c)
elif c == 'a' or c == 'A':
val = 10
elif c == 'b' or c == 'B':
val = 11
elif c == 'c' or c == 'C':
val = 12
elif c == 'd' or c == 'D':
val = 13
elif c == 'e' or c == 'E':
val = 14
elif c == 'f' or c == 'F':
val = 15
retval = retval + (val * e)
e = e * 16
return retval
#
# Writes a library's starting address to a log file.
#
def AppendLog(logFile, s):
try:
f = open(logFile, "a")
f.write("%s\n" % s)
f.close()
except:
return
#
# Return whether or not the file exists.
#
def FileExists(filename):
retval = 1
try:
# Try and stat the file. If it does not exist then OSError is raised.
a = os.stat(filename)
except OSError:
retval = 0
return retval
#
# Return whether a library is prebound.
#
def LibraryIsPreBound(libFile):
retval = 1
try:
# Read the output of otool to determine if the library is prebound
f = os.popen("otool -hv %s" % libFile)
lines = f.readlines()
f.close()
# Add all of the lines together
wholeLine = ""
for line in lines:
wholeLine = wholeLine + line
# Now that we have the entire string, see if it contains the
# word PREBOUND. All prebound libraries should contain that word.
retval = string.find(wholeLine, "PREBOUND") != -1
except:
retval = 0
return retval
#
# Attempts to rename the backup file back to the addressFile, thus restoring
# it. If the file cannot be restored, return 0.
#
def RestoreBackup(backup, addressFile):
retval = 0
if FileExists(backup):
try:
os.rename(backup, addressFile)
retval = 1
except:
AppendLog(logFile, "Could not restore %s" % addressFile)
return retval
#
# Constants
#
PROCESS_ADDRESS = 0
PRINT_ADDRESS = 1
#
# Default values
#
mode = PROCESS_ADDRESS
libFile = ""
addressFile = "address.txt"
logFile = "linkedit.log"
#
# Process the command line arguments
#
i = 1
ARGVLEN = len(sys.argv)
while i < ARGVLEN:
arg = sys.argv[i]
if (arg == "-input") and (i+1 < ARGVLEN):
addressFile = sys.argv[i+1]
i = i + 2
elif (arg == "-lib") and (i+1 < ARGVLEN):
libFile = sys.argv[i+1]
i = i + 2
elif (arg == "-log") and (i+1 < ARGVLEN):
logFile = sys.argv[i+1]
i = i + 2
elif (arg == "-readstart"):
mode = PRINT_ADDRESS
i = i + 1
else:
i = i + 1
backup = "%s.bak" % addressFile
#
# Read the lines out of the address file.
#
lines = ["0x00000000"]
try:
lines = ReadLines(addressFile)
except IOError:
lines = ["0x00000000"]
except OSError:
lines = ["0x00000000"]
#
# Do the work that is appropriate for the script's mode.
#
if mode == PRINT_ADDRESS:
#print "readlines!"
if(len(lines) > 0):
print lines[-1]
else:
print "0x00000000"
# Rename the address file to a backup so if the build fails then
# we can restore it for next time.
try:
os.rename(addressFile, backup)
except:
AppendLog(logFile, "Problem renaming %s" % addressFile)
else:
if FileExists(libFile):
if not LibraryIsPreBound(libFile):
print "***"
print "*** %s is not prebound!" % libFile
print "***"
AppendLog(logFile, "*** %s is not prebound!" % libFile)
# Since the library was not prebound, try and restore the
# address file so we can use the same offset for the next
# library (or subsequent attempts to build the failed library)
# If we can't restore the backup file then write a new
# address file.
if RestoreBackup(backup, addressFile):
sys.exit(0)
#print "nextstart"
# The file should now contain __LINKEDIT addr size
addr = 0
size = 0
newaddr = 0
if(len(lines) > 0):
tokens = string.split(lines[-1], " ")
realtokens = []
for t in tokens:
if(t != ''):
newT = t
if(newT[-1] == '\n'):
newT = newT[:-1]
realtokens = realtokens + [newT]
#print realtokens
if(len(realtokens) == 3 and realtokens[0] == "__LINKEDIT"):
addr = StringToHex(realtokens[1][2:])
size = StringToHex(realtokens[2][2:])
#print "addr = 0x%08x size = 0x%08x" % (addr, size)
newaddr = addr + size
# Align the new address to 0x1000 segment boundaries
newaddr = newaddr + (0x1000 - newaddr % 0x1000)
# Write out the new file so it only has the address of the library in it.
f = open(addressFile, "w")
f.write("0x%08x" % newaddr)
f.close()
# print "The next starting address is: %08x." % newaddr
# Write the starting address of the library to the log file.
if(libFile != ""):
AppendLog(logFile, "%s 0x%08x" % (libFile, addr))
else:
print "***"
print "*** Not updating the prebinding segment offset because "
print "*** %s " % libFile
print "*** does not exist! It must not have built."
print "***"
RestoreBackup(backup, addressFile)
sys.exit(0)
......@@ -53,6 +53,9 @@
# Eric Brugger, Thu Nov 20 08:30:07 PST 2003
# Only add the help directory if -withhelp specified.
#
# Brad Whitlock, Fri Apr 23 12:25:56 PDT 2004
# Added winutil to the top level.
#
withhelp=no
......@@ -89,6 +92,7 @@ PATH="$PATH:./clearcase_bin"
./clearcase_bin/mkman --quiet --recursive --simple ./plots
./clearcase_bin/mkman --quiet --recursive --simple ./operators
./clearcase_bin/mkman --quiet --recursive --simple ./databases
./clearcase_bin/mkman --quiet --recursive --simple ./winutil
./clearcase_bin/mkman --quiet --recursive --simple ./viewer
./clearcase_bin/mkman --quiet --recursive --simple ./gui
./clearcase_bin/mkman --quiet --recursive --simple ./mdserver
......
......@@ -169,6 +169,10 @@
# Eric Brugger, Tue Mar 16 13:30:42 PST 2004
# Modified the script to also distribute libqtviswindow.so.
#
# Brad Whitlock, Wed Apr 28 19:55:27 PST 2004
# I changed it so we copy the Qt/Mac header files since we're now using
# Qt/Mac free edition.
#
#------------------------------------------------------------------------------
set DataFiles = "TRUE"
......@@ -586,6 +590,9 @@ cp $VisItDir/bin/surfcomp $bindir
if("$os" == "darwin") then
set graphicalApps="gui viewer silex xmledit"
set menuNames = ("VisIt" "VisIt Viewer" "Silex" "XmlEdit")
set creatorCodes = ("VISI" "VISV" "SILX" "XEDT")
# change these when there are more icons
set iconFiles = ("VisItIcon" "VisItIcon" "VisItIcon" "VisItIcon")
@ i = 1
set pwd = `pwd`
foreach app ($graphicalApps)
......@@ -593,14 +600,16 @@ if("$os" == "darwin") then
mkdir $bindir/$app.app
mkdir $bindir/$app.app/Contents
mkdir $bindir/$app.app/Contents/MacOS
mkdir $bindir/$app.app/Contents/Resources
cd $bindir/$app.app/Contents
ln -s ../../../lib lib
cd MacOS
ln -s ../../../$app $app
ln -s ../../../../../../bin/visit visit
cd $pwd
sed "s/PROGRAMNAME/$menuNames[$i]/g" $VisItDir/include/Info.plist | sed "s/VERSION/$Version/g" > $bindir/$app.app/Contents/Info.plist
echo "APPL????" > $bindir/$app.app/Contents/PkgInfo
cp $VisItDir/common/icons/$iconFiles[$i].icns $bindir/$app.app/Contents/Resources
sed "s/PROGRAMNAME/$menuNames[$i]/g" $VisItDir/include/Info.plist | sed "s/VERSION/$Version/g" | sed "s/CREATORCODE/$creatorCodes[$i]/g" | sed "s/ICONFILE/$iconFiles[$i]/g" > $bindir/$app.app/Contents/Info.plist
echo "APPL$creatorCodes[$i]" > $bindir/$app.app/Contents/PkgInfo
@ i++
end
endif
......@@ -620,9 +629,11 @@ cp $VisItDir/lib/libqtviswindow.$SHLIB_SOEXT $libdir
cp $VisItDir/lib/$QtLibName $libdir/$QtLibName
set majorVersion = `echo $QtLibName | awk '{printf substr($1, 10, 1)}'`
set minorVersion = `echo $QtLibName | awk '{printf substr($1, 12, 1)}'`
ln -s $QtLibName $libdir/libqt.$SHLIB_SOEXT.$majorVersion.$minorVersion
ln -s $QtLibName $libdir/libqt.$SHLIB_SOEXT.$majorVersion
ln -s $QtLibName $libdir/libqt.$SHLIB_SOEXT
if ("$os" != "darwin") then
ln -s $QtLibName $libdir/libqt.$SHLIB_SOEXT.$majorVersion.$minorVersion
ln -s $QtLibName $libdir/libqt.$SHLIB_SOEXT.$majorVersion
ln -s $QtLibName $libdir/libqt.$SHLIB_SOEXT
endif
#
# Copy the Mesa libraries to the distribution.
......@@ -673,18 +684,13 @@ cp $VisItDir/lib/$VTKTiLibName $libdir/$VTKTiLibName
cp $VisItDir/lib/$VTKZlLibName $libdir/$VTKZlLibName
#
# If we're on MacOS X, also create a Frameworks directory that contains Qt.
# If we're on MacOS X, copy some libraries that are statically linked on
# other platforms but not on MacOS X
#
if("$os" == "darwin") then
set pwd = `pwd`
mkdir $frameworkdir
cd $frameworkdir
ln -s ../lib/libqt.$SHLIB_SOEXT libqt.3.$SHLIB_SOEXT
cd $pwd
# Copy the Python framework. The link in lib/python points to the directory
# that contains the Python framework.
cp -R $VisItDir/lib/python/Python.framework $frameworkdir
cp $VisItDir/lib/libmili.$SHLIB_SOEXT $libdir
cp $VisItDir/lib/libgahl.$SHLIB_SOEXT $libdir
cp $VisItDir/lib/libhdf5.$SHLIB_SOEXT $libdir
endif
#
......@@ -745,12 +751,10 @@ cp $VisItDir/include/python/*.h $incdir/python
# Copy the QT headers to the include directory if we are using the
# Free edition. Copy the license there as well.
#
if ("$os" != "darwin") then
cp $VisItDir/include/qt/[a-pr-zA-Z]*.h $incdir/qt
cp $VisItDir/include/qt/q[a-l]*.h $incdir/qt
cp $VisItDir/include/qt/q[m-zA-Z]*.h $incdir/qt
cp $VisItDir/clearcase_bin/QTLICENSE.* $incdir/qt
endif
cp $VisItDir/include/qt/[a-pr-zA-Z]*.h $incdir/qt
cp $VisItDir/include/qt/q[a-l]*.h $incdir/qt
cp $VisItDir/include/qt/q[m-zA-Z]*.h $incdir/qt
cp $VisItDir/clearcase_bin/QTLICENSE.* $incdir/qt
#
# Copy the help files to the distribution.
......