Tutorial setup
If you have not done the prior sections, you’ll need to start the docker image:
docker run -it ghcr.io/spack/tutorial:sc25
and then set Spack up like this:
git clone --depth=2 --branch=releases/v1.1 https://github.com/spack/spack
. spack/share/spack/setup-env.sh
spack repo update builtin --tag v2025.11.0
spack tutorial -y
spack bootstrap now
spack compiler find
See the Basic Installation Tutorial for full details on setup.
For more help, join us in the #tutorial channel on Slack – get an invitation at slack.spack.io
Package Creation Tutorial¶
This tutorial walks you through the steps for creating and debugging a simple Spack package.
We will develop and debug a package using an iterative approach to gain more experience with additional Spack commands.
For consistency, we will create a package for mpileaks (https://github.com/LLNL/mpileaks), an MPI debugging tool.
What is a Spack Package?¶
Spack packages are installation scripts, which are essentially recipes for building (and testing) software.
They define properties and behavior of the build, such as:
where to find and how to retrieve the software;
its dependencies;
options (variants) for building from source;
known build constraints (conflicts);
known requirements (requires); and
They can also define checks of the installed software that can be performed after the installation.
Once we’ve specified a package’s recipe, users can ask Spack to build the software with different features on any of the supported systems.
Getting Started¶
In order to avoid modifying your Spack installation with the package we are creating, let’s create and add a package repository just for this tutorial using the following commands:
$ spack repo create $HOME/my_pkgs tutorial
==> Created repo with namespace 'tutorial'.
==> To register it with spack, run this command:
spack repo add /home/spack/my_pkgs/spack_repo/tutorial
$ spack repo add $HOME/my_pkgs/spack_repo/tutorial
==> Added repo to config with name 'tutorial'.
Doing this ensures changes we make here do not adversely affect other parts of the tutorial.
Now let’s look at the available repositories using spack repo list:
$ spack repo list
[+] tutorial v2.4 /home/spack/my_pkgs/spack_repo/tutorial
[+] builtin v2.2 /home/spack/.spack/package_repos/fncqgg4/repos/spack_repo/builtin
Notice we now have two repositories: tutorial and builtin.
We can see how they are configured using spack config get repos:
$ spack config get repos
repos:
tutorial: /home/spack/my_pkgs/spack_repo/tutorial
builtin:
git: https://github.com/spack/spack-packages.git
branch: releases/v2025.11
Notice the default builtin repository is checked out at the latest release branch.
You can find out more about repositories at Package Repositories and the command at spack repo.
Creating the Package File¶
Note
Before proceeding, make sure your SPACK_EDITOR, VISUAL, or EDITOR environment variable is set to the name or path of your preferred text editor.
Details can be found at Controlling the Editor.
Suppose you want to install software that depends on mpileaks but found Spack did not already have a built-in package for it. This means you are going to have to create one.
Spack’s create command builds a new package from a template by taking the location of the package’s source code and using it to:
create a package skeleton; and
open the file in your editor of choice.
The mpileaks source code is available in a tarball in the software’s repository (https://github.com/LLNL/mpileaks).
Spack will look at the contents of the tarball and generate a package when we run spack create with the URL:
$ spack create --name tutorial-mpileaks --namespace tutorial https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz
==> Using specified package name: 'tutorial-mpileaks'
==> Fetching https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz
[100%] 339.70 KB @ 37.8 MB/s
==> This package looks like it uses the autoreconf build system
==> Created template for tutorial-mpileaks package
==> Created package file: /home/spack/my_pkgs/spack_repo/tutorial/packages/tutorial_mpileaks/package.py
You should now be in your text editor of choice, with the package.py file open for editing.
Your package.py file should reside in the tutorial-mpileaks subdirectory of your tutorial repository’s packages directory, i.e., $HOME/my_pkgs/spack_repo/tutorial/packages/tutorial_mpileaks/package.py.
Take a moment to look over the file.
As we can see from the skeleton contents, the Spack template:
provides the required Spack copyright and license;
provides boilerplate information on the commands for installing and editing the package;
imports and inherits from the inferred build system package;
provides a docstring template;
provides an example homepage URL;
shows how to specify a list of package maintainers;
provides a template for the license;
specifies the version directive with the checksum;
lists the inferred language and other build dependencies;
provides a skeleton for another dependency;
provides a preliminary implementation of the autoreconf method; and
provides a skeleton configure_args method.
Note
The maintainers directive holds a comma-separated list of GitHub user names for those accounts willing to be notified when a change is made to the package. They will also be given an opportunity to review the changes. This information is useful for developers who maintain a Spack package for their own software and/or rely on software maintained by others.
The areas we need to modify are highlighted in the figure below.
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
# ----------------------------------------------------------------------------
# If you submit this package back to Spack as a pull request,
# please first remove this boilerplate and all FIXME comments.
#
# This is a template package file for Spack. We've put "FIXME"
# next to all the things you'll want to change. Once you've handled
# them, you can save this file and test your package like this:
#
# spack install tutorial-mpileaks
#
# You can edit this file again by typing:
#
# spack edit tutorial-mpileaks
#
# See the Spack documentation for more information on packaging.
# ----------------------------------------------------------------------------
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack.package import *
class TutorialMpileaks(AutotoolsPackage):
"""FIXME: Put a proper description of your package here."""
# FIXME: Add a proper url for your package's homepage here.
homepage = "https://www.example.com"
url = "https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz"
# FIXME: Add a list of GitHub accounts to
# notify when the package is updated.
# maintainers("github_user1", "github_user2")
# FIXME: Add the SPDX identifier of the project's license below.
# See https://spdx.org/licenses/ for a list. Upon manually verifying
# the license, set checked_by to your Github username.
license("UNKNOWN", checked_by="github_user1")
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
# FIXME: Add additional dependencies if required.
# depends_on("foo")
def autoreconf(self, spec, prefix):
# FIXME: Modify the autoreconf method as necessary
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
# FIXME: Add arguments other than --prefix
# FIXME: If not needed delete this function
args = []
return args
Tip
We generally recommend you use the project-prepared archive url, when available, instead of the GitHub-generated Source code (tar.gz) since those tend to be less volatile in the face of GitHub shasum algorithm changes.
In this case, that would mean copying the url labeled mpileaks-1.0.tar.gz under the v1.0 release assets, or simply https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz.
The sha256 is different since the file has build customizations.
A key difference is the presence of autogen.sh, which is a convenience script Autotools projects can create to customize their reconfiguration process.
If you choose to use that URL, you should replace the more general call to autoreconf() with an invocation of the autogen.sh script.
An example of setting up and using the script can be found in the sos package.
Since we are providing a url, we can confirm the checksum, or sha256, calculation.
Exit your editor to return to the command line and use the spack checksum command:
$ spack checksum tutorial-mpileaks 1.0
==> Found 1 version of tutorial-mpileaks
==> Fetching https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz
[100%] 339.70 KB @ 36.6 MB/s
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
where the entire version directive is provided for your convenience.
Before proceeding with changes, let’s see what Spack does with the skeleton by trying to install the package using the spack install command:
$ spack install tutorial-mpileaks
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /usr (external gcc-11.4.0-ml7cem5pfeoluzbhb7jsiisemvoauaz5)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ncdxq3juvboefpavgmovg5rb5bx76ohz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-c6d2zljdklrjdya4xy236brmpdonc2xo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.2.4-zk6keshnphcta4rwsmvvexg5e25uqnbd
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-aq7qwy6yezwhtwdrsyqen65rmjmlth27
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-cvuukniutivcofp25gugkl2g5y7aur4o
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-r3ant5t3prottmtc7yneqj6cr5gs6vvt
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-6ib4pvm3dvnewlphh52mrxjbd75oewev
==> No binary for tutorial-mpileaks-1.0-f6zjbzmtbwk2ng2pdw5mdv6cwfy4xlos found: installing from source
==> Installing tutorial-mpileaks-1.0-f6zjbzmtbwk2ng2pdw5mdv6cwfy4xlos [19/19]
==> Fetching https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz
[100%] 339.70 KB @ 28.1 MB/s
==> No patches needed for tutorial-mpileaks
==> tutorial-mpileaks: Executing phase: 'autoreconf'
==> tutorial-mpileaks: Executing phase: 'configure'
==> Error: ProcessError: Command exited with status 1:
'/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-f6zjbzmtbwk2ng2pdw5mdv6cwfy4xlos/spack-src/configure' '--prefix=/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-f6zjbzmtbwk2ng2pdw5mdv6cwfy4xlos'
13 errors found in build log:
16 libtoolize: copying file 'm4/lt~obsolete.m4'
17 autoreconf: configure.ac: not using Intltool
18 autoreconf: configure.ac: not using Gtkdoc
19 autoreconf: running: aclocal --force -I m4
20 autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-r3a
nt5t3prottmtc7yneqj6cr5gs6vvt/bin/autoconf --force
21 configure.ac:9: warning: 'AM_CONFIG_HEADER': this macro is obsolete.
>> 22 configure.ac:9: You should use the 'AC_CONFIG_HEADERS' macro instead.
>> 23 /tmp/root/spack-stage/spack-stage-autoconf-2.72-r3ant5t3prottmtc7yneqj6cr5gs6vvt/s
pack-src/lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
>> 24 aclocal.m4:745: AM_CONFIG_HEADER is expanded from...
>> 25 configure.ac:9: the top level
26 configure.ac:38: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
>> 27 configure.ac:38: You should run autoupdate.
>> 28 m4/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
>> 29 configure.ac:38: the top level
30 configure.ac:47: warning: The macro 'AC_HEADER_STDC' is obsolete.
>> 31 configure.ac:47: You should run autoupdate.
>> 32 /tmp/root/spack-stage/spack-stage-autoconf-2.72-r3ant5t3prottmtc7yneqj6cr5gs6vvt/s
pack-src/lib/autoconf/headers.m4:663: AC_HEADER_STDC is expanded from...
>> 33 configure.ac:47: the top level
34 autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-r3a
nt5t3prottmtc7yneqj6cr5gs6vvt/bin/autoheader --force
35 autoreconf: running: automake --add-missing --copy --force-missing
>> 36 configure.ac:26: installing 'config/compile'
>> 37 configure.ac:19: installing 'config/missing'
38 src/Makefile.am:14: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_C
PPFLAGS')
39 src/Makefile.am: installing 'config/depcomp'
40 autoreconf: 'config/install-sh' is updated
41 autoreconf: 'config/config.sub' is updated
42 autoreconf: 'config/config.guess' is updated
43 autoreconf: Leaving directory '.'
...
80 checking for mpipgcc... no
81 Checking whether not-found responds to '-showme:compile'... no
82 Checking whether not-found responds to '-showme'... no
83 Checking whether not-found responds to '-compile-info'... no
84 Checking whether not-found responds to '-show'... no
85 /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-f6zjbzmtbwk2ng2pdw5mdv6cw
fy4xlos/spack-src/configure: line 5935: Echo: command not found
>> 86 configure: error: unable to locate adept-utils installation
See build log for details:
/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-f6zjbzmtbwk2ng2pdw5mdv6cwfy4xlos/spack-build-out.txt
The build was unsuccessful.
The error indicates configure is unable to find the installation location of a dependency.
We will now fill in the provided placeholders and customize the package for the software as we:
document key information about this package;
add dependencies; and
add the configuration arguments needed to build the package.
Adding Package Documentation¶
First, let’s fill in the documentation.
Bring tutorial-mpileaks’ package.py file back up in your editor with the spack edit command:
$ spack edit tutorial-mpileaks
Let’s make the following changes:
remove the boilerplate comments between and including the dashed lines at the top;
replace the first
FIXMEcomment with a description ofmpileaksin the docstring;replace the
homepageproperty with the correct link;uncomment the
maintainersdirective and replace the placeholder with your GitHub user name; andreplace the
licenseof the project with the correct name and the placeholder with your GitHub user name.
Tip
It helps to have the mpileaks repository up in your browser since you can copy-and-paste some of the values from it.
Note
We will exclude the Copyright clause and license identifier in the remainder of the package snippets here to reduce the length of the tutorial documentation; however, the copyright is required for packages contributed back to Spack.
Now make the changes and additions to your package.py file.
The resulting package should contain – sans the copyright and license – the following information:
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack.package import *
class TutorialMpileaks(AutotoolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and MPI_Datatypes."""
homepage = "https://github.com/LLNL/mpileaks"
url = "https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz"
maintainers("adamjstewart")
license("BSD", checked_by="adamjstewart")
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
# FIXME: Add additional dependencies if required.
# depends_on("foo")
def autoreconf(self, spec, prefix):
# FIXME: Modify the autoreconf method as necessary
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
# FIXME: Add arguments other than --prefix
# FIXME: If not needed delete this function
args = []
return args
At this point we’ve only updated key documentation within the package. It won’t help us build the software; however, the information is now available for review.
Let’s enter the spack info command for the package:
$ spack info --phases tutorial-mpileaks
AutotoolsPackage: tutorial-mpileaks
Description:
Tool to detect and report leaked MPI objects like MPI_Requests and
MPI_Datatypes.
Homepage: https://github.com/LLNL/mpileaks
Preferred version:
1.0 https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz
Safe versions:
1.0 https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz
Deprecated versions:
None
Variants:
build_system [autotools] autotools
Build systems supported by the package
Installation Phases:
autoreconf configure build install
Build Dependencies:
autoconf automake c cxx fortran gmake gnuconfig libtool m4
Link Dependencies:
None
Run Dependencies:
None
Licenses:
BSD
Take a moment to look over the output. You should see the information derived from the package now includes the description, homepage, maintainer, and license we provided.
Also notice it shows:
the preferred version derived from the code;
the default
AutotoolsBuilderpackage installation phases;the gmake and gnuconfig build dependencies inherited from
AutotoolsPackage; andboth link and run dependencies are currently
None.
As we fill in more information about the package, the spack info command will become more informative.
Note
More information on this build system package is provided in AutotoolsPackage.
The full list of build systems known to Spack can be found at Build Systems.
Now we’re ready to start filling in the build recipe.
Tip
Refer to the style guide for Spack’s guidelines.
Adding Dependencies¶
First we’ll add the dependencies determined by reviewing documentation in the software’s repository (https://github.com/LLNL/mpileaks).
We can see from the README file’s instructions, mpileaks software relies on three third-party libraries:
mpi,adept-utils, andcallpath.
Note
Fortunately, all of these dependencies are built-in packages in Spack; otherwise, we would have to create packages for them as well.
Bring tutorial-mpileaks’ package.py file back up with the spack edit command:
$ spack edit tutorial-mpileaks
and add the dependencies by specifying them using the depends_on directive as shown below:
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack.package import *
class TutorialMpileaks(AutotoolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and MPI_Datatypes."""
homepage = "https://github.com/LLNL/mpileaks"
url = "https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz"
maintainers("adamjstewart")
license("BSD", checked_by="adamjstewart")
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("mpi")
depends_on("adept-utils")
depends_on("callpath")
def autoreconf(self, spec, prefix):
# FIXME: Modify the autoreconf method as necessary
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
# FIXME: Add arguments other than --prefix
# FIXME: If not needed delete this function
args = []
return args
Adding dependencies tells Spack that it must ensure those packages are installed before it can build our package.
Note
The mpi dependency is different from the other two in that it is a virtual dependency.
That means Spack must satisfy the dependency with a package that provides the mpi interface, such as openmpi or mvapich2.
We call such packages providers since they implement the virtual dependency’s interface.
Let’s check that dependencies are effectively built when we try to install tutorial-mpileaks:
$ spack install tutorial-mpileaks
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /usr (external gcc-11.4.0-ml7cem5pfeoluzbhb7jsiisemvoauaz5)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
==> Fetching file:///mirror/blobs/sha256/cf/cfcf4c5d32808d1fe4fc84dd570eb68e5758719a5662ae042f77fe4541783be8
[100%] 15.09 MB @ 451.3 GB/s
==> Extracting boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri from binary cache
==> boost: Successfully installed boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri
Search: 0.00s. Fetch: 0.19s. Install: 2.53s. Extract: 2.48s. Relocate: 0.02s. Total: 2.72s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri
==> Installing boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri [5/52]
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libpciaccess-0.17-txbwcin227323qmxmg4opnj4r4tvenz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/numactl-2.0.18-yzbm5q6nblzcjccy7kddijqdnkgkxvtp
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
==> Fetching file:///mirror/blobs/sha256/51/5178c570178758ff52902bf249dccd43196d5f216e872874534874ec745bed70
[100%] 730.30 KB @ 875.7 MB/s
==> Extracting libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt from binary cache
==> libiberty: Successfully installed libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt
Search: 0.00s. Fetch: 0.01s. Install: 0.06s. Extract: 0.02s. Relocate: 0.01s. Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt
==> Installing libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt [10/52]
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pkgconf-2.5.1-f4qiprwjcd2q3fp63uzgp47f3kw66r5h
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-qtepnkrdvqazp3jmfnheapckbemejrhq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mbedtls-2.28.9-bz3ghzheol2ecbi3vpldgbb3yd7yblle
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-yzaocbs7geczi5d7qyvmqwrxi4r7dvph
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxcrypt-4.4.38-yiij42powrfh2mwjebwiqxmkvinutofr
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ncdxq3juvboefpavgmovg5rb5bx76ohz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/nghttp2-1.48.0-ft5kpbdiz6kctcooz4ksam37pskskehg
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-5trxrsws5dig3bf63uc4xzcbsywsqtjo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssl-3.6.0-gv7wpik32unrnickoxbgm5iqza572w6s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-kaz756eya6nj3ardls4b6aiaclkaux7i
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libssh2-1.11.1-txa2olxuoxfkv7jdjrdw27djcf6fa5sz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-c6d2zljdklrjdya4xy236brmpdonc2xo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libedit-3.1-20240808-hdzcfgipukcqxsw7hjkksstbbz5otx3x
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/hwloc-2.12.2-4hos3725nynk2bsskofvtcmk6pmtcjg4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libevent-2.1.12-lprginh6npwjirdhmghjqjckaa7ukrri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-lfgvgvawnpdxxz7prdfn4vsfgtwruxjc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/curl-8.15.0-isdtvvdziidtozwacfgtdcv3cukd7uuz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-aq7qwy6yezwhtwdrsyqen65rmjmlth27
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pmix-6.0.0-yqlblh6p4u6vwmfhtffyrnxyqrliw2jm
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-cakgj4ntlncc4zsgty5z6sa7f7mwvlt7
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/cmake-3.31.9-ivvor7vdsqvplv65yyfragoxppyfi33t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-62kt5y4kl7uhwljviixr3m4dyf5vre7t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/elfutils-0.193-brbwl6lkh323duhprbcxlmwwk7zz2cs2
==> Fetching file:///mirror/blobs/sha256/17/17669d34e350ff75504670ca8f5534fdad750277d0a21eeeece7e9c6327dbc99
[100%] 556.90 KB @ 728.1 MB/s
==> Extracting intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask from binary cache
==> intel-tbb: Successfully installed intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask
Search: 0.00s. Fetch: 0.01s. Install: 0.10s. Extract: 0.04s. Relocate: 0.02s. Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask
==> Installing intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask [41/52]
==> Fetching file:///mirror/blobs/sha256/7d/7dc5d2212ed7dec228a44e43949ad369d55c87768b8051886d39131e893bcf05
[100%] 607.33 KB @ 783.8 MB/s
==> Extracting libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn from binary cache
==> libdwarf: Successfully installed libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn
Search: 0.00s. Fetch: 0.01s. Install: 0.33s. Extract: 0.02s. Relocate: 0.01s. Total: 0.34s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn
==> Installing libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn [42/52]
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/krb5-1.21.3-hnmy4fwwly5s4xifp5roodj6opppwwiu
==> Fetching file:///mirror/blobs/sha256/6a/6aab55f778d86c103cfd65fed4a41333a1a883b47511b81179882619b3d04d7d
[100%] 67.32 MB @ 451.3 GB/s
==> Extracting dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv from binary cache
==> dyninst: Successfully installed dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv
Search: 0.00s. Fetch: 0.02s. Install: 0.27s. Extract: 0.18s. Relocate: 0.05s. Total: 0.29s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv
==> Installing dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv [45/52]
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-pzmnwzmdyfj2g64cb6fycltaeiz2edau
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-cxdcxo5pdxc2nk7domxigdqiygg4757e
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/prrte-4.0.0-buin62mintd2cczzj6vsvai45vhpgg6w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln
==> Fetching file:///mirror/blobs/sha256/64/647c4eae7a6c723c3cb0a370c327ff8d20cec5d5541ecffff7cf90b0e687de87
[100%] 81.78 KB @ 327.0 MB/s
==> Extracting adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4 from binary cache
==> adept-utils: Successfully installed adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4
Search: 0.00s. Fetch: 0.01s. Install: 0.08s. Extract: 0.01s. Relocate: 0.03s. Total: 0.09s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4
==> Installing adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4 [50/52]
==> Fetching file:///mirror/blobs/sha256/47/475ecd5fda133e21df5896983e83943d300f18ac79a47b097de6651c65881fa2
[100%] 126.03 KB @ 457.3 MB/s
==> Extracting callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i from binary cache
==> callpath: Successfully installed callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i
Search: 0.00s. Fetch: 0.01s. Install: 0.09s. Extract: 0.01s. Relocate: 0.04s. Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i
==> Installing callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i [51/52]
==> No binary for tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2 found: installing from source
==> Installing tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2 [52/52]
==> Using cached archive: /home/spack/spack/var/spack/cache/_source-cache/archive/24/24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9.tar.gz
==> No patches needed for tutorial-mpileaks
==> tutorial-mpileaks: Executing phase: 'autoreconf'
==> tutorial-mpileaks: Executing phase: 'configure'
==> Error: ProcessError: Command exited with status 1:
'/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src/configure' '--prefix=/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2'
13 errors found in build log:
16 libtoolize: copying file 'm4/lt~obsolete.m4'
17 autoreconf: configure.ac: not using Intltool
18 autoreconf: configure.ac: not using Gtkdoc
19 autoreconf: running: aclocal --force -I m4
20 autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgs
f5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoconf --force
21 configure.ac:9: warning: 'AM_CONFIG_HEADER': this macro is obsolete.
>> 22 configure.ac:9: You should use the 'AC_CONFIG_HEADERS' macro instead.
>> 23 /tmp/root/spack-stage/spack-stage-autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/s
pack-src/lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
>> 24 aclocal.m4:745: AM_CONFIG_HEADER is expanded from...
>> 25 configure.ac:9: the top level
26 configure.ac:38: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
>> 27 configure.ac:38: You should run autoupdate.
>> 28 m4/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
>> 29 configure.ac:38: the top level
30 configure.ac:47: warning: The macro 'AC_HEADER_STDC' is obsolete.
>> 31 configure.ac:47: You should run autoupdate.
>> 32 /tmp/root/spack-stage/spack-stage-autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/s
pack-src/lib/autoconf/headers.m4:663: AC_HEADER_STDC is expanded from...
>> 33 configure.ac:47: the top level
34 autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgs
f5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoheader --force
35 autoreconf: running: automake --add-missing --copy --force-missing
>> 36 configure.ac:26: installing 'config/compile'
>> 37 configure.ac:19: installing 'config/missing'
38 src/Makefile.am:14: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_C
PPFLAGS')
39 src/Makefile.am: installing 'config/depcomp'
40 autoreconf: 'config/install-sh' is updated
41 autoreconf: 'config/config.sub' is updated
42 autoreconf: 'config/config.guess' is updated
43 autoreconf: Leaving directory '.'
...
73 checking whether the compiler supports GNU C++... yes
74 checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-
ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ accepts -g... yes
75 checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntcc
uj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ option to enable C++11 features
... none needed
76 checking dependency style of /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-
wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++... gcc3
77 checking for /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3n
zds4xypcualamx3cvisln/bin/mpicc... /home/spack/spack/opt/spack/linux-x86_64_v3/ope
nmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin/mpicc
78 Checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvo
iw3nzds4xypcualamx3cvisln/bin/mpicc responds to '-showme:compile'... yes
>> 79 configure: error: unable to locate adept-utils installation
See build log for details:
/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-build-out.txt
Note
This command may take a while to run and may produce more output if you don’t already have an MPI installed or configured in Spack.
While Spack was unable to install our package, we do see that it identified and built all of our dependencies. It found that:
the
openmpipackage will satisfy ourmpidependency;adept-utilsis a concrete dependency; andcallpathis a concrete dependency.
At this point we need to debug the build problem to determine why Spack cannot install the software.
Debugging Package Builds¶
Our tutorial-mpileaks package is still not building due to an error in the configure phase related to adept-utils.
Experienced Autotools developers will likely already see the problem and its solution.
Let’s take this opportunity to use Spack features to investigate the problem. Our options for proceeding are:
review the build log; and
build the package manually.
Reviewing the Build Log¶
The build log might yield some clues, so let’s look at the contents of the spack-build-out.txt file at the path recommended above by our failed installation:
$ cat /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-build-out.txt
==> tutorial-mpileaks: Executing phase: 'autoreconf'
==> [2025-11-17-08:49:35.696283] '/home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoreconf' '--install' '--verbose' '--force'
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.
libtoolize: copying file 'config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force -I m4
autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoconf --force
configure.ac:9: warning: 'AM_CONFIG_HEADER': this macro is obsolete.
configure.ac:9: You should use the 'AC_CONFIG_HEADERS' macro instead.
/tmp/root/spack-stage/spack-stage-autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/spack-src/lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:745: AM_CONFIG_HEADER is expanded from...
configure.ac:9: the top level
configure.ac:38: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
configure.ac:38: You should run autoupdate.
m4/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
configure.ac:38: the top level
configure.ac:47: warning: The macro 'AC_HEADER_STDC' is obsolete.
configure.ac:47: You should run autoupdate.
/tmp/root/spack-stage/spack-stage-autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/spack-src/lib/autoconf/headers.m4:663: AC_HEADER_STDC is expanded from...
configure.ac:47: the top level
autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:26: installing 'config/compile'
configure.ac:19: installing 'config/missing'
src/Makefile.am:14: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
src/Makefile.am: installing 'config/depcomp'
autoreconf: 'config/install-sh' is updated
autoreconf: 'config/config.sub' is updated
autoreconf: 'config/config.guess' is updated
autoreconf: Leaving directory '.'
==> tutorial-mpileaks: Executing phase: 'configure'
==> [2025-11-17-08:49:39.608432] Find (max depth = None): ['/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src'] ['configure']
==> [2025-11-17-08:49:39.609278] Find complete: ['/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src'] ['configure']
==> [2025-11-17-08:49:39.609806] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src/configure [replacing "^(\s*if test x-L = )("\$p" \|\|\s*)$"]
==> [2025-11-17-08:49:39.629348] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src/configure [replacing "^(\s*test x-R = )("\$p")(; then\s*)$"]
==> [2025-11-17-08:49:39.648283] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src/configure [replacing "^(\s*test \$p = "-R")(; then\s*)$"]
==> [2025-11-17-08:49:39.667129] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src/configure [replacing "lt_cv_apple_cc_single_mod=no"]
==> [2025-11-17-08:49:39.686908] '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2/spack-src/configure' '--prefix=/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-7eebjmaajx5lz6xmhlntk5lk3he7yxp2'
checking metadata... no
checking installation directory variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc accepts -g... yes
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc option to enable C11 features... none needed
checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc... gcc3
checking whether the compiler supports GNU C++... yes
checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ accepts -g... yes
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ option to enable C++11 features... none needed
checking dependency style of /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++... gcc3
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin/mpicc... /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin/mpicc
Checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin/mpicc responds to '-showme:compile'... yes
configure: error: unable to locate adept-utils installation
In this case the error conveniently appears on the last line of the log and the output from spack install.
Here we also see a number of checks performed by the configure command.
Most importantly, the last line is very clear: configure: error: unable to locate adept-utils installation.
In other words, the installation path of the adept-utils dependency cannot be found.
Note
Spack automatically adds standard include and library directories to the compiler’s search path but it is not uncommon for this information to not get picked up.
Some software, like mpileaks, requires the paths to be explicitly provided on the command line.
Let’s investigate further from the staged build directory.
Building Manually¶
First let’s try to build the package manually to see if we can figure out how to solve the problem.
Let’s move to the build directory using the spack cd command:
$ spack cd tutorial-mpileaks
You should now be in the appropriate stage directory since this command moves us into the working directory of the last attempted build.
If not, you can cd into the directory above that contained the spack-build-out.txt file then into its spack-src subdirectory.
Now let’s ensure the environment is properly set up using the spack build-env command:
$ spack build-env tutorial-mpileaks bash
This command spawned a new shell containing the same environment that Spack used to build the tutorial-mpileaks package.
(Feel free to substitute your favorite shell for bash.)
Note
If you are running using an AWS instance, you’ll want to substitute your home directory for /home/spack below.
From here we can manually re-run the build using the configure command with the --prefix option that Spack passed in the failed build.
If you aren’t sure, check the appropriate line under Executing phase: 'configure' in the build log in Reviewing the Build Log.
$ ./configure --prefix=$HOME/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpileaks-1.0-wl3kx4o4bgegghl4u7hb3jk4toina3fx
checking metadata... no
checking installation directory variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... /home/spack/spack/lib/spack/env/gcc/gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /home/spack/spack/lib/spack/env/gcc/gcc accepts -g... yes
checking for /home/spack/spack/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of /home/spack/spack/lib/spack/env/gcc/gcc... gcc3
checking whether /home/spack/spack/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
checking whether we are using the GNU C++ compiler... yes
checking whether /home/spack/spack/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of /home/spack/spack/lib/spack/env/gcc/g++... gcc3
checking for /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.3-jfxctqwar7wb65rn7wf5mot7m4jxmsey/bin/mpicc... /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.3-jfxctqwar7wb65rn7wf5mot7m4jxmsey/bin/mpicc
Checking whether /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.3-jfxctqwar7wb65rn7wf5mot7m4jxmsey/bin/mpicc responds to '-showme:compile'... yes
configure: error: unable to locate adept-utils installation
checking metadata... no
checking installation directory variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... /home/spack/spack/lib/spack/env/gcc/gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /home/spack/spack/lib/spack/env/gcc/gcc accepts -g... yes
checking for /home/spack/spack/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of /home/spack/spack/lib/spack/env/gcc/gcc... gcc3
checking whether /home/spack/spack/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
checking whether we are using the GNU C++ compiler... yes
checking whether /home/spack/spack/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of /home/spack/spack/lib/spack/env/gcc/g++... gcc3
checking for /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.1-p5qicacmcy72pjljd4lfdy66kavxp3tv/bin/mpicc... /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.1-p5qicacmcy72pjljd4lfdy66kavxp3tv/bin/mpicc
Checking whether /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.1-p5qicacmcy72pjljd4lfdy66kavxp3tv/bin/mpicc responds to '-showme:compile'... yes
configure: error: unable to locate adept-utils installation
Unfortunately we get the same results as before and the output does not provide any additional information that can help us with the build.
Given that this is a simple package built with configure and we know that installation directories need to be specified, we can use the command’s --help to see what options are available for the software.
$ ./configure --help
`configure' configures mpileaks 1.0 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/mpileaks]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
Program names:
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-adept-utils=PATH Specify adept-utils path
--with-callpath=PATH Specify libcallpath path
--with-stack-start-c=value
Specify integer number for MPILEAKS_STACK_START for
C code
--with-stack-start-fortran=value
Specify integer number for MPILEAKS_STACK_START for
FORTRAN code
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
CPP C preprocessor
CXXCPP C++ preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to <moody20@llnl.gov>.
The output shows that you can specify the paths for the two concrete dependencies with the following options:
--with-adept-utils=PATH--with-callpath=PATH
Let’s leave the spawned shell and return to the Spack repository directory:
$ exit
$ cd $SPACK_ROOT
Now that we know what arguments to provide, we can update the recipe.
Specifying Configure Arguments¶
We now know which options we need to pass to configure, but how do we know where to find the installation paths for the package’s dependencies from within the package.py file?
Fortunately, we can query the package’s concrete Spec instance.
The self.spec property holds the package’s directed acyclic graph (DAG) of its dependencies.
Each dependency’s Spec, accessed by name, has a prefix property containing its installation path.
So let’s add the configuration arguments for specifying the paths to the two concrete dependencies in the configure_args method of our package.
Bring tutorial-mpileaks’ package.py file back up with the spack edit command:
$ spack edit tutorial-mpileaks
and add the --with-adept-utils and --with-callpath arguments in the configure_args method as follows:
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack.package import *
class TutorialMpileaks(AutotoolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and MPI_Datatypes."""
homepage = "https://github.com/LLNL/mpileaks"
url = "https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz"
maintainers("adamjstewart")
license("BSD", checked_by="adamjstewart")
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("mpi")
depends_on("adept-utils")
depends_on("callpath")
def autoreconf(self, spec, prefix):
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
args = [
f"--with-adept-utils={self.spec['adept-utils'].prefix}",
f"--with-callpath={self.spec['callpath'].prefix}",
]
return args
Since this is an AutotoolsPackage, the arguments returned from the method will automatically get passed to configure during the build.
Now let’s try the build again:
$ spack install tutorial-mpileaks
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /usr (external gcc-11.4.0-ml7cem5pfeoluzbhb7jsiisemvoauaz5)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pkgconf-2.5.1-f4qiprwjcd2q3fp63uzgp47f3kw66r5h
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/numactl-2.0.18-yzbm5q6nblzcjccy7kddijqdnkgkxvtp
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxcrypt-4.4.38-yiij42powrfh2mwjebwiqxmkvinutofr
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-qtepnkrdvqazp3jmfnheapckbemejrhq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ncdxq3juvboefpavgmovg5rb5bx76ohz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libpciaccess-0.17-txbwcin227323qmxmg4opnj4r4tvenz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-yzaocbs7geczi5d7qyvmqwrxi4r7dvph
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-c6d2zljdklrjdya4xy236brmpdonc2xo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libedit-3.1-20240808-hdzcfgipukcqxsw7hjkksstbbz5otx3x
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssl-3.6.0-gv7wpik32unrnickoxbgm5iqza572w6s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-kaz756eya6nj3ardls4b6aiaclkaux7i
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-5trxrsws5dig3bf63uc4xzcbsywsqtjo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-aq7qwy6yezwhtwdrsyqen65rmjmlth27
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libevent-2.1.12-lprginh6npwjirdhmghjqjckaa7ukrri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-lfgvgvawnpdxxz7prdfn4vsfgtwruxjc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/hwloc-2.12.2-4hos3725nynk2bsskofvtcmk6pmtcjg4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-62kt5y4kl7uhwljviixr3m4dyf5vre7t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-cakgj4ntlncc4zsgty5z6sa7f7mwvlt7
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pmix-6.0.0-yqlblh6p4u6vwmfhtffyrnxyqrliw2jm
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/elfutils-0.193-brbwl6lkh323duhprbcxlmwwk7zz2cs2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/krb5-1.21.3-hnmy4fwwly5s4xifp5roodj6opppwwiu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/prrte-4.0.0-buin62mintd2cczzj6vsvai45vhpgg6w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-pzmnwzmdyfj2g64cb6fycltaeiz2edau
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-cxdcxo5pdxc2nk7domxigdqiygg4757e
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i
==> No binary for tutorial-mpileaks-1.0-x3pl4siclvab7eh23qt4byzurpknamjh found: installing from source
==> Installing tutorial-mpileaks-1.0-x3pl4siclvab7eh23qt4byzurpknamjh [47/47]
==> Using cached archive: /home/spack/spack/var/spack/cache/_source-cache/archive/24/24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9.tar.gz
==> No patches needed for tutorial-mpileaks
==> tutorial-mpileaks: Executing phase: 'autoreconf'
==> tutorial-mpileaks: Executing phase: 'configure'
==> tutorial-mpileaks: Executing phase: 'build'
==> tutorial-mpileaks: Executing phase: 'install'
==> tutorial-mpileaks: Successfully installed tutorial-mpileaks-1.0-x3pl4siclvab7eh23qt4byzurpknamjh
Stage: 0.01s. Autoreconf: 3.88s. Configure: 3.05s. Build: 8.01s. Install: 0.19s. Post-install: 0.03s. Total: 15.25s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-x3pl4siclvab7eh23qt4byzurpknamjh
Success!
All we needed to do was add the path arguments for the two concrete packages for configure to perform a simple build.
Is that all we can do to help other users build our software?
Adding Variants¶
Suppose we want to expose the software’s optional features in the package? We can do this by adding build-time options using package variants).
Recall from configure’s help output for tutorial-mpileaks that the software has several optional features and packages that we could support in Spack.
Two stand out for tutorial purposes because they both take integers, as opposed to allowing them to be enabled or disabled.
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-adept-utils=PATH Specify adept-utils path
--with-callpath=PATH Specify libcallpath path
--with-stack-start-c=value
Specify integer number for MPILEAKS_STACK_START for
C code
--with-stack-start-fortran=value
Specify integer number for MPILEAKS_STACK_START for
FORTRAN code
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
According to the software’s documentation (https://github.com/LLNL/mpileaks), the integer values for the --with-stack-start-* options represent the numbers of calls to shave off of the top of the stack traces for each language, effectively reducing the noise of internal mpileaks library function calls in generated traces.
For simplicity, we’ll use one variant to supply the value for both arguments.
Supporting this optional feature will require two changes to the package:
add a variant directive; and
change the configure options to use the value.
Let’s add the variant to expect an int value with a default of 0.
Setting the default to 0 effectively disables the option.
Change configure_args to retrieve the value and add the corresponding configure arguments when a non-zero value is provided by the user.
Bring tutorial-mpileaks’ package.py file back up with the spack edit command:
$ spack edit tutorial-mpileaks
and add the variant directive and associated arguments as follows:
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack.package import *
class TutorialMpileaks(AutotoolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and MPI_Datatypes."""
homepage = "https://github.com/LLNL/mpileaks"
url = "https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz"
maintainers("adamjstewart")
license("BSD", checked_by="adamjstewart")
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
variant(
"stackstart",
values=int,
default="0",
description="Specify the number of stack frames to truncate",
)
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("mpi")
depends_on("adept-utils")
depends_on("callpath")
def autoreconf(self, spec, prefix):
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
args = [
f"--with-adept-utils={self.spec['adept-utils'].prefix}",
f"--with-callpath={self.spec['callpath'].prefix}",
]
stackstart = int(self.spec.variants["stackstart"].value)
if stackstart:
args.extend(
[
f"--with-stack-start-c={stackstart}",
f"--with-stack-start-fortran={stackstart}",
]
)
return args
Notice that the variant directive is translated into a variants dictionary in self.spec.
Also note that the value provided by the user is accessed by the entry’s value property.
Now run the installation again with the --verbose install option – to get more output during the build – and the new stackstart package option:
$ spack install --verbose tutorial-mpileaks stackstart=4
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /usr (external gcc-11.4.0-ml7cem5pfeoluzbhb7jsiisemvoauaz5)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-qtepnkrdvqazp3jmfnheapckbemejrhq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxcrypt-4.4.38-yiij42powrfh2mwjebwiqxmkvinutofr
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-yzaocbs7geczi5d7qyvmqwrxi4r7dvph
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libpciaccess-0.17-txbwcin227323qmxmg4opnj4r4tvenz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ncdxq3juvboefpavgmovg5rb5bx76ohz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/numactl-2.0.18-yzbm5q6nblzcjccy7kddijqdnkgkxvtp
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-c6d2zljdklrjdya4xy236brmpdonc2xo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libedit-3.1-20240808-hdzcfgipukcqxsw7hjkksstbbz5otx3x
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssl-3.6.0-gv7wpik32unrnickoxbgm5iqza572w6s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-kaz756eya6nj3ardls4b6aiaclkaux7i
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pkgconf-2.5.1-f4qiprwjcd2q3fp63uzgp47f3kw66r5h
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-aq7qwy6yezwhtwdrsyqen65rmjmlth27
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libevent-2.1.12-lprginh6npwjirdhmghjqjckaa7ukrri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-5trxrsws5dig3bf63uc4xzcbsywsqtjo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-lfgvgvawnpdxxz7prdfn4vsfgtwruxjc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-62kt5y4kl7uhwljviixr3m4dyf5vre7t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/hwloc-2.12.2-4hos3725nynk2bsskofvtcmk6pmtcjg4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-cakgj4ntlncc4zsgty5z6sa7f7mwvlt7
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-pzmnwzmdyfj2g64cb6fycltaeiz2edau
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pmix-6.0.0-yqlblh6p4u6vwmfhtffyrnxyqrliw2jm
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/elfutils-0.193-brbwl6lkh323duhprbcxlmwwk7zz2cs2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/krb5-1.21.3-hnmy4fwwly5s4xifp5roodj6opppwwiu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/prrte-4.0.0-buin62mintd2cczzj6vsvai45vhpgg6w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-cxdcxo5pdxc2nk7domxigdqiygg4757e
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i
==> No binary for tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni found: installing from source
==> Installing tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni [47/47]
==> Using cached archive: /home/spack/spack/var/spack/cache/_source-cache/archive/24/24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9.tar.gz
==> No patches needed for tutorial-mpileaks
==> tutorial-mpileaks: Executing phase: 'autoreconf'
==> [2025-11-17-08:51:08.198445] '/home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoreconf' '--install' '--verbose' '--force'
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.
libtoolize: copying file 'config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force -I m4
autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoconf --force
configure.ac:9: warning: 'AM_CONFIG_HEADER': this macro is obsolete.
configure.ac:9: You should use the 'AC_CONFIG_HEADERS' macro instead.
/tmp/root/spack-stage/spack-stage-autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/spack-src/lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:745: AM_CONFIG_HEADER is expanded from...
configure.ac:9: the top level
configure.ac:38: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
configure.ac:38: You should run autoupdate.
m4/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
configure.ac:38: the top level
configure.ac:47: warning: The macro 'AC_HEADER_STDC' is obsolete.
configure.ac:47: You should run autoupdate.
/tmp/root/spack-stage/spack-stage-autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/spack-src/lib/autoconf/headers.m4:663: AC_HEADER_STDC is expanded from...
configure.ac:47: the top level
autoreconf: running: /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:26: installing 'config/compile'
configure.ac:19: installing 'config/missing'
src/Makefile.am:14: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
src/Makefile.am: installing 'config/depcomp'
autoreconf: 'config/install-sh' is updated
autoreconf: 'config/config.sub' is updated
autoreconf: 'config/config.guess' is updated
autoreconf: Leaving directory '.'
==> tutorial-mpileaks: Executing phase: 'configure'
==> [2025-11-17-08:51:12.098928] Find (max depth = None): ['/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'] ['configure']
==> [2025-11-17-08:51:12.099725] Find complete: ['/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'] ['configure']
==> [2025-11-17-08:51:12.100316] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/configure [replacing "^(\s*if test x-L = )("\$p" \|\|\s*)$"]
==> [2025-11-17-08:51:12.120929] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/configure [replacing "^(\s*test x-R = )("\$p")(; then\s*)$"]
==> [2025-11-17-08:51:12.140385] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/configure [replacing "^(\s*test \$p = "-R")(; then\s*)$"]
==> [2025-11-17-08:51:12.160499] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/configure [replacing "lt_cv_apple_cc_single_mod=no"]
==> [2025-11-17-08:51:12.181127] '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/configure' '--prefix=/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni' '--with-adept-utils=/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4' '--with-callpath=/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i' '--with-stack-start-c=4' '--with-stack-start-fortran=4'
checking metadata... no
checking installation directory variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc accepts -g... yes
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc option to enable C11 features... none needed
checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc... gcc3
checking whether the compiler supports GNU C++... yes
checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ accepts -g... yes
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ option to enable C++11 features... none needed
checking dependency style of /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++... gcc3
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin/mpicc... /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin/mpicc
Checking whether /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin/mpicc responds to '-showme:compile'... yes
checking for adept-utils installation... /home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4
checking for libcallpath installation... /home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc... /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld
checking if the linker (/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 3145728
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld option to reload object files... -r
checking for file... file
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc supports -fno-rtti -fno-exceptions... no
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc option to produce PIC... -fPIC -DPIC
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc PIC flag -fPIC -DPIC works... yes
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc static flag -static works... yes
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc supports -c -o file.o... yes
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc supports -c -o file.o... (cached) yes
checking whether the /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/gcc linker (/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -E
checking for ld used by /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++... /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld -m elf_x86_64
checking if the linker (/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld -m elf_x86_64) is GNU ld... yes
checking whether the /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ linker (/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld -m elf_x86_64) supports shared libraries... yes
checking for /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ option to produce PIC... -fPIC -DPIC
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ PIC flag -fPIC -DPIC works... yes
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ static flag -static works... yes
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ supports -c -o file.o... yes
checking if /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ supports -c -o file.o... (cached) yes
checking whether the /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ linker (/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for egrep... (cached) /usr/bin/grep -E
checking whether byte ordering is bigendian... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating examples/Makefile
config.status: creating scripts/Makefile
config.status: creating scripts/srun-mpileaks
config.status: creating scripts/srun-mpileaksf
config.status: creating config/config.h
config.status: executing depfiles commands
config.status: executing libtool commands
==> [2025-11-17-08:51:15.123274] Find (max depth = None): ['/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'] ['libtool']
==> [2025-11-17-08:51:15.124052] Find complete: ['/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'] ['libtool']
==> [2025-11-17-08:51:15.125172] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/libtool [replacing "^wl=""$"]
==> [2025-11-17-08:51:15.140438] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/libtool [replacing "^pic_flag=""$"]
==> [2025-11-17-08:51:15.144770] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/libtool [replacing "^pic_flag=""$"]
==> [2025-11-17-08:51:15.151355] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/libtool [replacing "^pic_flag=""$"]
==> [2025-11-17-08:51:15.157731] FILTER FILE: /tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/libtool [replacing "^pic_flag=""$"]
==> tutorial-mpileaks: Executing phase: 'build'
==> [2025-11-17-08:51:15.175687] '/home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma/bin/make' '-j4' 'V=1'
Making all in scripts
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/scripts'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/scripts'
Making all in src
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/src'
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT mpileaks.lo -MD -MP -MF .deps/mpileaks.Tpo -c -o mpileaks.lo mpileaks.cpp
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT comm.lo -MD -MP -MF .deps/comm.Tpo -c -o comm.lo comm.cpp
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT datatype.lo -MD -MP -MF .deps/datatype.Tpo -c -o datatype.lo datatype.cpp
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT errhandler.lo -MD -MP -MF .deps/errhandler.Tpo -c -o errhandler.lo errhandler.cpp
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT mpileaks.lo -MD -MP -MF .deps/mpileaks.Tpo -c mpileaks.cpp -fPIC -DPIC -o .libs/mpileaks.o
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT comm.lo -MD -MP -MF .deps/comm.Tpo -c comm.cpp -fPIC -DPIC -o .libs/comm.o
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT datatype.lo -MD -MP -MF .deps/datatype.Tpo -c datatype.cpp -fPIC -DPIC -o .libs/datatype.o
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT errhandler.lo -MD -MP -MF .deps/errhandler.Tpo -c errhandler.cpp -fPIC -DPIC -o .libs/errhandler.o
errhandler.cpp: In function 'int MPI_Errhandler_create(void (*)(ompi_communicator_t**, int*, ...), ompi_errhandler_t**)':
errhandler.cpp:33:34: warning: 'int PMPI_Errhandler_create(void (*)(ompi_communicator_t**, int*, ...), ompi_errhandler_t**)' is deprecated: PMPI_Errhandler_create was removed in MPI-3.0. Use PMPI_Comm_create_errhandler instead. continuing... [-Wdeprecated-declarations]
33 | int rc = PMPI_Errhandler_create(function, eh);
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
In file included from errhandler.cpp:10:
/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include/mpi.h:3122:20: note: declared here
3122 | OMPI_DECLSPEC int PMPI_Errhandler_create(MPI_Handler_function *function,
| ^~~~~~~~~~~~~~~~~~~~~~
errhandler.cpp: In function 'int MPI_Errhandler_get(MPI_Comm, ompi_errhandler_t**)':
errhandler.cpp:40:31: warning: 'int PMPI_Errhandler_get(MPI_Comm, ompi_errhandler_t**)' is deprecated: PMPI_Errhandler_get was removed in MPI-3.0. Use PMPI_Comm_get_errhandler instead. continuing... [-Wdeprecated-declarations]
40 | int rc = PMPI_Errhandler_get(comm, eh);
| ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
In file included from errhandler.cpp:10:
/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include/mpi.h:3127:20: note: declared here
3127 | OMPI_DECLSPEC int PMPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler)
| ^~~~~~~~~~~~~~~~~~~
datatype.cpp: In function 'int MPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, ompi_datatype_t**)':
datatype.cpp:60:29: warning: 'int PMPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, ompi_datatype_t**)' is deprecated: PMPI_Type_hvector was removed in MPI-3.0. Use PMPI_Type_create_hvector instead. continuing... [-Wdeprecated-declarations]
60 | int rc = PMPI_Type_hvector(count, blocklength, stride, oldtype, newtype);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from datatype.cpp:10:
/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include/mpi.h:3148:20: note: declared here
3148 | OMPI_DECLSPEC int PMPI_Type_hvector(int count, int blocklength, MPI_Aint stride,
| ^~~~~~~~~~~~~~~~~
datatype.cpp: In function 'int MPI_Type_hindexed(int, int*, MPI_Aint*, MPI_Datatype, ompi_datatype_t**)':
datatype.cpp:78:30: warning: 'int PMPI_Type_hindexed(int, int*, MPI_Aint*, MPI_Datatype, ompi_datatype_t**)' is deprecated: PMPI_Type_hindexed was removed in MPI-3.0. Use PMPI_Type_create_hindexed instead. continuing... [-Wdeprecated-declarations]
78 | int rc = PMPI_Type_hindexed(count, array_of_blocklengths, array_of_displacements,
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79 | oldtype, newtype);
| ~~~~~~~~~~~~~~~~~
In file included from datatype.cpp:10:
/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include/mpi.h:3141:20: note: declared here
3141 | OMPI_DECLSPEC int PMPI_Type_hindexed(int count, int array_of_blocklengths[],
| ^~~~~~~~~~~~~~~~~~
datatype.cpp: In function 'int MPI_Type_struct(int, int*, MPI_Aint*, ompi_datatype_t**, ompi_datatype_t**)':
datatype.cpp:88:28: warning: 'int PMPI_Type_struct(int, int*, MPI_Aint*, ompi_datatype_t**, ompi_datatype_t**)' is deprecated: PMPI_Type_struct was removed in MPI-3.0. Use PMPI_Type_create_struct instead. continuing... [-Wdeprecated-declarations]
88 | int rc = PMPI_Type_struct(count, array_of_blocklengths, array_of_displacements,
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89 | array_of_types, newtype);
| ~~~~~~~~~~~~~~~~~~~~~~~~
In file included from datatype.cpp:10:
/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include/mpi.h:3160:20: note: declared here
3160 | OMPI_DECLSPEC int PMPI_Type_struct(int count, int array_of_blocklengths[],
| ^~~~~~~~~~~~~~~~
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT errhandler.lo -MD -MP -MF .deps/errhandler.Tpo -c errhandler.cpp -o errhandler.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT mpileaks.lo -MD -MP -MF .deps/mpileaks.Tpo -c mpileaks.cpp -o mpileaks.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT datatype.lo -MD -MP -MF .deps/datatype.Tpo -c datatype.cpp -o datatype.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT comm.lo -MD -MP -MF .deps/comm.Tpo -c comm.cpp -o comm.o >/dev/null 2>&1
mv -f .deps/errhandler.Tpo .deps/errhandler.Plo
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT fileio.lo -MD -MP -MF .deps/fileio.Tpo -c -o fileio.lo fileio.cpp
mv -f .deps/mpileaks.Tpo .deps/mpileaks.Plo
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT fileio.lo -MD -MP -MF .deps/fileio.Tpo -c fileio.cpp -fPIC -DPIC -o .libs/fileio.o
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT group.lo -MD -MP -MF .deps/group.Tpo -c -o group.lo group.cpp
mv -f .deps/datatype.Tpo .deps/datatype.Plo
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT info.lo -MD -MP -MF .deps/info.Tpo -c -o info.lo info.cpp
mv -f .deps/comm.Tpo .deps/comm.Plo
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT keyval.lo -MD -MP -MF .deps/keyval.Tpo -c -o keyval.lo keyval.cpp
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT group.lo -MD -MP -MF .deps/group.Tpo -c group.cpp -fPIC -DPIC -o .libs/group.o
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT info.lo -MD -MP -MF .deps/info.Tpo -c info.cpp -fPIC -DPIC -o .libs/info.o
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT keyval.lo -MD -MP -MF .deps/keyval.Tpo -c keyval.cpp -fPIC -DPIC -o .libs/keyval.o
keyval.cpp: In function 'int MPI_Keyval_create(int (*)(MPI_Comm, int, void*, void*, void*, int*), int (*)(MPI_Comm, int, void*, void*), int*, void*)':
keyval.cpp:38:30: warning: 'int PMPI_Keyval_create(int (*)(MPI_Comm, int, void*, void*, void*, int*), int (*)(MPI_Comm, int, void*, void*), int*, void*)' is deprecated: PMPI_Keyval_create was deprecated in MPI-2.0; use PMPI_Comm_create_keyval instead. [-Wdeprecated-declarations]
38 | int rc = PMPI_Keyval_create(copy_fn, delete_fn, keyval, extra_state);
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from keyval.cpp:10:
/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include/mpi.h:3055:20: note: declared here
3055 | OMPI_DECLSPEC int PMPI_Keyval_create(MPI_Copy_function *copy_fn,
| ^~~~~~~~~~~~~~~~~~
keyval.cpp: In function 'int MPI_Keyval_free(int*)':
keyval.cpp:93:28: warning: 'int PMPI_Keyval_free(int*)' is deprecated: PMPI_Keyval_free was deprecated in MPI-2.0; PMPI_Comm_free_keyval instead. [-Wdeprecated-declarations]
93 | int rc = PMPI_Keyval_free(keyval);
| ~~~~~~~~~~~~~~~~^~~~~~~~
In file included from keyval.cpp:10:
/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include/mpi.h:3061:20: note: declared here
3061 | OMPI_DECLSPEC int PMPI_Keyval_free(int *keyval)
| ^~~~~~~~~~~~~~~~
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT fileio.lo -MD -MP -MF .deps/fileio.Tpo -c fileio.cpp -o fileio.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT info.lo -MD -MP -MF .deps/info.Tpo -c info.cpp -o info.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT group.lo -MD -MP -MF .deps/group.Tpo -c group.cpp -o group.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT keyval.lo -MD -MP -MF .deps/keyval.Tpo -c keyval.cpp -o keyval.o >/dev/null 2>&1
mv -f .deps/fileio.Tpo .deps/fileio.Plo
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT mem.lo -MD -MP -MF .deps/mem.Tpo -c -o mem.lo mem.cpp
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT mem.lo -MD -MP -MF .deps/mem.Tpo -c mem.cpp -fPIC -DPIC -o .libs/mem.o
mv -f .deps/info.Tpo .deps/info.Plo
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT op.lo -MD -MP -MF .deps/op.Tpo -c -o op.lo op.cpp
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT op.lo -MD -MP -MF .deps/op.Tpo -c op.cpp -fPIC -DPIC -o .libs/op.o
mv -f .deps/keyval.Tpo .deps/keyval.Plo
mv -f .deps/group.Tpo .deps/group.Plo
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT request.lo -MD -MP -MF .deps/request.Tpo -c -o request.lo request.cpp
/bin/bash ../libtool --tag=CXX --mode=compile /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT win.lo -MD -MP -MF .deps/win.Tpo -c -o win.lo win.cpp
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT request.lo -MD -MP -MF .deps/request.Tpo -c request.cpp -fPIC -DPIC -o .libs/request.o
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT win.lo -MD -MP -MF .deps/win.Tpo -c win.cpp -fPIC -DPIC -o .libs/win.o
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT mem.lo -MD -MP -MF .deps/mem.Tpo -c mem.cpp -o mem.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT op.lo -MD -MP -MF .deps/op.Tpo -c op.cpp -o op.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT win.lo -MD -MP -MF .deps/win.Tpo -c win.cpp -o win.o >/dev/null 2>&1
libtool: compile: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -DHAVE_CONFIG_H -I. -I../config -DHAVE_CONFIG_H -I. -I../config -I../src -I../config -g -O2 -I//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/include -I/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/include -g -O2 -MT request.lo -MD -MP -MF .deps/request.Tpo -c request.cpp -o request.o >/dev/null 2>&1
mv -f .deps/mem.Tpo .deps/mem.Plo
mv -f .deps/op.Tpo .deps/op.Plo
mv -f .deps/win.Tpo .deps/win.Plo
mv -f .deps/request.Tpo .deps/request.Plo
/bin/bash ../libtool --tag=CXX --mode=link /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -g -O2 -avoid-version -o libmpileaks.la -rpath /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib mpileaks.lo comm.lo datatype.lo errhandler.lo fileio.lo group.lo info.lo keyval.lo mem.lo op.lo request.lo win.lo -L/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/lib -ladept_cutils -ladept_timing -ladept_utils -L/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/lib -lcallpath
libtool: link: /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc/g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o .libs/mpileaks.o .libs/comm.o .libs/datatype.o .libs/errhandler.o .libs/fileio.o .libs/group.o .libs/info.o .libs/keyval.o .libs/mem.o .libs/op.o .libs/request.o .libs/win.o -L/home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4/lib -ladept_cutils -ladept_timing -ladept_utils -L/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/lib -lcallpath -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o -g -O2 -Wl,-soname -Wl,libmpileaks.so -o .libs/libmpileaks.so
libtool: link: ar cr .libs/libmpileaks.a mpileaks.o comm.o datatype.o errhandler.o fileio.o group.o info.o keyval.o mem.o op.o request.o win.o
libtool: link: ranlib .libs/libmpileaks.a
libtool: link: ( cd ".libs" && rm -f "libmpileaks.la" && ln -s "../libmpileaks.la" "libmpileaks.la" )
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/src'
Making all in examples
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/examples'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/examples'
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'
==> tutorial-mpileaks: Executing phase: 'install'
==> [2025-11-17-08:51:23.274613] '/home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma/bin/make' '-j4' 'install'
Making install in scripts
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/scripts'
make[2]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/scripts'
make[2]: Nothing to be done for 'install-data-am'.
/usr/bin/mkdir -p '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/bin'
/usr/bin/install -c srun-mpileaks srun-mpileaksf '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/bin'
make[2]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/scripts'
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/scripts'
Making install in src
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/src'
make[2]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/src'
make[2]: Nothing to be done for 'install-data-am'.
/usr/bin/mkdir -p '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib'
/bin/bash ../libtool --mode=install /usr/bin/install -c libmpileaks.la '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib'
libtool: install: /usr/bin/install -c .libs/libmpileaks.so /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib/libmpileaks.so
libtool: install: /usr/bin/install -c .libs/libmpileaks.lai /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib/libmpileaks.la
libtool: install: /usr/bin/install -c .libs/libmpileaks.a /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib/libmpileaks.a
libtool: install: chmod 644 /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib/libmpileaks.a
libtool: install: ranlib /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib/libmpileaks.a
libtool: finish: PATH="/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/case-insensitive:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/case-insensitive:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/case-insensitive:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/gcc:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack/case-insensitive:/home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2/libexec/spack:/home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-pzmnwzmdyfj2g64cb6fycltaeiz2edau/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-62kt5y4kl7uhwljviixr3m4dyf5vre7t/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-cxdcxo5pdxc2nk7domxigdqiygg4757e/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-lfgvgvawnpdxxz7prdfn4vsfgtwruxjc/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-kaz756eya6nj3ardls4b6aiaclkaux7i/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea/bin:/home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-yzaocbs7geczi5d7qyvmqwrxi4r7dvph/bin:/home/spack/spack/bin:/opt/spack/view/bin:/root/spack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib
----------------------------------------------------------------------
Libraries have been installed in:
/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[2]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/src'
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/src'
Making install in examples
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/examples'
make[2]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/examples'
make[2]: Nothing to be done for 'install-exec-am'.
/usr/bin/mkdir -p '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/share/mpileaks/examples'
/usr/bin/install -c -m 644 tests.c mpiPing_leaky.f '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/share/mpileaks/examples'
make[2]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/examples'
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src/examples'
make[1]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'
make[2]: Entering directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'
make[2]: Nothing to be done for 'install-exec-am'.
/usr/bin/mkdir -p '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/share/mpileaks'
/usr/bin/install -c -m 644 README '/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/share/mpileaks'
make[2]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'
make[1]: Leaving directory '/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni/spack-src'
==> [2025-11-17-08:51:23.466736] Find (max depth = None): ['/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni'] ['*.la']
==> [2025-11-17-08:51:23.467549] Find complete: ['/home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni'] ['*.la']
==> tutorial-mpileaks: Successfully installed tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni
Stage: 0.01s. Autoreconf: 3.89s. Configure: 3.06s. Build: 8.09s. Install: 0.19s. Post-install: 0.03s. Total: 15.35s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-xf6kleti25iz2kbec7b6rfiemhs2l4ni
Notice the addition of the two stack start arguments in the configure command that appears at the end of the highlighted line after tutorial-mpileaks’ Executing phase: 'configure'.
Note
Not all packages have such simple options.
Fortunately, Autotools is one of several base packages with helper functions to simplify setting arguments tied to boolean, single- and multi-valued variants.
Now that we have a package we can build, it’s time to consider adding tests that can be used to gain confidence that the software works.
Adding Tests¶
The simplest tests we can add are sanity checks, which can be used to ensure the directories and or files we expect to be installed for all versions of the package actually exist.
If we look at a successful installation, we can see that the following directories are installed:
bin
lib
share
So let’s add a simple sanity check to ensure they are present, but let’s enter a typo to see what happens.
Bring tutorial-mpileaks’ package.py file back up with the spack edit command and add the following sanity_check_is_dir list:
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack.package import *
class TutorialMpileaks(AutotoolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and MPI_Datatypes."""
homepage = "https://github.com/LLNL/mpileaks"
url = "https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz"
maintainers("adamjstewart")
license("BSD", checked_by="adamjstewart")
sanity_check_is_dir = ["bin", "lib", "shar"]
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
variant(
"stackstart",
values=int,
default="0",
description="Specify the number of stack frames to truncate",
)
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("mpi")
depends_on("adept-utils")
depends_on("callpath")
def autoreconf(self, spec, prefix):
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
args = [
f"--with-adept-utils={self.spec['adept-utils'].prefix}",
f"--with-callpath={self.spec['callpath'].prefix}",
]
stackstart = int(self.spec.variants["stackstart"].value)
if stackstart:
args.extend(
[
f"--with-stack-start-c={stackstart}",
f"--with-stack-start-fortran={stackstart}",
]
)
return args
Since these are build-time tests, we’ll need to uninstall the package so we can re-run it with tests enabled:
$ spack uninstall -ay tutorial-mpileaks
==> Successfully uninstalled tutorial-mpileaks@1.0 build_system=autotools stackstart=4 platform=linux os=ubuntu22.04 target=x86_64_v3/xf6klet
==> Successfully uninstalled tutorial-mpileaks@1.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3/x3pl4si
$ spack install --test=root tutorial-mpileaks
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /usr (external gcc-11.4.0-ml7cem5pfeoluzbhb7jsiisemvoauaz5)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-yzaocbs7geczi5d7qyvmqwrxi4r7dvph
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/numactl-2.0.18-yzbm5q6nblzcjccy7kddijqdnkgkxvtp
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-qtepnkrdvqazp3jmfnheapckbemejrhq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ncdxq3juvboefpavgmovg5rb5bx76ohz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libpciaccess-0.17-txbwcin227323qmxmg4opnj4r4tvenz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pkgconf-2.5.1-f4qiprwjcd2q3fp63uzgp47f3kw66r5h
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-c6d2zljdklrjdya4xy236brmpdonc2xo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libedit-3.1-20240808-hdzcfgipukcqxsw7hjkksstbbz5otx3x
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxcrypt-4.4.38-yiij42powrfh2mwjebwiqxmkvinutofr
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-aq7qwy6yezwhtwdrsyqen65rmjmlth27
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-5trxrsws5dig3bf63uc4xzcbsywsqtjo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-kaz756eya6nj3ardls4b6aiaclkaux7i
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssl-3.6.0-gv7wpik32unrnickoxbgm5iqza572w6s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-62kt5y4kl7uhwljviixr3m4dyf5vre7t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/hwloc-2.12.2-4hos3725nynk2bsskofvtcmk6pmtcjg4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-lfgvgvawnpdxxz7prdfn4vsfgtwruxjc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libevent-2.1.12-lprginh6npwjirdhmghjqjckaa7ukrri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-pzmnwzmdyfj2g64cb6fycltaeiz2edau
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-cakgj4ntlncc4zsgty5z6sa7f7mwvlt7
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pmix-6.0.0-yqlblh6p4u6vwmfhtffyrnxyqrliw2jm
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/elfutils-0.193-brbwl6lkh323duhprbcxlmwwk7zz2cs2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/krb5-1.21.3-hnmy4fwwly5s4xifp5roodj6opppwwiu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/prrte-4.0.0-buin62mintd2cczzj6vsvai45vhpgg6w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-cxdcxo5pdxc2nk7domxigdqiygg4757e
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i
==> No binary for tutorial-mpileaks-1.0-omlsonzivcwmcecp7x5u7js5dvpcab2g found: installing from source
==> Installing tutorial-mpileaks-1.0-omlsonzivcwmcecp7x5u7js5dvpcab2g [47/47]
==> Using cached archive: /home/spack/spack/var/spack/cache/_source-cache/archive/24/24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9.tar.gz
==> No patches needed for tutorial-mpileaks
==> tutorial-mpileaks: Executing phase: 'autoreconf'
==> tutorial-mpileaks: Executing phase: 'configure'
==> tutorial-mpileaks: Executing phase: 'build'
==> tutorial-mpileaks: Executing phase: 'install'
==> Error: InstallError: Install failed for tutorial-mpileaks. No such directory in prefix: shar
See build log for details:
/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-omlsonzivcwmcecp7x5u7js5dvpcab2g/spack-build-out.txt
See test log for details:
/tmp/spack/spack-stage/spack-stage-tutorial-mpileaks-1.0-omlsonzivcwmcecp7x5u7js5dvpcab2g/install-time-test-log.txt
Notice the installation fails due to the missing directory with the error: Error: InstallError: Install failed for tutorial-mpileaks.
No such directory in prefix: shar.
Now let’s properly fix the error:
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack.package import *
class TutorialMpileaks(AutotoolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and MPI_Datatypes."""
homepage = "https://github.com/LLNL/mpileaks"
url = "https://github.com/LLNL/mpileaks/archive/refs/tags/v1.0.tar.gz"
maintainers("adamjstewart")
license("BSD", checked_by="adamjstewart")
sanity_check_is_dir = ["bin", "lib", "share"]
version("1.0", sha256="24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9")
variant(
"stackstart",
values=int,
default="0",
description="Specify the number of stack frames to truncate",
)
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
depends_on("mpi")
depends_on("adept-utils")
depends_on("callpath")
def autoreconf(self, spec, prefix):
autoreconf("--install", "--verbose", "--force")
def configure_args(self):
args = [
f"--with-adept-utils={self.spec['adept-utils'].prefix}",
f"--with-callpath={self.spec['callpath'].prefix}",
]
stackstart = int(self.spec.variants["stackstart"].value)
if stackstart:
args.extend(
[
f"--with-stack-start-c={stackstart}",
f"--with-stack-start-fortran={stackstart}",
]
)
return args
And try again:
$ spack install --test=root tutorial-mpileaks
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /usr (external gcc-11.4.0-ml7cem5pfeoluzbhb7jsiisemvoauaz5)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libpciaccess-0.17-txbwcin227323qmxmg4opnj4r4tvenz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pkgconf-2.5.1-f4qiprwjcd2q3fp63uzgp47f3kw66r5h
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/boost-1.72.0-3bt6bi5q4j5r5yj7wcplgfyzr4t7ffri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-kaz756eya6nj3ardls4b6aiaclkaux7i
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssl-3.6.0-gv7wpik32unrnickoxbgm5iqza572w6s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ncdxq3juvboefpavgmovg5rb5bx76ohz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-qtepnkrdvqazp3jmfnheapckbemejrhq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-yzaocbs7geczi5d7qyvmqwrxi4r7dvph
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxcrypt-4.4.38-yiij42powrfh2mwjebwiqxmkvinutofr
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiberty-2.41-wz2npe3qsm7j3arf5s4a6ccduutolyyt
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libevent-2.1.12-lprginh6npwjirdhmghjqjckaa7ukrri
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-c6d2zljdklrjdya4xy236brmpdonc2xo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libedit-3.1-20240808-hdzcfgipukcqxsw7hjkksstbbz5otx3x
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libdwarf-2.1.0-l4t7fu7gmhr2lxu76fcwflhqx2cppoxn
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-lfgvgvawnpdxxz7prdfn4vsfgtwruxjc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-5trxrsws5dig3bf63uc4xzcbsywsqtjo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/numactl-2.0.18-yzbm5q6nblzcjccy7kddijqdnkgkxvtp
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-aq7qwy6yezwhtwdrsyqen65rmjmlth27
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/hwloc-2.12.2-4hos3725nynk2bsskofvtcmk6pmtcjg4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-cakgj4ntlncc4zsgty5z6sa7f7mwvlt7
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-62kt5y4kl7uhwljviixr3m4dyf5vre7t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pmix-6.0.0-yqlblh6p4u6vwmfhtffyrnxyqrliw2jm
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/intel-tbb-2022.3.0-rbf737wu37dt3e6ytiro4d2qo7vbyask
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/elfutils-0.193-brbwl6lkh323duhprbcxlmwwk7zz2cs2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/krb5-1.21.3-hnmy4fwwly5s4xifp5roodj6opppwwiu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-pzmnwzmdyfj2g64cb6fycltaeiz2edau
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-fgsf5ijzhnbaj2fqngm57aoe6civ72uz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/dyninst-13.0.0-jiygq6syjsmk6cfoeznnjq5aupwzphqv
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-cxdcxo5pdxc2nk7domxigdqiygg4757e
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/prrte-4.0.0-buin62mintd2cczzj6vsvai45vhpgg6w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-tqxbnvoiw3nzds4xypcualamx3cvisln
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/adept-utils-1.0.1-bkfrcjldboplodum7ncujznagdqmdjz4
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/callpath-1.0.4-p4i3pshhj3wzew2fkxna7sbujfk5pf4i
==> No binary for tutorial-mpileaks-1.0-lrsybksvdpn7h4pzxipmmuark6hybcm6 found: installing from source
==> Installing tutorial-mpileaks-1.0-lrsybksvdpn7h4pzxipmmuark6hybcm6 [47/47]
==> Using cached archive: /home/spack/spack/var/spack/cache/_source-cache/archive/24/24c706591bdcd84541e19389a9314813ce848035ee877e213d528b184f4b43f9.tar.gz
==> No patches needed for tutorial-mpileaks
==> tutorial-mpileaks: Executing phase: 'autoreconf'
==> tutorial-mpileaks: Executing phase: 'configure'
==> tutorial-mpileaks: Executing phase: 'build'
==> tutorial-mpileaks: Executing phase: 'install'
==> tutorial-mpileaks: Successfully installed tutorial-mpileaks-1.0-lrsybksvdpn7h4pzxipmmuark6hybcm6
Stage: 0.01s. Autoreconf: 3.85s. Configure: 3.00s. Build: 8.22s. Install: 0.24s. Post-install: 0.03s. Total: 15.42s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tutorial-mpileaks-1.0-lrsybksvdpn7h4pzxipmmuark6hybcm6
Success!
The material covered here only scratches the surface of testing an installation. We could leverage the examples from this package to add post-install phase tests and/or stand-alone tests.
Querying the Spec Object¶
As packages evolve and are ported to different systems, build recipes often need to change as well.
This is where the package’s Spec comes in.
Previously, we’ve looked at getting the paths for dependencies and values of variants from the Spec; however, there is more to consider.
The package’s self.spec property allows you to query information about the package build, such as:
how a package’s dependencies were built;
what compiler was used;
what version of a package is being installed; and
what variants were specified (implicitly or explicitly).
Examples of common queries are provided below.
Querying Spec Versions¶
You can customize the build based on the version of the package, compiler, and dependencies using version constraints. Examples of each customization are:
Am I building my package with version
1.1or greater?
if self.spec.satisfies("@1.1:"):
# Do things needed for version 1.1 or newer
...
Am I building with a
gccversion up to5.0?
if self.spec.satisfies("%gcc@:5.0"):
# Add arguments specific to gcc's up to 5.0
...
Is my
dyninstdependency at least version8.0?
if self.spec["dyninst"].satisfies("@8.0:"):
# Use newest dyninst options
...
Querying Spec Names¶
If the build has to be customized to the concrete version of a virtual dependency, you can use the name property of the Spec.
For example:
Is
openmpithe MPI implementation I’m building with?
if self.spec["mpi"].name == "openmpi":
# Do openmpi things
...
Querying Variants¶
Adjusting build options based on enabled variants can be done by querying the Spec itself, such as:
Am I building with the
debugvariant?
if "+debug" in self.spec:
# Add -g option to configure flags
...
These are just a few examples of Spec queries.
Spack has thousands of built-in packages that can serve as examples to guide the development of your package.
Tip
You can find these packages under the spack/spack-packages repository’s repos/spack_repo/builtin/packages directory.
Or use spack pkg grep to perform a query.
For example, to find the paths to all AutotoolsPackage packages in your configured repositories, you can enter spack pkg grep AutotoolsPackage | sed "s/:.*//g" | sort -u at the command line.
Multiple Build Systems¶
There are cases where software actively supports two build systems, changes build systems as it evolves, or needs different build systems on different platforms. Spack allows you to write a single, concise recipe for these cases that generally require minor changes to the package structure.
Let’s take a look at a simplified package for uncrustify, which is a source code beautifier.
This software builds with Autotools up through version 0.63 but switches to CMake at version 0.64.
Therefore Uncrustify needs to import and inherit from both CMakePackage and AutotoolsPackage.
We also need to explicitly specify the build_system directive, and add conditional dependencies accordingly:
from spack_repo.builtin.build_systems.autotools import AutotoolsPackage
from spack_repo.builtin.build_systems.cmake import CMakePackage
from spack.package import *
class Uncrustify(CMakePackage, AutotoolsPackage):
"""Source Code Beautifier for C, C++, C#, ObjectiveC, Java, and others."""
homepage = "http://uncrustify.sourceforge.net/"
git = "https://github.com/uncrustify/uncrustify"
url = "https://sourceforge.net/projects/uncrustify/files/uncrustify/uncrustify-0.69/uncrustify-0.69.tar.gz"
license("GPL-2.0-or-later")
version("0.69", commit="a7a8fb35d653e0b49e1c86f2eb8a2970025d5989")
version("0.64", commit="1d7d97fb637dcb05ebc5fe57ee1020e2a659210d")
version("0.63", commit="44ce0f156396b79ddf3ed9242023a14e9665b76f")
depends_on("c", type="build")
depends_on("cxx", type="build")
build_system(
conditional("cmake", when="@0.64:"),
conditional("autotools", when="@:0.63"),
default="cmake",
)
with when("build_system=autotools"):
depends_on("automake", type="build")
depends_on("autoconf", type="build")
depends_on("libtools", type="build")
As we saw with tutorial-mpileaks, each spec has a build_system variant that specifies the build system it uses.
In most cases that variant has a single allowed value, inherited from the corresponding base package - so, usually, you don’t have to think about it.
When your package supports more than one build system though, you have to explicitly declare which ones are allowed and under what conditions.
In the example above it’s cmake for version 0.64 and higher and autotools for version 0.63 and lower.
The build_system variant can also be used to declare other properties which are conditional on the build system being selected.
For instance, above we use the when context manager to declare that autotools builds depend on automake, autoconf, and libtools being installed first.
The other relevant difference, compared to previous recipes we have seen so far, is that the code prescribing the installation procedure will live in two separate classes:
# Be sure to include the corresponding imports at the top of the package.
from spack_repo.builtin.build_systems import autotools, cmake
...
class CMakeBuilder(cmake.CMakeBuilder):
def cmake_args(self):
pass
class AutotoolsBuilder(autotools.AutotoolsBuilder):
def configure_args(self):
pass
Depending on the spec, and more specifically on the value of the build_system directive, a Builder object will be instantiated from one of the two classes when an installation is requested from a user.
Cleaning Up¶
Before leaving this tutorial, let’s ensure that our work does not interfere with your Spack instance or future sections of the tutorial. Undo the work we’ve done here by entering the following commands:
$ spack uninstall -ay tutorial-mpileaks
==> Successfully uninstalled tutorial-mpileaks@1.0 build_system=autotools stackstart=0 platform=linux os=ubuntu22.04 target=x86_64_v3/lrsybks
$ spack repo remove tutorial
==> Removed repository 'tutorial'.
$ rm -rf $HOME/my_pkgs
More information¶
This tutorial module only scratches the surface of defining Spack package recipes. The packaging guide, split over four sections, covers packaging topics more thoroughly:
testing; and
advanced topics, such as multiple build systems and external detection.
Additional information on key topics can be found in the embedded keys above and at the links below.
Testing an installation¶
Build-time tests: for sanity checks and pre-/post-
buildand orinstallphase tests.Stand-alone tests: for tests that can run against any installed Spack package.
Using other build systems¶
Build Systems: for the full list of built-in build systems.
Spack Package Build Systems tutorial: for tutorials on common build systems.
Multiple Build Systems: for a reference on writing packages with multiple build systems.
Package Class Architecture: for more insight on the inner workings of
PackageandBuilderclasses.The GDAL Package: for an example of a complex package that extends Python while supporting two build systems.
Making a package externally detectable¶
Making a package externally discoverable: for making a package discoverable using the
spack external findcommand.