From 12b640a07d7544c00ef817254fb17e9c723c4985 Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 20:04:56 +0100 Subject: [PATCH 01/11] Adapted CMakeLists.txt for bonus exercise to include compiler options --- CMakeLists.txt | 54 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c9e9e6..36efe35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,31 +2,49 @@ cmake_minimum_required(VERSION "3.12") project("spackexample" VERSION 0.3.0) -find_package(Boost - 1.65.1 - REQUIRED - filesystem - ) +# Set options for optional dependencies +option(USE_BOOST "Enable Boost support" ON) +option(USE_YAML_CPP "Enable YAML-CPP support" ON) -find_package(yaml-cpp - 0.7.0 - REQUIRED - ) +# Find Boost if enabled +if(USE_BOOST) + find_package(Boost + 1.65.1 + REQUIRED + filesystem + ) +endif() -add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) +# Find yaml-cpp if enabled +if(USE_YAML_CPP) + find_package(yaml-cpp + 0.7.0 + REQUIRED + ) -set_target_properties(spackexamplelib - PROPERTIES - PUBLIC_HEADER filesystem/filesystem.hpp - PUBLIC_HEADER flatset/flatset.hpp - PUBLIC_HEADER yamlParser/yamlParser.hpp - ) + add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) -include_directories(${YAML_CPP_INCLUDE_DIR}) + set_target_properties(spackexamplelib + PROPERTIES + PUBLIC_HEADER filesystem/filesystem.hpp + PUBLIC_HEADER flatset/flatset.hpp + PUBLIC_HEADER yamlParser/yamlParser.hpp + ) + + include_directories(${YAML_CPP_INCLUDE_DIR}) +endif() add_executable(spackexample main.cpp) + target_link_libraries(spackexample spackexamplelib) -target_link_libraries(spackexamplelib Boost::filesystem yaml-cpp) +# Example of linking Boost and yaml-cpp if enabled +if(USE_BOOST) + target_link_libraries(spackexamplelib Boost::filesystem) +endif() + +if(USE_YAML_CPP) + target_link_libraries(spackexamplelib yaml-cpp) +endif() target_include_directories(spackexamplelib PRIVATE From a08947ecab8718488186cb5bab77f9e74309ce46 Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 20:47:05 +0100 Subject: [PATCH 02/11] CMakeLists.txt update and package.py file for spack --- CMakeLists.txt | 34 +++++++++++++-------------- package.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 17 deletions(-) create mode 100644 package.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 36efe35..777bc46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,31 +9,31 @@ option(USE_YAML_CPP "Enable YAML-CPP support" ON) # Find Boost if enabled if(USE_BOOST) find_package(Boost - 1.65.1 - REQUIRED - filesystem + 1.65.1 + REQUIRED + filesystem ) endif() # Find yaml-cpp if enabled if(USE_YAML_CPP) find_package(yaml-cpp - 0.7.0 - REQUIRED + 0.7.0 + REQUIRED ) +endif() - add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) - - set_target_properties(spackexamplelib - PROPERTIES - PUBLIC_HEADER filesystem/filesystem.hpp - PUBLIC_HEADER flatset/flatset.hpp - PUBLIC_HEADER yamlParser/yamlParser.hpp - ) +add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) - include_directories(${YAML_CPP_INCLUDE_DIR}) -endif() +set_target_properties(spackexamplelib + PROPERTIES + PUBLIC_HEADER filesystem/filesystem.hpp + PUBLIC_HEADER flatset/flatset.hpp + PUBLIC_HEADER yamlParser/yamlParser.hpp +) +include_directories(${YAML_CPP_INCLUDE_DIR}) + add_executable(spackexample main.cpp) target_link_libraries(spackexample spackexamplelib) @@ -52,7 +52,7 @@ target_include_directories(spackexamplelib PUBLIC $ $ - ) + ) # Create install targets include(GNUInstallDirs) @@ -62,4 +62,4 @@ install(TARGETS spackexample spackexamplelib RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/spackexample INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/spackexample - ) +) diff --git a/package.py b/package.py new file mode 100644 index 0000000..199e493 --- /dev/null +++ b/package.py @@ -0,0 +1,62 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level 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 spack-exercise +# +# You can edit this file again by typing: +# +# spack edit spack-exercise +# +# See the Spack documentation for more information on packaging. +# ---------------------------------------------------------------------------- + +from spack.package import * + + +class SpackExercise(CMakePackage): + """This is the example spack packaging exercise of the SSE course.""" + + homepage = "https://simulation-software-engineering.github.io/homepage/" + url = "https://github.com/Simulation-Software-Engineering/spack-exercise/archive/refs/tags/v0.3.0.tar.gz" + git = "https://github.com/legendofa/spack-exercise" + maintainers("legendofa") + + license("MIT", checked_by="legendofa") + + version("main", branch="main") + version("0.3.0", sha256="e54a4c037941d85a22fb3e6e73195df8448cf69a96aa44ef374ac518344812f0") + version("0.2.0", sha256="3dd6b4cc0f7aff179d8e290bc3879056237ae372738a4bd7222f6450fbcdfc77") + version("0.1.0", sha256="cac78e641cb703e3fe51956f91fe8347ac52f74ef037d8eadae5777c65a19a00") + + variant("boost", default=True, description="Enable Boost support") + variant("yaml-cpp", default=True, description="Enable YAML-CPP support") + + depends_on("cxx", type="build") + depends_on("yaml-cpp@0.7:", when="@0.3.0,main") + depends_on("boost@1.65.1:", when="@0.2.0:0.3.0,main") + + def cmake_args(self): + args = super(SpackExercise, self).cmake_args() + + # Add CMake options based on Spack variants + if "+boost" in self.spec: + args.append("-DUSE_BOOST=ON") + else: + args.append("-DUSE_BOOST=OFF") + + if "+yaml-cpp" in self.spec: + args.append("-DUSE_YAML_CPP=ON") + else: + args.append("-DUSE_YAML_CPP=OFF") + + return args From fd45af51cc735acc8ec8f6377d3eeab120e93452 Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 20:52:36 +0100 Subject: [PATCH 03/11] CMakeLists.txt adjustments --- CMakeLists.txt | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 777bc46..bec0ef4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,18 +25,26 @@ endif() add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) -set_target_properties(spackexamplelib - PROPERTIES - PUBLIC_HEADER filesystem/filesystem.hpp - PUBLIC_HEADER flatset/flatset.hpp - PUBLIC_HEADER yamlParser/yamlParser.hpp -) +if(USE_BOOST) + set_target_properties(spackexamplelib + PROPERTIES + PUBLIC_HEADER filesystem/filesystem.hpp + PUBLIC_HEADER flatset/flatset.hpp + ) +endif() + +if(USE_YAML_CPP) + set_target_properties(spackexamplelib + PROPERTIES + PUBLIC_HEADER yamlParser/yamlParser.hpp + ) + include_directories(${YAML_CPP_INCLUDE_DIR}) +endif() -include_directories(${YAML_CPP_INCLUDE_DIR}) - add_executable(spackexample main.cpp) target_link_libraries(spackexample spackexamplelib) + # Example of linking Boost and yaml-cpp if enabled if(USE_BOOST) target_link_libraries(spackexamplelib Boost::filesystem) @@ -52,7 +60,7 @@ target_include_directories(spackexamplelib PUBLIC $ $ - ) +) # Create install targets include(GNUInstallDirs) From 67c4a0d8569b6e3314f0df4c4cce851e489a8527 Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 21:02:08 +0100 Subject: [PATCH 04/11] CMakeLists.txt more fix attempts --- CMakeLists.txt | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bec0ef4..3f7ea24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,21 +25,12 @@ endif() add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) -if(USE_BOOST) - set_target_properties(spackexamplelib - PROPERTIES - PUBLIC_HEADER filesystem/filesystem.hpp - PUBLIC_HEADER flatset/flatset.hpp - ) -endif() - -if(USE_YAML_CPP) - set_target_properties(spackexamplelib - PROPERTIES - PUBLIC_HEADER yamlParser/yamlParser.hpp - ) - include_directories(${YAML_CPP_INCLUDE_DIR}) -endif() +set_target_properties(spackexamplelib + PROPERTIES + PUBLIC_HEADER filesystem/filesystem.hpp + PUBLIC_HEADER flatset/flatset.hpp + PUBLIC_HEADER yamlParser/yamlParser.hpp +) add_executable(spackexample main.cpp) @@ -52,6 +43,7 @@ endif() if(USE_YAML_CPP) target_link_libraries(spackexamplelib yaml-cpp) + include_directories(${YAML_CPP_INCLUDE_DIR}) endif() target_include_directories(spackexamplelib From 9b576d8fd6db74994727bcfcdcfe05d1a1cd42fd Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 21:07:37 +0100 Subject: [PATCH 05/11] CMakeLists.txt other fix attempts --- CMakeLists.txt | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f7ea24..0c03f9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,44 +8,54 @@ option(USE_YAML_CPP "Enable YAML-CPP support" ON) # Find Boost if enabled if(USE_BOOST) - find_package(Boost - 1.65.1 - REQUIRED - filesystem - ) + find_package(Boost 1.65.1 REQUIRED filesystem) + if(Boost_FOUND) + message(STATUS "Boost found: ${Boost_INCLUDE_DIRS}") + else() + message(WARNING "Boost not found, even though USE_BOOST is ON") + endif() endif() # Find yaml-cpp if enabled if(USE_YAML_CPP) - find_package(yaml-cpp - 0.7.0 - REQUIRED - ) + find_package(yaml-cpp 0.7.0 REQUIRED) + if(YAML_CPP_FOUND) + message(STATUS "yaml-cpp found: ${YAML_CPP_INCLUDE_DIR}") + else() + message(WARNING "yaml-cpp not found, even though USE_YAML_CPP is ON") + endif() endif() -add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) +# Add the library +add_library(spackexamplelib + filesystem/filesystem.cpp + flatset/flatset.cpp + yamlParser/yamlParser.cpp +) +# Set the public header files set_target_properties(spackexamplelib PROPERTIES - PUBLIC_HEADER filesystem/filesystem.hpp - PUBLIC_HEADER flatset/flatset.hpp - PUBLIC_HEADER yamlParser/yamlParser.hpp + PUBLIC_HEADER "filesystem/filesystem.hpp;flatset/flatset.hpp;yamlParser/yamlParser.hpp" ) +# Add the executable add_executable(spackexample main.cpp) +# Link libraries target_link_libraries(spackexample spackexamplelib) -# Example of linking Boost and yaml-cpp if enabled -if(USE_BOOST) +# Conditionally link Boost and yaml-cpp if enabled +if(USE_BOOST AND Boost_FOUND) target_link_libraries(spackexamplelib Boost::filesystem) endif() -if(USE_YAML_CPP) +if(USE_YAML_CPP AND YAML_CPP_FOUND) target_link_libraries(spackexamplelib yaml-cpp) - include_directories(${YAML_CPP_INCLUDE_DIR}) + target_include_directories(spackexamplelib PRIVATE ${YAML_CPP_INCLUDE_DIR}) endif() +# Include directories for spackexamplelib target_include_directories(spackexamplelib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/spackexamplelib From 9a6953f9840a0b0ea101f88e72f9c3e86900b32b Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 21:18:09 +0100 Subject: [PATCH 06/11] Another attempt --- CMakeLists.txt | 58 +++++++++++++++++++------------------------------- 1 file changed, 22 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c03f9a..f4a4918 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,67 +2,53 @@ cmake_minimum_required(VERSION "3.12") project("spackexample" VERSION 0.3.0) -# Set options for optional dependencies option(USE_BOOST "Enable Boost support" ON) option(USE_YAML_CPP "Enable YAML-CPP support" ON) -# Find Boost if enabled if(USE_BOOST) - find_package(Boost 1.65.1 REQUIRED filesystem) - if(Boost_FOUND) - message(STATUS "Boost found: ${Boost_INCLUDE_DIRS}") - else() - message(WARNING "Boost not found, even though USE_BOOST is ON") - endif() +find_package(Boost + 1.65.1 + REQUIRED + filesystem + ) endif() -# Find yaml-cpp if enabled if(USE_YAML_CPP) - find_package(yaml-cpp 0.7.0 REQUIRED) - if(YAML_CPP_FOUND) - message(STATUS "yaml-cpp found: ${YAML_CPP_INCLUDE_DIR}") - else() - message(WARNING "yaml-cpp not found, even though USE_YAML_CPP is ON") - endif() +find_package(yaml-cpp + 0.7.0 + REQUIRED + ) endif() -# Add the library -add_library(spackexamplelib - filesystem/filesystem.cpp - flatset/flatset.cpp - yamlParser/yamlParser.cpp -) +add_library(spackexamplelib filesystem/filesystem.cpp flatset/flatset.cpp yamlParser/yamlParser.cpp) -# Set the public header files set_target_properties(spackexamplelib PROPERTIES - PUBLIC_HEADER "filesystem/filesystem.hpp;flatset/flatset.hpp;yamlParser/yamlParser.hpp" -) + PUBLIC_HEADER filesystem/filesystem.hpp + PUBLIC_HEADER flatset/flatset.hpp + PUBLIC_HEADER yamlParser/yamlParser.hpp + ) -# Add the executable -add_executable(spackexample main.cpp) +include_directories(${YAML_CPP_INCLUDE_DIR}) -# Link libraries +add_executable(spackexample main.cpp) target_link_libraries(spackexample spackexamplelib) -# Conditionally link Boost and yaml-cpp if enabled -if(USE_BOOST AND Boost_FOUND) - target_link_libraries(spackexamplelib Boost::filesystem) +if(USE_YAML_CPP) +target_link_libraries(spackexamplelib yaml-cpp) endif() -if(USE_YAML_CPP AND YAML_CPP_FOUND) - target_link_libraries(spackexamplelib yaml-cpp) - target_include_directories(spackexamplelib PRIVATE ${YAML_CPP_INCLUDE_DIR}) +if(USE_BOOST) +target_link_libraries(spackexamplelib Boost::filesystem) endif() -# Include directories for spackexamplelib target_include_directories(spackexamplelib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/spackexamplelib PUBLIC $ $ -) + ) # Create install targets include(GNUInstallDirs) @@ -72,4 +58,4 @@ install(TARGETS spackexample spackexamplelib RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/spackexample INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/spackexample -) + ) From 49b9f09c88e6548b8734af9e6ffac3a9fcd246e1 Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 21:21:06 +0100 Subject: [PATCH 07/11] Conditional deps in main.cpp --- main.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 8eda2d3..10df219 100644 --- a/main.cpp +++ b/main.cpp @@ -1,7 +1,14 @@ +#include + +// Conditionally include Boost and YAML-CPP based on CMake options +#ifdef USE_BOOST #include "flatset/flatset.hpp" #include "filesystem/filesystem.hpp" +#endif + +#ifdef USE_YAML_CPP #include "yamlParser/yamlParser.hpp" -#include +#endif int main(int argc, char *argv[]) { From 3b36fe9e0103b4ff7c18f669cf37f05ae6163a9c Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 21:22:43 +0100 Subject: [PATCH 08/11] More conditionals for main.cpp --- main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/main.cpp b/main.cpp index 10df219..8c7c2fb 100644 --- a/main.cpp +++ b/main.cpp @@ -15,13 +15,18 @@ int main(int argc, char *argv[]) std::cout << "Let's fight with CMake, Docker, and some dependencies!" << std::endl << std::endl; std::cout << "Modify a flat set using boost container" << std::endl; + #ifdef USE_BOOST modifyAndPrintSets(); + #endif std::cout << std::endl; std::cout << "Inspect the current directory using boost filesystem" << std::endl; + #ifdef USE_BOOST inspectDirectory(); + #endif std::cout << std::endl; + #ifdef USE_YAML_CPP if ( argc == 2 ) { const std::string yamlFile( argv[1] ); @@ -29,6 +34,7 @@ int main(int argc, char *argv[]) std::cout << " " << yamlFile << std::endl; parseConfig( yamlFile ); } + #endif return 0; } From f1d16a31d070d6fbed44a49cd0a0f6e15943599d Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 21:24:10 +0100 Subject: [PATCH 09/11] main.cpp better conditional blocks to isolate certain types of functionality --- main.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main.cpp b/main.cpp index 8c7c2fb..5739aa3 100644 --- a/main.cpp +++ b/main.cpp @@ -14,17 +14,17 @@ int main(int argc, char *argv[]) { std::cout << "Let's fight with CMake, Docker, and some dependencies!" << std::endl << std::endl; - std::cout << "Modify a flat set using boost container" << std::endl; #ifdef USE_BOOST + std::cout << "Modify a flat set using boost container" << std::endl; modifyAndPrintSets(); - #endif std::cout << std::endl; + #endif - std::cout << "Inspect the current directory using boost filesystem" << std::endl; #ifdef USE_BOOST + std::cout << "Inspect the current directory using boost filesystem" << std::endl; inspectDirectory(); - #endif std::cout << std::endl; + #endif #ifdef USE_YAML_CPP if ( argc == 2 ) From 715b06ba3e33d6613c811778db3edccab041a262 Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 21:47:20 +0100 Subject: [PATCH 10/11] Removed redundant logic --- main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/main.cpp b/main.cpp index 5739aa3..6e74509 100644 --- a/main.cpp +++ b/main.cpp @@ -18,9 +18,7 @@ int main(int argc, char *argv[]) std::cout << "Modify a flat set using boost container" << std::endl; modifyAndPrintSets(); std::cout << std::endl; - #endif - #ifdef USE_BOOST std::cout << "Inspect the current directory using boost filesystem" << std::endl; inspectDirectory(); std::cout << std::endl; From 235f7303e9bb8560f4883dca6271db6ce7958212 Mon Sep 17 00:00:00 2001 From: st170001 Date: Wed, 27 Nov 2024 22:37:53 +0100 Subject: [PATCH 11/11] Packaged diffusion2D python package for bonus task 3 --- package-pip.py | 41 +++++++++++++++++++++++++++++++++++++++++ package.py | 4 ++-- 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 package-pip.py diff --git a/package-pip.py b/package-pip.py new file mode 100644 index 0000000..3a5b1ba --- /dev/null +++ b/package-pip.py @@ -0,0 +1,41 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level 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 py-diffusion2d +# +# You can edit this file again by typing: +# +# spack edit py-diffusion2d +# +# See the Spack documentation for more information on packaging. +# ---------------------------------------------------------------------------- + +from spack.package import * + + +class PyDiffusion2d(PythonPackage): + """This package solves the diffusion equation in 2D over a square domain which is at a certain temperature""" + + homepage = "https://simulation-software-engineering.github.io/homepage/" + + url = "https://github.com/legendofa/diffusion2D/archive/refs/tags/v0.0.7.tar.gz" + + maintainers("legendofa") + + license("CC-BY-4.0", checked_by="legendofa") + + version("0.0.7", sha256="ec6cf0f809caf592342e228b81b32465679ccd1ea040b2653d89c4630786082e") + + depends_on("python@3.6:", type=("build", "run")) + depends_on("py-setuptools", type="build") + depends_on("py-versioneer", type="build") diff --git a/package.py b/package.py index 199e493..4908215 100644 --- a/package.py +++ b/package.py @@ -42,8 +42,8 @@ class SpackExercise(CMakePackage): variant("yaml-cpp", default=True, description="Enable YAML-CPP support") depends_on("cxx", type="build") - depends_on("yaml-cpp@0.7:", when="@0.3.0,main") - depends_on("boost@1.65.1:", when="@0.2.0:0.3.0,main") + depends_on("yaml-cpp@0.7:", when="@0.3.0,main+yaml-cpp") + depends_on("boost@1.65.1:", when="@0.2.0:0.3.0,main+boost") def cmake_args(self): args = super(SpackExercise, self).cmake_args()