Buildspec Tutorial

Please proceed to Buildspec Overview to get an overview of how to write buildspecs. This section can be done on your workstation.

Tutorials Setup

Note

The tutorial setup is required if you want to run buildspecs using the spack schema.

To get started for this tutorial, you will need docker on your machine to pull the container. At NERSC, you can use podman or shifter to access the container, you will need to start an interactive shell.

docker pull ghcr.io/buildtesters/buildtest_spack:spack-sc23
docker run -it ghcr.io/buildtesters/buildtest_spack:spack-sc23

If you are using podman on Perlmutter, please do the following

mkdir -p $HOME/.config/containers
touch $HOME/.config/containers/storage.conf

Next add the following content in storage.conf:

[storage]
  driver = "overlay"
  graphroot = "/tmp/<USER>/storage"
  [storage.options]
    size = ""
    remap-uids = ""
    remap-gids = ""
    ignore_chown_errors = "true"
    remap-user = ""
    remap-group = ""
    mount_program = "/usr/bin/fuse-overlayfs"
    mountopt = ""

Please update the path /tmp/<USER>/storage to your username.

Next, you can pull the container and run an interactive shell as follows

podman pull ghcr.io/buildtesters/buildtest_spack:spack-sc23
podman run -it ghcr.io/buildtesters/buildtest_spack:spack-sc23
shifter -E --image=registry.services.nersc.gov/siddiq90/buildtest_spack:latest -- /bin/bash --login

Once you are in the container, your prompt should change and you will be in the container. You can confirm this by running whoami which should show the following

spack@ef50085c8a81: whoami
spack

Please make sure you run the following command when starting the container environment which will setup spack and module environment.

source /etc/profile

Next we need to install buildtest and setup environment for this tutorial. We recommend you clone buildtest in your HOME directory. Please run the following commands to setup buildtest for this tutorial:

cd ~
git clone https://github.com/buildtesters/buildtest.git
cd buildtest
source scripts/spack_container/setup.sh

This container provides a software stack built with spack, you should see buildtest, spack and module command in your path. The configuration file used for this container is set via BUILDTEST_CONFIGFILE.

spack@ef50085c8a81:~/buildtest$ which spack
/home/spack/spack/bin/spack

spack@ef50085c8a81:~/buildtest$ which buildtest
/home/spack/buildtest/bin/buildtest

spack@ef50085c8a81:~/buildtest$ module --version

Modules based on Lua: Version 8.7.18  2023-01-14 07:33 -06:00
    by Robert McLay mclay@tacc.utexas.edu

(buildtest) spack@87354844bbf3:~/buildtest$ echo $BUILDTEST_CONFIGFILE
/home/spack/buildtest/buildtest/settings/spack_container.yml