-
Notifications
You must be signed in to change notification settings - Fork 14
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
Merge spack/develop as of 2024/01/26 into jcsda_emc_spack_stack #401
Merge spack/develop as of 2024/01/26 into jcsda_emc_spack_stack #401
Conversation
Part 3 of reworking all package metadata to key by `when` conditions. Changes conflict dictionary structure from this: { (requirement_spec, ...): [(when_spec, policy, msg)] } to this: { when_spec: [((requirement_spec, ...), policy, msg), ...] }
`make_when_spec()` was being used in the solver, but it has semantics that are specific to parsing when specs from `package.py`. In particular, it returns `None` when the `when` spec is `False`, and directives are responsible for ignoring that case and not adding requirements, deps, etc. when there's an actual `False` passed in from `package.py`. In `asp.py`, we know that there won't ever be a raw boolean when spec or constraint, so we know we can parse them without any of the special boolean handling. However, we should report where in the file the error happened on error, so this adds some parsing logic to extract the `mark` from YAML and alert the user where the bad parse is. - [x] refactor `config.py` so that basic `spack_yaml` mark info is in its own method - [x] refactor `asp.py` so that it uses the smarter YAML parsing routine - [x] refactor `asp.py` so that YAML input validation for requirements is done up front
Part 4 of reworking all package metadata to key by `when` conditions. Changes conflict dictionary structure from this: { provided_spec: {when_spec, ...} } to this: { when_spec: {provided_spec, ...} }
Shows how to modify environment variables using "setup_build_environment" instead of overriding "edit"
…spack#41986) This fixes an issue where pkg.stage throws because a patch cannot be found, but the patch is redundant because the spec is reused from a build cache and will be installed from existing binaries.
…k#41727) * Move in vs. satisfies to a note and mention special cases of in * Address feedback: oveoverlap -> intersect * Re-word the satisfies versus in note. --------- Co-authored-by: Massimiliano Culpo <[email protected]>
Adds DateTime::Format::MySQL
Adds DateTime::Format::Oracle
Adds MetaCPAN::Client
Adds Email::MIME::ContentType
* perl-memoize: add new package with version 1.16= * fix styling
* glow: add latest version v1.5.1 * update: glow build from source
…le load time. Add 1.0.8.1 update branch. (spack#42010)
* py-pyvista: fix import tests * Skip additional modules
…penmpi@5:, autoreconf is enforced and we need to apply the two-level namespace patch again after the autoreconf step
…into feature/merge_spack_dev_20240126
The only thing that stands out to me is MySQL-- Let's restore the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked mentioned package.py's and differences with old ones. Looks good to me.
Do we need this functionality? On all the HPCs as well as on all the user platforms we rely on mysql being provided as an external package? I'd rather remove that option unless you remind me of why we need it ;-) |
That would have been my guess but I don't recall what the |
It downloads and uses its own internal boost libraries, so it doesn't impose version constraints on the Spack-installed boost. |
Ok, so because of the version constraints for mysql. Let me try to put it back in. CI won't test it though. |
@AlexanderRichert-NOAA I have another suggestion. What about if we take |
Take it off the HPC systems? Yes that sounds lovely :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes in the listed package.py scripts seem okay. I noticed that the openmpi patch for apple-clang two level namespace has this addition:
+ @when("@5.0.0:5.0.1")
+ def autoreconf(self, spec, prefix):
+ perl = which("perl")
+ perl("autogen.pl", "--force")
+ if "+two_level_namespace" in spec and spec.satisfies("platform=darwin"):
+ print("Re-applying configure patch for two_level_namespace on MacOS after autoreconf")
+ filter_file(r"-flat_namespace", "-commons,use_dylibs", "configure")
+
which looks like re-applying the patch for two level namespace when autoreconf is run. This seem like a good thing for us to pick up. Just wanted to point that out.
Ok, then I'll do that. I leave the PR as is, and file a bug to redo the mysql dependency in the way I described above. Is that ok with you? |
Yep works for me! Thanks |
Yes, that is needed. As you can see from the code snippet, for openmpi@5: it currently enforces an |
@AlexanderRichert-NOAA See JCSDA/spack-stack#990 - if satisfied, please approve. Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Built unified-dev and ufs-weather-model-static on Gaea, everything checks out. Checked recipe diffs and everything looks reasonable.
Thanks @AlexanderRichert-NOAA and all other reviewers! |
Description
Pull in spack develop as of 2024/01/26 - needed for JEDI+GEOS development, and generally good to stay up to date. Every single package has changed because of the copyright date change (2013-2023 --> 2013-2024).
I would like the reviewers to specifically look at the following packages for which I had to resolve merge conflicts that weren't entirely trivial, or for which I needed to add more code (
nco
andopenmpi
).Issues
This is all part of compiling JEDI+GEOS with spack-stack (i.e. not using Baselibs) on more than just Discover: https://github.com/JCSDA-internal/AOP23/issues/33
Testing