Skip to content

Add Python wrapper libraries and source functions to ISSM module #333

Description

@lawrenceabird

Background

When working with ISSM, much of the accompanying tools/infrastructure require the ISSM_DIR Environment Variable to point to the parent source directory. For example, for an [old] non-spack build of ISSM on gadi:

>>> echo $ISSM_DIR
/home/565/lb9857/issm/trunk

>>> $ISSM_DIR
aclocal.m4      bin          config.h.in~   configure     diff.txt  execution         lib        m4           Makefile.in  patches     scripts   test
autom4te.cache  config.h     config.log     configure.ac  etc       externalpackages  libtool    Makefile     make.out     README      src
aux-config      config.h.in  config.status  configure.sh  examples  jenkins           ltmain.sh  Makefile.am  packagers    README.rtf  stamp-h1

When building ISSM with Python wrappers (our default and recommended approach), we must be able to access the following directories:

  • $ISSM_DIR/bin/ - contains the issm.exe executable
  • $ISSM_DIR/lib/ - contains the shared libraries created when building with Python wrappers.

To support pre- and pos-processing of ISSM models within Python, we also need to access existing python functions that exist within various sub-directories in $ISSM_DIR/src/m/... for import to Python.

Current issue(s)

  1. $ISSM_DIR is not set when running module load access-issm.

    • When installing without spack, we include export ISSM_DIR="<PATH_TO_ISSM_PARENT_DIR>" in our .bash_profile.
  2. It appears that /bin/ is prepended to the $PATH, but /lib/ is not included.

    • When installing without spack, we include source $ISSM_DIR/etc/environment.sh in our .bash_profile. This points to this file.
>>> module load access-issm
Loading access-issm/2025.03.0-yyo5t4w
  Loading requirement: access-triangle/1.6.1-iju5vxs issm/git.2025.04.11_2025.04.11-p5mv6jc

>>> module show access-issm
-------------------------------------------------------------------
/g/data/vk83/apps/spack/0.22/release/modules/linux-rocky8-x86_64/access-issm/2025.03.0-yyo5t4w:

module-whatis   { ACCESS-ISSM bundle containing the issm Package.}
module          load issm/git.2025.04.11_2025.04.11-p5mv6jc
prepend-path    CMAKE_PREFIX_PATH /g/data/vk83/apps/spack/0.22/release/linux-rocky8-x86_64/gcc-13.2.0/access-issm-git.2025.03.0_2025.03.0-yyo5t4wqyskuazm4oumc35jhbu3fczmf/.
-------------------------------------------------------------------

>>> module show issm/git.2025.04.11_2025.04.11-p5mv6jc
-------------------------------------------------------------------
/g/data/vk83/apps/spack/0.22/release/modules/linux-rocky8-x86_64/issm/git.2025.04.11_2025.04.11-p5mv6jc:

module-whatis   {Ice-sheet and Sea-Level System Model}
module          load access-triangle/1.6.1-iju5vxs
prepend-path    PATH /g/data/vk83/apps/spack/0.22/release/linux-rocky8-x86_64/gcc-13.2.0/issm-git.2025.04.11_2025.04.11-p5mv6jclgptt4xpvb3xq4mrzzdgkebny/bin
prepend-path    CMAKE_PREFIX_PATH /g/data/vk83/apps/spack/0.22/release/linux-rocky8-x86_64/gcc-13.2.0/issm-git.2025.04.11_2025.04.11-p5mv6jclgptt4xpvb3xq4mrzzdgkebny/.
-------------------------------------------------------------------
  1. Existing Python functions $ISSM_DIR/src/m/... are not available for import to Python.
    • When installing without spack, we source this file when launching a new Python terminal to pre- and post-process ISSM models.

Required updates

  • Update spack-package to export ISSM_DIR=<PATH_TO_PARENT_DIR>
  • Update spack-package to add both bin/ and lib/ to $PATH.
  • Update spack-package to retain all *.py files in $ISSM_DIR/src/m/... for import to Python for pre- and post-processing.

Related testing

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions