Conversation
|
Can someone please help decipher the codecov errors? I think it's saying it wants tests for (I would want to add such tests after some positive feedback on this PR). |
|
I like the idea and I would certainly use this. I think by definition such packages should never be submitted upstream to Spack. Thereby this means that they either need to be in user's fork -- this would require extra Git skills and may not be appropriate for all users; or such packages should be placed into custom Repositories to be added in |
|
p.s. However |
| self._fetcher = None | ||
| self.url = getattr(self.__class__, 'url', None) | ||
|
|
||
| # Fix up self.url if this package fetches with a URLFetchStrategy. |
There was a problem hiding this comment.
i suppose this is the only change that is not directly related to the PR.
|
@citibeth if others also like the idea, would you mind adding a bit of documentation somewhere? |
I understand the reasoning; but we need to be mindful of user convenience as well. Consider, for example, the case in #3049. Would @bvanessen be inconvenienced if (for example) project-level bundle packages for LBANN were not allowed into core Spack? That would certainly add more steps for LBANN users. It's easy to think of cases where we add (say) 10 packages, and then one top-level package controlling them all. |
|
I'd be happy to put project-level packages in a separate namespace that is built into Spack and turned on by default. That is essentially what the |
fair point. I am fine with |
|
@citibeth: thanks for the awesome feature. I will do a more thorough review later (currently at the OSLS in Tahoe), but I definitely want to get this into Spack. RE: some of the points above:
|
|
If we're using this to install "suites" of software, do you think it makes sense for Should I be left with a clean slate? Seems like uninstalling a bundle package like X11 should try to uninstall all the dependencies. Then again, maybe we should rely on explicit/non-explicit packages to do this, and auto-remove unneeded implicit dependencies on |
|
I like the idea to have a package that define a quite detailed installation recipe. |
I like that idea. But this still begs the question of where these constraints should be put. I still think we should have a policy against forwarding variants in the "plain vanilla" packages. Otherwise, it will be too random, with no good way to manage the process.
Yes. Although this is a topic I think needs more thought in the Environments WG. Yes I have lots of thoughts for another topic... |
|
@tgamblin @scheibelp @becker33 ping. |
1. Add source_path option to specify where the downloaded source is found. (Defaults to '.', previously hardcoded to '.') 2. Add missing `-j` option to match `spack install`
# Conflicts: # lib/spack/spack/__init__.py # lib/spack/spack/package.py
ff6a789 to
0c4edb4
Compare
TODO:
This provides an implementation for "clean" Bundle packages --- i.e. packages that don't install anything, but whose purpose is to depend on other packages. See example below.
Addresses #1926 #2049
@tgamblin @becker33
Notes from past conversation:
I don't like the name
MetaPackage, it sounds too much like "meta class," which is not a class. I thinkBundlePackageis less confusing.I would say some of both. This also addresses the issues in #3131. Although I've used Spack configuration scopes and
packages.yamlto good effect, I'm coming to believe that users aren't warming up to this way of working. I realized that we could get the same thing with packages, thereby foisting fewer abstractions on our users. (There are some subtle differences in semantics of putting version, variant, etc. directives inpackages.yamlvs. a Bundle Package. That discussion should happen in Spack Environments WG).How would I re-do #3049 with this PR in place... suppose you have A->B, and you want A and B's
+debugflag to be configured together. You can make aBundlePackagewe will callproj-A, something like this:This approach is quite flexible. It can set multiple forwarded variants, create its own project-level variants to control constellations of variants in the DAG, choose which packages get the
+debug(or whatever), etc. The examples I work with are significantly more complex than this one; I will try to see how they turn out using this approach to project management.If we decide to adopt this approach (part of a larger discussion on Spack Environments), then we will be better able to ask users to remove variant forwarding, site-specific stuff, etc. from their main packages -- and put it in project-level packages like the one above. The hope is that users will be more willing to do this than the current state of affairs, where there seems to be resistance to putting stuff in
packages.yaml.