Skip to content

Commit

Permalink
Merge pull request #337 from lanl/plugin_enabled_spackage
Browse files Browse the repository at this point in the history
Spackage with Plugin support
  • Loading branch information
Yurlungur authored Jan 29, 2024
2 parents 2a66420 + a4a756c commit f732181
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
40 changes: 40 additions & 0 deletions spack-repo/packages/singularity-eos/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,25 @@

import os

from spack.error import SpackError
from spack.package import *
from spack.directives import directive


@directive("singularity_eos_plugins")
def singularity_eos_plugin(name, path):
def _execute_register(pkg):
pkg.plugins[name] = path

return _execute_register


def plugin_validator(pkg_name, variant_name, values):
if values == ("none",):
return
for v in values:
if v not in SingularityEos.plugins:
raise SpackError(f"Unknown Singularity-EOS plugin '{v}'")


class SingularityEos(CMakePackage, CudaPackage):
Expand Down Expand Up @@ -63,6 +81,20 @@ class SingularityEos(CMakePackage, CudaPackage):

variant("closure", default=True, description="Build closure module")

plugins = {}

singularity_eos_plugin("dust", "example/plugin")

variant(
"plugins",
multi=True,
default="none",
validator=plugin_validator,
description="list of plugins to build",
when="@main"
)
variant("variant", default="default", description="include path used for variant header", when="@main")

# building/testing/docs
depends_on("[email protected]:")
depends_on("[email protected]:", when="@main +tests")
Expand Down Expand Up @@ -183,6 +215,14 @@ def cmake_args(self):
self.define("SINGULARITY_USE_EOSPAC", "^eospac" in self.spec),
]

if self.spec.satisfies("@main"):
if "none" not in self.spec.variants["plugins"].value:
pdirs = [join_path(self.stage.source_path, self.plugins[p]) for p in self.spec.variants["plugins"].value]
args.append(self.define("SINGULARITY_PLUGINS", ";".join(pdirs)))

if self.spec.variants["variant"].value != "default":
args.append(self.define_from_variant("SINGULARITY_VARIANT", "variant"))

#TODO: do we need this?
if "+kokkos+cuda" in self.spec:
args.append(self.define("CMAKE_CXX_COMPILER", self.spec["kokkos"].kokkos_cxx))
Expand Down
2 changes: 1 addition & 1 deletion spack-repo/repo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
# ###

repo:
namespace: singularity-eos
namespace: singularity_eos

0 comments on commit f732181

Please sign in to comment.