PAVE Installation — Version 3.0

Table of Contents

  1. Download
  2. Default Installation
  3. (Re-)Compiling PAVE Source
  4. Building External Libraries


Download

PAVE is available on GitHub from <https://github.com/cjcoats/pave-3.0>. To install a copy of this source code from GitHub, go to the directory under which do the installation (the default is ${HOME}/apps/; to use another directory, you'll have to make a few edits, as described in the next section.) and then do the command
    git clone https://github.com/cjcoats/pave-3.0
    
This will create and populate a directory pave-3.0 with sub-directories bin, include, info, lib, man, maps, share, and src, as well as files pave-3.0/AAREADME, pave-3.0/COPYRIGHT, pave-3.0/GPL.txt, and pave-3.0/INSTALL.

Note that this release also contains program arc2mcidas used for converting map-formats from ARC format to the MCIDAS format used by PAVE.

Return To Table of Contents


Default Installation

The Git-hub distribution contain (ideally) all the resources necessary to run on a current 64-bit x86 Linux system. These resources are built "as statically a possible", so that the executables should run on most systems unchanged. All that will be necessary is to "twiddle" a few directory paths ini various files.

Suppose you've installed pave-3.0 under directory FOO as above (where FOO is not ${HOME}/apps/), creating directory FOO/pave-3.0. Let us call the resulting directory PAVE_DIR. You will need to edit the following files so that the value of shell-variable PAVE_DIR is now the correct FOO/pave-3.0

pave-3.0/bin/ASSIGNS.csh
pave-3.0/bin/PAVE.csh
pave-3.0/bin/pave
pave-3.0/src/Makeinclude
If your system does not have the rxvt terminal application, you will wish to change the definition of TERMINAL in pave-3.0/bin/pave to another terminal application, such as xterm. If you're doing PAVE development, you may wish to change the definition of DEBUGGER from ddd to some other debugger such as gdbg or kdbg. Note that ASSIGNS.debug.csh and pave-3.0/src/Makeinclude.debug set up the execution environment and the build environment for a debug-compiled PAVE executable.

If you source pave-3.0/bin/ASSIGNS.csh, it will put the pave-wrapper script pave in your PATH, so that you may run it from anywhere you like without having to specify its full file-system path. (This is not _necessary_ of course, and there are tricks with alias to do the same sort of thing...)

If you get "shared library" errors on your system, you may need to recompile PAVE (below); if you're using a completely different compiler system (e.g., using Intel compilers), you may need to re-build/re-install the external libraries and then re-compile everything (also below).

Return To Table of Contents


(Re-)Compiling PAVE Source

This will be done under directory pave-3.0/src. PAVE normally ships with a fairly-complete set of libraries, which will be found in the pave-3.0/lib directory (as well as a few "extras" that turn up when you build and install these external packages:
libBLT.a
libX11-xcb.a
libX11.a
libXm.a
libXt.a
libioapi.a
libnetcdf.a
libplplotftk.a
libproj.a
libtcl.a
libtk.a
These libraries are also built for the Linux2_x86_64gfort_medium compiler-and-memory-model used for the PAVE executable, so should not need to be re-built unless you change the memory model, etc., or unless you're running on an ancient (e.g., RedHat5) system. If you do, you will need to rebuild and install the libraries first; as described in the section below.

File pave-3.0/src/Makeinclude contains the definitions used by make in order to build the PAVE executable for your system. It is currently set up to use the GNU gcc/g++/gfortran compiler set, to assume that I/O API 3.2 is installed under ${HOME}/ioapi-3.2 and also built for Linux2_x86_64gfort_medium compiler-and-memory-model, and to build under directory PAVE_DIR = ${HOME}/apps/pave-3.0. Files Makeinclude.template and Makeinclude.debug are configuration-controlled templates which can be copied to Makeinclude and then customized for your intended installation:

  1. Make sure that I/O API version 3.2 is built for the binary compile-type you will be using.
  2. In particular, make sure the definitions are correct for BUILD, PAVE_DIR, IOSRC, and IOLIB.
  3. It is entirely possible that your system may have X-windows libraries libX11.[so a], libXt.[so a] libXm.[so a] (most possibly in shared object ".so" form). If so you may want to modify the definition of EXTLIBS to use them.
  4. Your edition of the C++ compiler g++ will somewhere have a backwards directory, so that C++ programs can use (backwards-compatible) C-style include-files. Find this directory
    find /usr/include -name backwards
    and modify CXXSTUFF accordingly.
If you are building PAVE for some different compiler-set, you will need first to do the matching Models-3 I/O API build (and netCDF build), copy or link the libioapi.a and libnetcdf*.a to pave-3.0/lib, and then use the I/O API's corresponding Makeinclude.$BIN to provide the definitions used in your pave-3.0/src/Makeinclude. Also set make-variable BUILD to the BIN used for the I/O API build. Then in directory pave-3.0/src do the commands make dirs followed by make. Or for PAVE only (and not arc2mcidas), cd pave-3.0/src/pave; make dirs; make. If this fails, you will probably need to build the external libraries (see section below) and then come back and re-compile.

Return To Table of Contents


Building External Libraries

Directory pave-3.0/external_libs originally contains two scripts, untar.csh and buildinstall.csh, and a directory tars that contains bzip2'ed tar-files for the external libraries used.

untar.csh will uncompress/untar all of the packages under the pave-3.0/external_libs directory.

In the resulting pave-3.0/external_libs/blt2.4z/src/bltTree.c, we need to fix a bug: the preprocessor definitions for START_LOGSIZE and MAX_LIST_VALUES from lines 104 and following need to be moved ahead of the #if (SIZEOF_VOID_P == 8), to line 98. (This is a bug-fix for 64-bit medium memory model.)

buildinstall.csh will attempt to build and install all of the resulting libraries, or it may be used as a template giving instructions how to configure, build, and install individual libraries. It begins with a number of setenv definitions for directories and for use by GNU configure. You will need to edit these definitions to match your intended build, as well as the I/O API build you intend to use.

These are followed by a sequence of commands that build that package and install it under pave-3.0/bin, pave-3.0/lib, etc:

cd <package-directory> configure <options> make make install <possible extra commands...>
performed in dependency-order (e.g., tk depends upon tcl, so that tcl is built and installed first).

The build for plplot-5.3.1 fails on my system, but only after successfully building plrender, plserver, and pltcl, that will be copied to pave-3.0/bin.

Note that this will have the effect of building not only the libraries needed by PAVE, but also a number of other libraries and programs (including, for example, even the Motif Window Manger, mwm). That's the way the GNU configure script works :-)

Note also that we are using an older netcdf-3.6.3 version, since for more current netCDF C and Fortran 4.4.x, we had troubles getting configure to work for a medium-memory-model build -- configure claimed it couldn't figure out how many bytes were required by a medium-memoryu-model C pointer ;-( If you can fix this for a more current netCDF C and Fortran (such as 4.4 or later), I would enjoy hearing about it, and updating PAVE accordingly.

Return To Table of Contents


Return To PAVE Users Guide

Return To cjcoats.github.io

    $Id: index.html 77 2018-01-18 15:29:37Z coats $