From 7f37293cb7d3ff9beefebf371199f395829a7313 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 13:43:56 -0800 Subject: [PATCH 01/20] add base testing script and new blt-test package that is based on Axom's but has all the Axom specific stuff ripped out --- packages/blt-test/package.py | 261 +++++++++++++++++++++++++++++++++++ scripts/test-blt | 24 ++++ 2 files changed, 285 insertions(+) create mode 100644 packages/blt-test/package.py create mode 100755 scripts/test-blt diff --git a/packages/blt-test/package.py b/packages/blt-test/package.py new file mode 100644 index 0000000..fab2c34 --- /dev/null +++ b/packages/blt-test/package.py @@ -0,0 +1,261 @@ +# Copyright 2013-2021 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) + +import os +import socket +from os.path import join as pjoin + +from spack import * + + +def get_spec_path(spec, package_name, path_replacements={}, use_bin=False): + """Extracts the prefix path for the given spack package + path_replacements is a dictionary with string replacements for the path. + """ + + if not use_bin: + path = spec[package_name].prefix + else: + path = spec[package_name].prefix.bin + + path = os.path.realpath(path) + + for key in path_replacements: + path = path.replace(key, path_replacements[key]) + + return path + + +class Blt-test(CachedCMakePackage, CudaPackage, ROCmPackage): + """This is a package meant to test out basic Spack environments + against BLT's smoke and internal tests""" + + maintainers = ['white238'] + + homepage = "https://github.com/LLNL/blt" + url = "https://github.com/LLNL/blt/archive/v0.4.0.tar.gz" + git = "https://github.com/LLNL/blt.git" + tags = ['radiuss'] + + maintainers = ['white238', 'davidbeckingsale'] + + version('develop', branch='develop') + version('main', branch='main') + # Note: 0.4.0+ contains a breaking change to BLT created targets + # if you export targets this could cause problems in downstream + # projects if not handled properly. More info here: + # https://llnl-blt.readthedocs.io/en/develop/tutorial/exporting_targets.html + version('0.4.1', sha256='16cc3e067ddcf48b99358107e5035a17549f52dcc701a35cd18a9d9f536826c1') + version('0.4.0', sha256='f3bc45d28b9b2eb6df43b75d4f6f89a1557d73d012da7b75bac1be0574767193') + version('0.3.6', sha256='6276317c29e7ff8524fbea47d9288ddb40ac06e9f9da5e878bf9011e2c99bf71') + version('0.3.5', sha256='68a1c224bb9203461ae6f5ab0ff3c50b4a58dcce6c2d2799489a1811f425fb84') + version('0.3.0', sha256='bb917a67cb7335d6721c997ba9c5dca70506006d7bba5e0e50033dd0836481a5') + version('0.2.5', sha256='3a000f60194e47b3e5623cc528cbcaf88f7fea4d9620b3c7446ff6658dc582a5') + version('0.2.0', sha256='c0cadf1269c2feb189e398a356e3c49170bc832df95e5564e32bdbb1eb0fa1b3') + + root_cmakelists_dir = 'tests/internal' + + # ----------------------------------------------------------------------- + # Variants + # ----------------------------------------------------------------------- + variant('shared', default=True, + description='Enable build of shared libraries') + variant('debug', default=False, + description='Build debug instead of optimized version') + + # TODO: change this to a variant with options (cpp11, cpp14, etc...) + #variant('cpp14', default=True, description="Build with C++14 support") + + variant('fortran', default=True, description="Build with Fortran support") + + variant("mpi", default=True, description="Build MPI support") + variant('openmp', default=True, description='Turn on OpenMP support.') + + # ----------------------------------------------------------------------- + # Dependencies + # ----------------------------------------------------------------------- + # Basics + depends_on("cmake@3.8.2:", type='build') + depends_on("mpi", when="+mpi") + + def flag_handler(self, name, flags): + if self.spec.satisfies('%cce') and name == 'fflags': + flags.append('-ef') + + if name in ('cflags', 'cxxflags', 'cppflags', 'fflags'): + return (None, None, None) # handled in the cmake cache + return (flags, None, None) + + def _get_sys_type(self, spec): + sys_type = spec.architecture + # if on llnl systems, we can use the SYS_TYPE + if "SYS_TYPE" in env: + sys_type = env["SYS_TYPE"] + return sys_type + + @property + def cache_name(self): + hostname = socket.gethostname() + if "SYS_TYPE" in env: + # Are we on a LLNL system then strip node number + hostname = hostname.rstrip('1234567890') + return "{0}-{1}-{2}@{3}.cmake".format( + hostname, + self._get_sys_type(self.spec), + self.spec.compiler.name, + self.spec.compiler.version + ) + + def initconfig_compiler_entries(self): + spec = self.spec + entries = super(Axom, self).initconfig_compiler_entries() + + if "+fortran" in spec or self.compiler.fc is not None: + entries.append(cmake_cache_option("ENABLE_FORTRAN", True)) + else: + entries.append(cmake_cache_option("ENABLE_FORTRAN", False)) + + if ((self.compiler.fc is not None) + and ("gfortran" in self.compiler.fc) + and ("clang" in self.compiler.cxx)): + libdir = pjoin(os.path.dirname( + os.path.dirname(self.compiler.cxx)), "lib") + flags = "" + for _libpath in [libdir, libdir + "64"]: + if os.path.exists(_libpath): + flags += " -Wl,-rpath,{0}".format(_libpath) + description = ("Adds a missing libstdc++ rpath") + if flags: + entries.append(cmake_cache_string("BLT_EXE_LINKER_FLAGS", flags, + description)) + + # TODO: reenable when multi-variable variant is made + # if "+cpp14" in spec: + # entries.append(cmake_cache_string("BLT_CXX_STD", "c++14", "")) + + return entries + + def initconfig_hardware_entries(self): + spec = self.spec + entries = super(Blt-test, self).initconfig_hardware_entries() + + if "+cuda" in spec: + entries.append(cmake_cache_option("ENABLE_CUDA", True)) + + # CUDA_FLAGS + cudaflags = "-restrict --expt-extended-lambda " + + if not spec.satisfies('cuda_arch=none'): + cuda_arch = spec.variants['cuda_arch'].value[0] + entries.append(cmake_cache_string( + "CMAKE_CUDA_ARCHITECTURES", + cuda_arch)) + cudaflags += '-arch sm_${CMAKE_CUDA_ARCHITECTURES} ' + else: + entries.append( + "# cuda_arch could not be determined\n\n") + + # TODO: reenable when multi-variable variant is made + # if "+cpp14" in spec: + # cudaflags += " -std=c++14" + # else: + # cudaflags += " -std=c++11" + entries.append( + cmake_cache_string("CMAKE_CUDA_FLAGS", cudaflags)) + + entries.append( + "# nvcc does not like gtest's 'pthreads' flag\n") + entries.append( + cmake_cache_option("gtest_disable_pthreads", True)) + + entries.append("#------------------{0}".format("-" * 30)) + entries.append("# Hardware Specifics") + entries.append("#------------------{0}\n".format("-" * 30)) + + # OpenMP + entries.append(cmake_cache_option("ENABLE_OPENMP", + spec.satisfies('+openmp'))) + + # Enable death tests + entries.append(cmake_cache_option( + "ENABLE_GTEST_DEATH_TESTS", + not spec.satisfies('+cuda target=ppc64le:') + )) + + if (self.compiler.fc is not None) and ("xlf" in self.compiler.fc): + # Grab lib directory for the current fortran compiler + libdir = pjoin(os.path.dirname( + os.path.dirname(self.compiler.fc)), + "lib") + description = ("Adds a missing rpath for libraries " + "associated with the fortran compiler") + + linker_flags = "${BLT_EXE_LINKER_FLAGS} -Wl,-rpath," + libdir + + entries.append(cmake_cache_string("BLT_EXE_LINKER_FLAGS", + linker_flags, description)) + + if "+shared" in spec: + linker_flags = "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath," \ + + libdir + entries.append(cmake_cache_string( + "CMAKE_SHARED_LINKER_FLAGS", + linker_flags, description)) + + description = ("Converts C-style comments to Fortran style " + "in preprocessed files") + entries.append(cmake_cache_string( + "BLT_FORTRAN_FLAGS", + "-WF,-C! -qxlf2003=polymorphic", + description)) + + if spec.satisfies('target=ppc64le:'): + # Fix for working around CMake adding implicit link directories + # returned by the BlueOS compilers to link executables with + # non-system default stdlib + _roots = ["/usr/tce/packages/gcc/gcc-4.9.3", + "/usr/tce/packages/gcc/gcc-4.9.3/gnu"] + _subdirs = ["lib64", + "lib64/gcc/powerpc64le-unknown-linux-gnu/4.9.3"] + _existing_paths = [] + for root in _roots: + for subdir in _subdirs: + _curr_path = pjoin(root, subdir) + if os.path.exists(_curr_path): + _existing_paths.append(_curr_path) + if _existing_paths: + entries.append(cmake_cache_string( + "BLT_CMAKE_IMPLICIT_LINK_DIRECTORIES_EXCLUDE", + ";".join(_existing_paths))) + + return entries + + def initconfig_mpi_entries(self): + spec = self.spec + entries = super(Blt-test, self).initconfig_mpi_entries() + + if "+mpi" in spec: + entries.append(cmake_cache_option("ENABLE_MPI", True)) + if spec['mpi'].name == 'spectrum-mpi': + entries.append(cmake_cache_string("BLT_MPI_COMMAND_APPEND", + "mpibind")) + else: + entries.append(cmake_cache_option("ENABLE_MPI", False)) + + return entries + + + def cmake_args(self): + options = [] + + if self.run_tests is False: + options.append('-DENABLE_TESTS=OFF') + else: + options.append('-DENABLE_TESTS=ON') + + options.append(self.define_from_variant( + 'BUILD_SHARED_LIBS', 'shared')) + + return options diff --git a/scripts/test-blt b/scripts/test-blt new file mode 100755 index 0000000..918b6fb --- /dev/null +++ b/scripts/test-blt @@ -0,0 +1,24 @@ +#!/bin/bash + +BASE_PATH=test_dir + +# get-spack variables +SPACK_REPO=https://github.com/spack/spack.git +SPACK_PATH=$BASE_DIR/spack +SPACK_REF="${CI_PIPELINE_ID:-3d1b9e4dbc31d1cf7d162de5189e858d7d5870f3}" +CI_PIPELINE_ID="${CI_PIPELINE_ID:-default-value}" + + +rm -rf $BASE_PATH +mkdir $BASE_PATH + +cd $BASE_PATH + # Setup spack + ./get-spack + + + # clone BLT + git clone https://github.com/LLNL/blt.git blt + +cd .. + From 8e40b4892b261652303d1d18512c95082dd4a452 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 13:52:27 -0800 Subject: [PATCH 02/20] fix script to work at all --- scripts/test-blt | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/scripts/test-blt b/scripts/test-blt index 918b6fb..ced5fbd 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -1,24 +1,31 @@ #!/bin/bash +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" BASE_PATH=test_dir # get-spack variables -SPACK_REPO=https://github.com/spack/spack.git -SPACK_PATH=$BASE_DIR/spack -SPACK_REF="${CI_PIPELINE_ID:-3d1b9e4dbc31d1cf7d162de5189e858d7d5870f3}" -CI_PIPELINE_ID="${CI_PIPELINE_ID:-default-value}" - +export SPACK_REPO=https://github.com/spack/spack.git +export SPACK_PATH=spack +export SPACK_REF="${SPACK_REF:-develop}" +export CI_PIPELINE_ID="${CI_PIPELINE_ID:-default-value}" + +echo "~~~~~~~~~~~~~ test-blt variables ~~~~~~~~~~~~~~" + echo SCRIPT_DIR=$SCRIPT_DIR + echo BASE_PATH=$BASE_PATH + echo SPACK_REPO=$SPACK_REPO + echo SPACK_PATH=$SPACK_PATH + echo SPACK_REF=$SPACK_REF + echo CI_PIPELINE_ID=$CI_PIPELINE_ID +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" rm -rf $BASE_PATH mkdir $BASE_PATH cd $BASE_PATH # Setup spack - ./get-spack - + $SCRIPT_DIR/get-spack # clone BLT git clone https://github.com/LLNL/blt.git blt cd .. - From cb7def3ad4d6b3c4af7087e784dad0aad9dee43b Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 14:08:10 -0800 Subject: [PATCH 03/20] add copying packages --- scripts/test-blt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/test-blt b/scripts/test-blt index ced5fbd..7ff742a 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -1,6 +1,7 @@ #!/bin/bash SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +REPO_DIR=$SCRIPT_DIR/.. BASE_PATH=test_dir # get-spack variables @@ -11,6 +12,7 @@ export CI_PIPELINE_ID="${CI_PIPELINE_ID:-default-value}" echo "~~~~~~~~~~~~~ test-blt variables ~~~~~~~~~~~~~~" echo SCRIPT_DIR=$SCRIPT_DIR + echo REPO_DIR=$REPO_DIR echo BASE_PATH=$BASE_PATH echo SPACK_REPO=$SPACK_REPO echo SPACK_PATH=$SPACK_PATH @@ -24,6 +26,7 @@ mkdir $BASE_PATH cd $BASE_PATH # Setup spack $SCRIPT_DIR/get-spack + cp -R $REPO_DIR/packages/* $SPACK_PATH/var/spack/repos/builtin/packages # clone BLT git clone https://github.com/LLNL/blt.git blt From c138f80b7df43af38fb13af368cfb64b1f14d211 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 14:24:24 -0800 Subject: [PATCH 04/20] add basic and untested toss3 clang env --- scripts/test-blt | 16 ++- .../blt-test/toss3-clang10.yaml | 118 ++++++++++++++++++ 2 files changed, 130 insertions(+), 4 deletions(-) create mode 100644 spack-environments/blt-test/toss3-clang10.yaml diff --git a/scripts/test-blt b/scripts/test-blt index 7ff742a..55e1945 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -4,6 +4,8 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) REPO_DIR=$SCRIPT_DIR/.. BASE_PATH=test_dir +SPACK_ENV_PATH=$REPO_DIR + # get-spack variables export SPACK_REPO=https://github.com/spack/spack.git export SPACK_PATH=spack @@ -24,11 +26,17 @@ rm -rf $BASE_PATH mkdir $BASE_PATH cd $BASE_PATH - # Setup spack + # Setup Spack $SCRIPT_DIR/get-spack cp -R $REPO_DIR/packages/* $SPACK_PATH/var/spack/repos/builtin/packages - # clone BLT - git clone https://github.com/LLNL/blt.git blt - + # Load environment and build/test BLT + mkdir spack-build + cd spack-build + spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml + spack env activate test1 + spack concretize + spack find -cvl + spack install + cd .. cd .. diff --git a/spack-environments/blt-test/toss3-clang10.yaml b/spack-environments/blt-test/toss3-clang10.yaml new file mode 100644 index 0000000..f9ad0b4 --- /dev/null +++ b/spack-environments/blt-test/toss3-clang10.yaml @@ -0,0 +1,118 @@ +############################################################################### +# Copyright (c) 2019-2021, Lawrence Livermore National Security, LLC and other +# RADIUSS-CI project contributors. See top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: MIT +############################################################################### + +spack: + view: false + concretization: separately + spec: + - blt-test + + compilers: + - compiler: + environment: {} + extra_rpaths: [] + flags: + cflags: --gcc-toolchain=/usr/tce/packages/gcc/gcc-8.1.0 + cxxflags: --gcc-toolchain=/usr/tce/packages/gcc/gcc-8.1.0 + modules: + - clang/10.0.0 + operating_system: rhel7 + paths: + cc: /usr/tce/packages/clang/clang-10.0.0/bin/clang + cxx: /usr/tce/packages/clang/clang-10.0.0/bin/clang++ + f77: /usr/tce/packages/gcc/gcc-8.1.0/bin/gfortran + fc: /usr/tce/packages/gcc/gcc-8.1.0/bin/gfortran + spec: clang@10.0.0 + target: x86_64 + + packages: + all: + # This defaults us to machine specific flags of ivybridge which allows + # us to run on broadwell as well + target: [ivybridge] + compiler: [gcc, intel, pgi, clang, xl, nag] + providers: + blas: [netlib-lapack] + lapack: [netlib-lapack] + mpi: [mvapich2] + + # LLNL toss3 CUDA + cuda: + buildable: false + externals: + - spec: cuda@10.2 + prefix: /opt/cudatoolkit/10.2 + + # Lock down which MPI we are using + mpi: + buildable: false + mvapich2: + buildable: false + externals: + - spec: mvapich2@2.3%clang@10.0.0 process_managers=slurm arch=linux-rhel7-ivybridge + prefix: /usr/tce/packages/mvapich2/mvapich2-2.3-clang-10.0.0 + + # blas is a bit more complicated because its a virtual package so fake it with + # the following per spack docs + netlib-lapack: + buildable: false + externals: + - spec: netlib-lapack@3.6.1 + prefix: /usr + + # System level packages to not build + autoconf: + buildable: false + externals: + - spec: autoconf + prefix: /usr + automake: + buildable: false + externals: + - spec: automake + prefix: /usr + bzip2: + buildable: false + externals: + - spec: bzip2 + prefix: /usr + cmake: + version: [3.18.0] + buildable: false + externals: + - spec: cmake@3.18.0 + prefix: /usr/tce/packages/cmake/cmake-3.18.0 + gettext: + buildable: false + externals: + - spec: gettext + prefix: /usr + libtool: + buildable: false + externals: + - spec: libtool + prefix: /usr + m4: + buildable: false + externals: + - spec: m4 + prefix: /usr + perl: + buildable: false + externals: + - spec: perl + prefix: /usr + pkg-config: + buildable: false + externals: + - spec: pkg-config + prefix: /usr + tar: + buildable: false + externals: + - spec: tar + prefix: /usr \ No newline at end of file From dbf03855653ba5b6730d67065722377844a2772c Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 14:26:52 -0800 Subject: [PATCH 05/20] fix path to spack --- scripts/test-blt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/test-blt b/scripts/test-blt index 55e1945..a735972 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -33,10 +33,10 @@ cd $BASE_PATH # Load environment and build/test BLT mkdir spack-build cd spack-build - spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml - spack env activate test1 - spack concretize - spack find -cvl - spack install + $SPACK_PATH/bin/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml + $SPACK_PATH/bin/spack env activate test1 + $SPACK_PATH/bin/spack concretize + $SPACK_PATH/bin/spack find -cvl + $SPACK_PATH/bin/spack install cd .. cd .. From e9c0f76fed42adfebd9872bd5d4bf02d84410451 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 14:29:10 -0800 Subject: [PATCH 06/20] really fix path --- scripts/test-blt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test-blt b/scripts/test-blt index a735972..010226b 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -8,7 +8,7 @@ SPACK_ENV_PATH=$REPO_DIR # get-spack variables export SPACK_REPO=https://github.com/spack/spack.git -export SPACK_PATH=spack +export SPACK_PATH=$BASE_DIR/spack export SPACK_REF="${SPACK_REF:-develop}" export CI_PIPELINE_ID="${CI_PIPELINE_ID:-default-value}" From d5eae7347b5a8744c60d2a88374c4ea245b1609c Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 14:31:32 -0800 Subject: [PATCH 07/20] super fixing it --- scripts/get-spack | 8 ++++++-- scripts/test-blt | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/get-spack b/scripts/get-spack index b194d74..2a3eb14 100755 --- a/scripts/get-spack +++ b/scripts/get-spack @@ -9,14 +9,18 @@ then # A shallow clone is enough, and much faster. git clone ${SPACK_REPO} --depth 1 --branch ${SPACK_REF} ${SPACK_PATH} # We tag the commit so we can retrieve which one was used by a given pipeline. - git tag ${CI_PIPELINE_ID} + if [[ ! -z ${CI_PIPELINE_ID} ]]; then + git tag ${CI_PIPELINE_ID} + fi else cd ${SPACK_PATH} git checkout -b temp git branch -D ${SPACK_REF} git fetch --depth 1 ${SPACK_REPO} ${SPACK_REF}:${SPACK_REF} git checkout ${SPACK_REF} - git tag ${CI_PIPELINE_ID} + if [[ ! -z ${CI_PIPELINE_ID} ]]; then + git tag ${CI_PIPELINE_ID} + fi git branch -D temp cd - fi diff --git a/scripts/test-blt b/scripts/test-blt index 010226b..7fd9f40 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -8,9 +8,9 @@ SPACK_ENV_PATH=$REPO_DIR # get-spack variables export SPACK_REPO=https://github.com/spack/spack.git -export SPACK_PATH=$BASE_DIR/spack +export SPACK_PATH=$BASE_PATH/spack export SPACK_REF="${SPACK_REF:-develop}" -export CI_PIPELINE_ID="${CI_PIPELINE_ID:-default-value}" +export CI_PIPELINE_ID="${CI_PIPELINE_ID:-}" echo "~~~~~~~~~~~~~ test-blt variables ~~~~~~~~~~~~~~" echo SCRIPT_DIR=$SCRIPT_DIR From 0290c19820aac8c98a00dcf1703912157dc817d3 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 14:35:27 -0800 Subject: [PATCH 08/20] fixed --- scripts/test-blt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/test-blt b/scripts/test-blt index 7fd9f40..58cbcf1 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -8,7 +8,8 @@ SPACK_ENV_PATH=$REPO_DIR # get-spack variables export SPACK_REPO=https://github.com/spack/spack.git -export SPACK_PATH=$BASE_PATH/spack +export SPACK_PATH=spack +export SPACK_BIN=$SPACK_PATH/bin export SPACK_REF="${SPACK_REF:-develop}" export CI_PIPELINE_ID="${CI_PIPELINE_ID:-}" @@ -33,10 +34,10 @@ cd $BASE_PATH # Load environment and build/test BLT mkdir spack-build cd spack-build - $SPACK_PATH/bin/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml - $SPACK_PATH/bin/spack env activate test1 - $SPACK_PATH/bin/spack concretize - $SPACK_PATH/bin/spack find -cvl - $SPACK_PATH/bin/spack install + $SPACK_BIN/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml + $SPACK_BIN/spack env activate test1 + $SPACK_BIN/spack concretize + $SPACK_BIN/spack find -cvl + $SPACK_BIN/spack install cd .. cd .. From 0e90a93134883a3707329ebfa492b39788ec3de5 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 14:46:39 -0800 Subject: [PATCH 09/20] fix env file --- spack-environments/blt-test/toss3-clang10.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spack-environments/blt-test/toss3-clang10.yaml b/spack-environments/blt-test/toss3-clang10.yaml index f9ad0b4..eba696e 100644 --- a/spack-environments/blt-test/toss3-clang10.yaml +++ b/spack-environments/blt-test/toss3-clang10.yaml @@ -8,7 +8,7 @@ spack: view: false concretization: separately - spec: + specs: - blt-test compilers: From 06a8c99ccef880556434a099cd1b7c229c7a01f7 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 15:01:34 -0800 Subject: [PATCH 10/20] checkpoint --- packages/{blt-test => blttest}/package.py | 2 +- scripts/test-blt | 17 ++++++++++++----- spack-environments/blt-test/toss3-clang10.yaml | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) rename packages/{blt-test => blttest}/package.py (99%) diff --git a/packages/blt-test/package.py b/packages/blttest/package.py similarity index 99% rename from packages/blt-test/package.py rename to packages/blttest/package.py index fab2c34..a2a6ccd 100644 --- a/packages/blt-test/package.py +++ b/packages/blttest/package.py @@ -28,7 +28,7 @@ def get_spec_path(spec, package_name, path_replacements={}, use_bin=False): return path -class Blt-test(CachedCMakePackage, CudaPackage, ROCmPackage): +class Blttest(CachedCMakePackage, CudaPackage, ROCmPackage): """This is a package meant to test out basic Spack environments against BLT's smoke and internal tests""" diff --git a/scripts/test-blt b/scripts/test-blt index 58cbcf1..f668657 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -34,10 +34,17 @@ cd $BASE_PATH # Load environment and build/test BLT mkdir spack-build cd spack-build - $SPACK_BIN/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml - $SPACK_BIN/spack env activate test1 - $SPACK_BIN/spack concretize - $SPACK_BIN/spack find -cvl - $SPACK_BIN/spack install + echo "~~ spack clean" + ../$SPACK_BIN/spack clean --misc-cache --failures --python-cache + echo "~~ spack env create" + ../$SPACK_BIN/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml + echo "~~ spack env activate" + eval `../$SPACK_BIN/spack -d env activate --sh test1` + echo "~~ spack concretize" + ../$SPACK_BIN/spack concretize + echo "~~ spack find" + ../$SPACK_BIN/spack find -cvl + echo "~~ spack install" + ../$SPACK_BIN/spack install cd .. cd .. diff --git a/spack-environments/blt-test/toss3-clang10.yaml b/spack-environments/blt-test/toss3-clang10.yaml index eba696e..475b159 100644 --- a/spack-environments/blt-test/toss3-clang10.yaml +++ b/spack-environments/blt-test/toss3-clang10.yaml @@ -9,7 +9,7 @@ spack: view: false concretization: separately specs: - - blt-test + - blttest compilers: - compiler: From 66f5b36dfed917de5dac6c558844a2e2b908a6a8 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 15:22:42 -0800 Subject: [PATCH 11/20] lock down versions, fix commands w/ help of greg --- scripts/test-blt | 20 ++- .../blt-test/toss3-clang10.yaml | 135 +++++++++++------- 2 files changed, 98 insertions(+), 57 deletions(-) diff --git a/scripts/test-blt b/scripts/test-blt index f668657..eefe185 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -34,17 +34,25 @@ cd $BASE_PATH # Load environment and build/test BLT mkdir spack-build cd spack-build + echo "~~ kill previous environment" + export SPACK_ENV= + echo "~~ spack clean" ../$SPACK_BIN/spack clean --misc-cache --failures --python-cache - echo "~~ spack env create" + + echo "~~ spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml" ../$SPACK_BIN/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml - echo "~~ spack env activate" - eval `../$SPACK_BIN/spack -d env activate --sh test1` + + #echo "~~ spack -d env activate --sh test1" + #eval `../$SPACK_BIN/spack env activate --sh test1` + echo "~~ spack concretize" - ../$SPACK_BIN/spack concretize + ../$SPACK_BIN/spack -e test1 concretize + echo "~~ spack find" - ../$SPACK_BIN/spack find -cvl + ../$SPACK_BIN/spack -e test1 find -cvl + echo "~~ spack install" - ../$SPACK_BIN/spack install + ../$SPACK_BIN/spack -e test1 install cd .. cd .. diff --git a/spack-environments/blt-test/toss3-clang10.yaml b/spack-environments/blt-test/toss3-clang10.yaml index 475b159..2b189b4 100644 --- a/spack-environments/blt-test/toss3-clang10.yaml +++ b/spack-environments/blt-test/toss3-clang10.yaml @@ -64,55 +64,88 @@ spack: - spec: netlib-lapack@3.6.1 prefix: /usr + # blas is a bit more complicated because its a virtual package so fake it with + # the following per spack docs + netlib-lapack: + buildable: false + externals: + - spec: netlib-lapack@3.6.1 + prefix: /usr + # System level packages to not build - autoconf: - buildable: false - externals: - - spec: autoconf - prefix: /usr - automake: - buildable: false - externals: - - spec: automake - prefix: /usr - bzip2: - buildable: false - externals: - - spec: bzip2 - prefix: /usr - cmake: - version: [3.18.0] - buildable: false - externals: - - spec: cmake@3.18.0 - prefix: /usr/tce/packages/cmake/cmake-3.18.0 - gettext: - buildable: false - externals: - - spec: gettext - prefix: /usr - libtool: - buildable: false - externals: - - spec: libtool - prefix: /usr - m4: - buildable: false - externals: - - spec: m4 - prefix: /usr - perl: - buildable: false - externals: - - spec: perl - prefix: /usr - pkg-config: - buildable: false - externals: - - spec: pkg-config - prefix: /usr - tar: - buildable: false - externals: - - spec: tar - prefix: /usr \ No newline at end of file + autoconf: + buildable: false + externals: + - spec: autoconf@2.69 + prefix: /usr + automake: + buildable: false + externals: + - spec: automake@1.13.4 + prefix: /usr + bzip2: + buildable: false + externals: + - spec: bzip2@1.0.6 + prefix: /usr + cmake: + version: [3.18.0] + buildable: false + externals: + - spec: cmake@3.18.0 + prefix: /usr/tce/packages/cmake/cmake-3.18.0 + gettext: + buildable: false + externals: + - spec: gettext@0.19.8.1 + prefix: /usr + graphviz: + buildable: false + externals: + - spec: graphviz@2.30.1 + prefix: /usr + libtool: + buildable: false + externals: + - spec: libtool@2.4.2 + prefix: /usr + libx11: + buildable: false + externals: + - spec: libx11@1.20.4 + prefix: /usr + m4: + buildable: false + externals: + - spec: m4@1.4.16 + prefix: /usr + perl: + buildable: false + externals: + - spec: perl@5.16.3 + prefix: /usr + pkg-config: + buildable: false + externals: + - spec: pkg-config@0.27.1 + prefix: /usr + tar: + buildable: false + externals: + - spec: tar@1.26 + prefix: /usr + readline: + buildable: false + externals: + - spec: readline@6.2 + prefix: /usr + unzip: + buildable: false + externals: + - spec: unzip@6.0 + prefix: /usr + zlib: + buildable: false + externals: + - spec: zlib@1.2.7 + prefix: /usr \ No newline at end of file From 36f553b46eb8733090f8b559714c31fb582e35b3 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 15:23:55 -0800 Subject: [PATCH 12/20] fix indenting --- .../blt-test/toss3-clang10.yaml | 162 +++++++++--------- 1 file changed, 77 insertions(+), 85 deletions(-) diff --git a/spack-environments/blt-test/toss3-clang10.yaml b/spack-environments/blt-test/toss3-clang10.yaml index 2b189b4..04f0353 100644 --- a/spack-environments/blt-test/toss3-clang10.yaml +++ b/spack-environments/blt-test/toss3-clang10.yaml @@ -64,88 +64,80 @@ spack: - spec: netlib-lapack@3.6.1 prefix: /usr - # blas is a bit more complicated because its a virtual package so fake it with - # the following per spack docs - netlib-lapack: - buildable: false - externals: - - spec: netlib-lapack@3.6.1 - prefix: /usr - - # System level packages to not build - autoconf: - buildable: false - externals: - - spec: autoconf@2.69 - prefix: /usr - automake: - buildable: false - externals: - - spec: automake@1.13.4 - prefix: /usr - bzip2: - buildable: false - externals: - - spec: bzip2@1.0.6 - prefix: /usr - cmake: - version: [3.18.0] - buildable: false - externals: - - spec: cmake@3.18.0 - prefix: /usr/tce/packages/cmake/cmake-3.18.0 - gettext: - buildable: false - externals: - - spec: gettext@0.19.8.1 - prefix: /usr - graphviz: - buildable: false - externals: - - spec: graphviz@2.30.1 - prefix: /usr - libtool: - buildable: false - externals: - - spec: libtool@2.4.2 - prefix: /usr - libx11: - buildable: false - externals: - - spec: libx11@1.20.4 - prefix: /usr - m4: - buildable: false - externals: - - spec: m4@1.4.16 - prefix: /usr - perl: - buildable: false - externals: - - spec: perl@5.16.3 - prefix: /usr - pkg-config: - buildable: false - externals: - - spec: pkg-config@0.27.1 - prefix: /usr - tar: - buildable: false - externals: - - spec: tar@1.26 - prefix: /usr - readline: - buildable: false - externals: - - spec: readline@6.2 - prefix: /usr - unzip: - buildable: false - externals: - - spec: unzip@6.0 - prefix: /usr - zlib: - buildable: false - externals: - - spec: zlib@1.2.7 - prefix: /usr \ No newline at end of file + # System level packages to not build + autoconf: + buildable: false + externals: + - spec: autoconf@2.69 + prefix: /usr + automake: + buildable: false + externals: + - spec: automake@1.13.4 + prefix: /usr + bzip2: + buildable: false + externals: + - spec: bzip2@1.0.6 + prefix: /usr + cmake: + version: [3.18.0] + buildable: false + externals: + - spec: cmake@3.18.0 + prefix: /usr/tce/packages/cmake/cmake-3.18.0 + gettext: + buildable: false + externals: + - spec: gettext@0.19.8.1 + prefix: /usr + graphviz: + buildable: false + externals: + - spec: graphviz@2.30.1 + prefix: /usr + libtool: + buildable: false + externals: + - spec: libtool@2.4.2 + prefix: /usr + libx11: + buildable: false + externals: + - spec: libx11@1.20.4 + prefix: /usr + m4: + buildable: false + externals: + - spec: m4@1.4.16 + prefix: /usr + perl: + buildable: false + externals: + - spec: perl@5.16.3 + prefix: /usr + pkg-config: + buildable: false + externals: + - spec: pkg-config@0.27.1 + prefix: /usr + tar: + buildable: false + externals: + - spec: tar@1.26 + prefix: /usr + readline: + buildable: false + externals: + - spec: readline@6.2 + prefix: /usr + unzip: + buildable: false + externals: + - spec: unzip@6.0 + prefix: /usr + zlib: + buildable: false + externals: + - spec: zlib@1.2.7 + prefix: /usr \ No newline at end of file From 5437fd845f4b73363d1bf0372c4818df37107b33 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 15:28:03 -0800 Subject: [PATCH 13/20] fix class name stuff --- packages/blttest/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/blttest/package.py b/packages/blttest/package.py index a2a6ccd..2371ed5 100644 --- a/packages/blttest/package.py +++ b/packages/blttest/package.py @@ -110,7 +110,7 @@ def cache_name(self): def initconfig_compiler_entries(self): spec = self.spec - entries = super(Axom, self).initconfig_compiler_entries() + entries = super(Blttest, self).initconfig_compiler_entries() if "+fortran" in spec or self.compiler.fc is not None: entries.append(cmake_cache_option("ENABLE_FORTRAN", True)) @@ -139,7 +139,7 @@ def initconfig_compiler_entries(self): def initconfig_hardware_entries(self): spec = self.spec - entries = super(Blt-test, self).initconfig_hardware_entries() + entries = super(Blttest, self).initconfig_hardware_entries() if "+cuda" in spec: entries.append(cmake_cache_option("ENABLE_CUDA", True)) @@ -234,7 +234,7 @@ def initconfig_hardware_entries(self): def initconfig_mpi_entries(self): spec = self.spec - entries = super(Blt-test, self).initconfig_mpi_entries() + entries = super(Blttest, self).initconfig_mpi_entries() if "+mpi" in spec: entries.append(cmake_cache_option("ENABLE_MPI", True)) From f7b7664bac14603ee45af3c24085e7f2055ac7df Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 15:32:10 -0800 Subject: [PATCH 14/20] test and do not use home directory --- scripts/test-blt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/test-blt b/scripts/test-blt index eefe185..930d3ca 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -34,9 +34,12 @@ cd $BASE_PATH # Load environment and build/test BLT mkdir spack-build cd spack-build - echo "~~ kill previous environment" + echo "~~ clear SPACK_ENV" export SPACK_ENV= + echo "~~ do not use home directory" + export SPACK_DISABLE_LOCAL_CONFIG=true + echo "~~ spack clean" ../$SPACK_BIN/spack clean --misc-cache --failures --python-cache @@ -53,6 +56,6 @@ cd $BASE_PATH ../$SPACK_BIN/spack -e test1 find -cvl echo "~~ spack install" - ../$SPACK_BIN/spack -e test1 install + ../$SPACK_BIN/spack -e test1 install --test=root cd .. cd .. From 3aa23053b807f0a98ab3b6876a1aed09923457f3 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 15:35:08 -0800 Subject: [PATCH 15/20] remove separate concretize --- scripts/test-blt | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/scripts/test-blt b/scripts/test-blt index 930d3ca..7b8927a 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -46,16 +46,10 @@ cd $BASE_PATH echo "~~ spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml" ../$SPACK_BIN/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml - #echo "~~ spack -d env activate --sh test1" - #eval `../$SPACK_BIN/spack env activate --sh test1` - - echo "~~ spack concretize" - ../$SPACK_BIN/spack -e test1 concretize - - echo "~~ spack find" + echo "~~ spack find -cvl" ../$SPACK_BIN/spack -e test1 find -cvl - echo "~~ spack install" + echo "~~ spack install --test=root" ../$SPACK_BIN/spack -e test1 install --test=root cd .. cd .. From 6f6396d196e7a68cba00e032dc20b66ab92b5ca4 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 15:43:22 -0800 Subject: [PATCH 16/20] remove find per greg and fix class error --- packages/blttest/package.py | 2 ++ scripts/test-blt | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/blttest/package.py b/packages/blttest/package.py index 2371ed5..93a9b43 100644 --- a/packages/blttest/package.py +++ b/packages/blttest/package.py @@ -246,6 +246,8 @@ def initconfig_mpi_entries(self): return entries + def initconfig_package_entries(self): + return [] def cmake_args(self): options = [] diff --git a/scripts/test-blt b/scripts/test-blt index 7b8927a..0cd0683 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -46,9 +46,6 @@ cd $BASE_PATH echo "~~ spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml" ../$SPACK_BIN/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml - echo "~~ spack find -cvl" - ../$SPACK_BIN/spack -e test1 find -cvl - echo "~~ spack install --test=root" ../$SPACK_BIN/spack -e test1 install --test=root cd .. From 1b5acda7a4fa440c1f5dfeeac9e48bd7a7a05088 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 16:33:00 -0800 Subject: [PATCH 17/20] fix tests --- packages/blttest/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/blttest/package.py b/packages/blttest/package.py index 93a9b43..d14de3e 100644 --- a/packages/blttest/package.py +++ b/packages/blttest/package.py @@ -261,3 +261,12 @@ def cmake_args(self): 'BUILD_SHARED_LIBS', 'shared')) return options + + @run_after('build') + @on_package_attributes(run_tests=True) + def build_test(self): + with working_dir(self.build_directory): + print("Running Blttest Unit Tests...") + test_env = {'CTEST_OUTPUT_ON_FAILURE':'1', + 'ARGS':'--no-compress-output -T Test -VV'} + make("test", env=test_env) From b97ada3347a27ed1a611a46761e9e2d86a3db8d5 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 16:33:27 -0800 Subject: [PATCH 18/20] override directories and all previous compielrs --- spack-environments/blt-test/toss3-clang10.yaml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/spack-environments/blt-test/toss3-clang10.yaml b/spack-environments/blt-test/toss3-clang10.yaml index 04f0353..285806c 100644 --- a/spack-environments/blt-test/toss3-clang10.yaml +++ b/spack-environments/blt-test/toss3-clang10.yaml @@ -11,7 +11,18 @@ spack: specs: - blttest - compilers: + config: + install_tree: + root: $spack/../install + padded_length: 128 + projections: + all: '{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}' + misc_cache: $spack/../misc_cache + test_stage: $spack/../test_stage + build_stage:: + - $spack/../stage + + compilers:: - compiler: environment: {} extra_rpaths: [] From 28d05276289d20c35aaff5e99a1867dafa867276 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 16:33:38 -0800 Subject: [PATCH 19/20] fix spack command and list todos --- scripts/test-blt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/scripts/test-blt b/scripts/test-blt index 0cd0683..57c9e12 100755 --- a/scripts/test-blt +++ b/scripts/test-blt @@ -1,5 +1,9 @@ #!/bin/bash +# +# Note: This is super hacked together during a hackathon and definitely can be improved +# + SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" REPO_DIR=$SCRIPT_DIR/.. BASE_PATH=test_dir @@ -47,6 +51,10 @@ cd $BASE_PATH ../$SPACK_BIN/spack env create test1 $REPO_DIR/spack-environments/blt-test/toss3-clang10.yaml echo "~~ spack install --test=root" - ../$SPACK_BIN/spack -e test1 install --test=root + ../$SPACK_BIN/spack -e test1 install --keep-stage -v --test=root + + # TODO: convert to junit and add as test artifacts + # TODO: copy host-configs to a helpful place + # TODO: profit cd .. cd .. From e5aaae4b04bbc8302a59dbb8f1a560496e5de221 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 7 Dec 2021 16:36:00 -0800 Subject: [PATCH 20/20] end line --- spack-environments/blt-test/toss3-clang10.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spack-environments/blt-test/toss3-clang10.yaml b/spack-environments/blt-test/toss3-clang10.yaml index 285806c..1059772 100644 --- a/spack-environments/blt-test/toss3-clang10.yaml +++ b/spack-environments/blt-test/toss3-clang10.yaml @@ -151,4 +151,4 @@ spack: buildable: false externals: - spec: zlib@1.2.7 - prefix: /usr \ No newline at end of file + prefix: /usr