Skip to content

Commit

Permalink
first iteration of plugin enabled spackage
Browse files Browse the repository at this point in the history
  • Loading branch information
rbberger committed Jan 25, 2024
1 parent 2a66420 commit 577194a
Showing 1 changed file with 40 additions and 0 deletions.
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,19 @@ 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",
)
variant("variant", default="default", description="include path used for variant header")

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

if "none" not in self.spec.variants["plugins"].value:
pdirs = []
for p in self.spec.variants["plugins"].value:
pdirs.append(join_path(self.stage.source_path, self.plugins[p]))
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

0 comments on commit 577194a

Please sign in to comment.