Collab:VisItWiki BuildingVisIt

This page is essentially a log by Hank Childs, detailing the steps Hank took to port VisIt to a new machine. Most non-developers should just use the anonymous SVN repository for checkout (e.g. svn co http://visit.ilight.com/svn/visit/trunk/src/ for a trunk checkout). Since I am a developer, I wanted to check out using my NERSC SVN account, so I could commit any changes. This page most relates to the developer point of view (i.e. getting SVN scripts set up, passwordless ssh, etc.)

Machine setup

The machine doesn't have wget, but it does have svn. If it didn't have either wget or svn, I would have resorted to scp'ing in the files I needed.

Steps followed

Set up passwordless svn

  • There is a how-to here . But there is an extra wrinkle. I am already running passwordless from many other machines and I want to keep doing so. So I need to make sure those other keys are maintained. I'll do that by getting the existing authorized_keys file and just appending to it.
% cd .ssh
% ssh-keygen -t rsa
% scp hrchilds@portal-auth.nersc.gov:~/.ssh/authorized_keys ./svn_nersc_authorized_keys
% cat id_rsa.pub >> svn_nersc_authorized_keys
% scp svn_nersc_authorized_keys hrchilds@portal-auth.nersc.gov:~/.ssh/authorized_keys

Setting up environment

For VisIt's SVN scripts to work, you need to have the environment variable "SVN_NERSC_NAME" defined to be your account name at portal-auth.nersc.gov. (My account name on portal-auth.nersc.gov is hrchilds.) In this case, the shell was bash.

% echo "export SVN_NERSC_NAME=hrchilds" >> .bash_profile

Getting VisIt's SVN scripts

VisIt has a set of scripts that help with SVN actions. I got these scripts manually:

% svn co svn+ssh://hrchilds@edison.nersc.gov/project/projectdirs/visit/svn/visit/trunk/src/tools/dev/scripts

Checking out the trunk

The first step is really to build the third party libraries. But the script build_visit can do this and it is located with VisIt's source code on the Subversion trunk.

 % scripts/co_trunk /src

This took about ten minutes for me, because it checks out each of VisIt's source files one at a time (I believe) and it was going back and forth between the U.S. and Europe.

build_visit

The build_visit script is located at trunk/src/tools/dev/scripts/build_visit. We create a link to build_visit (and the bv_support directory) outside the SVN working copy, because it would otherwise download files into the Subversion working copy of the VisIt source tree. We also tell the build_visit script to install the packages that we build to a directory called thirdparty_shared. Unless otherwise specified, build_visit will store the third party libraries in a visit subdirectory from where the script is run.

 % cd trunk
 % mkdir thirdparty_shared
 % ln -s ./src/tools/dev/scripts/build_visit .
 % ln -s ./src/tools/dev/scripts/bv_support .
 % ./build_visit --console --svn --thirdparty-path ./thirdparty_shared

I ran it specifically from ~/trunk, because the build_visit script looks for the VisIt source tree at ./src. If I ran it from one level up, it wouldn't have realized I had already checked it out.

  • --console means don't use the graphical interface.
  • --svn means check out files using Subversion.

Future builds

The build_visit script placed all of the third party libraries into trunk/visit. You can either leave them there, or relocate them to another directory. A good reason to relocate them might be to put them in a more permanent location or to make the directory available to more folks. The build_visit script also created a file named hostname.conf. Copy that file into the trunk/src/config-site directory. When you run the VisIt configure, it will find that file and be able to locate all of the third party libraries. Restated, setting up that file means that you don't have to run build_visit again in the future ... you only have to do a Subversion checkout and compile the VisIt code itself.