Skip to content

Does camp require umpire? #1569

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
chapman39 opened this issue May 7, 2025 · 4 comments
Open

Does camp require umpire? #1569

chapman39 opened this issue May 7, 2025 · 4 comments
Labels
question Further information is requested TPL Issues related to Axom's third party libraries

Comments

@chapman39
Copy link
Contributor

chapman39 commented May 7, 2025

Axom requires umpire in order to properly set CAMP_DIR.

entries.append(cmake_cache_path("CAMP_DIR", dep_dir))

But, is this necessary? Does this mean you can't have Camp without Umpire? If not, I suggest this:

        if spec.satisfies("^camp"):
            dep_dir = get_spec_path(spec, "camp", path_replacements)
            entries.append(cmake_cache_path("CAMP_DIR", dep_dir))

If Camp does require umpire, then this means Serac always depends on umpire (given Serac always depends on axom and camp) and should no longer have an umpire variant.

@chapman39 chapman39 added question Further information is requested TPL Issues related to Axom's third party libraries labels May 7, 2025
@chapman39
Copy link
Contributor Author

I ran into this because my Serac build was auto-disabling just umpire (i.e. I had +raja~umpire), which is fun...

This caused the axom build to fail, since it wasn't setting CAMP_DIR.

@kennyweiss
Copy link
Member

I don't think Axom directly uses camp, only as a dependency from raja or umpire.

I see that we have this logic in Axom's spack package:

if spec.satisfies("+umpire") and spec.satisfies("^camp"):
dep_dir = get_spec_path(spec, "camp", path_replacements)
entries.append(cmake_cache_path("CAMP_DIR", dep_dir))

I wonder if it should be

        if (spec.satisfies("+umpire") or spec.satisfies("+raja")) and spec.satisfies("^camp"):

Tag: @white238

@chapman39
Copy link
Contributor Author

@kennyweiss
Copy link
Member

kennyweiss commented May 7, 2025

If Camp does require umpire, then this means Serac always depends on umpire (given Serac always depends on axom and camp) and should no longer have an umpire variant.

It's the other way around -- camp is a required dependency for umpire (and also for raja).
But, both raja and umpire are optional dependencies for axom.
So if serac depends on axom and camp, it sounds like you might need to add a depends_on("camp") to serac's spack package.

This looks right to me:

graph TD
  raja --> camp
  umpire --> camp
  axom -.-> umpire
  axom -.-> raja
  serac --> axom
  serac -.-> umpire
  serac -.-> raja
  serac --> camp
Loading

(I'm basing the serac dependencies on your description).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested TPL Issues related to Axom's third party libraries
Projects
None yet
Development

No branches or pull requests

2 participants