-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
mesa18: Added a legacy mesa package using the older autotools build #11553
Conversation
Replaces #11543 |
I really don't understand this. We have It should (is) possible to create a single package that uses CMake for newer versions and Autotools for older versions. Can we do it that way? |
I agree this is confusing. The packages themselves are All of this is currently being done to workaround improper dependency resolution at concretization. |
More explanation of the above is required.
See #11468 for discussion on how you can create a |
Both
I'd love to. But that's not feasible. We're getting packages like vtk and paraview to drop python 2 and be python 3 only moving forward in all current and future versions but python 2 will still be there for older versions. I can try to combine the two into a single package and just inherit from the base |
Given how different the base Also the motivation for adding the |
Scratch that, |
Yes I think this is the best. And we need to figure out how to do it cleanly (see below), without creating multiple packages just because the build system changes. This issue will come up repeatedly as projects move away from Autotools, but AFAIK you're the first. So let's figure out a clean solution now.
Rather than mashing, the idea is to use (I believe) the Strategy Design Pattern: Your
This is just a sketch. But the idea is to have a "clean" |
I personally like @alalazo's suggestion in #11543 (comment). I think that's the easiest way to keep the old versions available but use the base classes Spack provides. |
On Wed, May 29, 2019 at 1:26 PM Chuck Atkins ***@***.***> wrote:
See #11468 <#11468> for discussion
on how you can create a python2 variant to hack around this problem.
Both mesa and mesa18 have some python build time requirement because of a
configure-time code generation step, which is really version agnostic, i.e.
works with 2 or 3. But the current mesa package builds with meson which
has a hard python 3 requirement, so there's no way to make a python 2
variant.
I'm not sure if you've understood what the `python2` variant is for. It's
to get around concretizer bugs, where you'd otherwise write something like:
```
depends_on('xyz', when='^python@2')
```
Instead, you require that if the user is doing a Python2 build that they
set the `all: python2` variant in the YAML files. Then you write instead:
```
depends_on('xyz', when='+python2')
```
Also note that Python2 will no longer be supported as of January 1 2020.
Are you able to simplify your life and move forward with a Python3-only
system?
I'd love to. But that's not feasible. We're getting packages like vtk and
paraview to drop python 2 and be python 3 only moving forward in all
current and future versions but python 2 will still be there for older
versions.
Can you just use an older version of Spack to build older versions of
Mesa? Most major Python pacakges will be Python3-only soon; there will be
no point in trying to build with newer versions of these packages, since
NONE of them will work with Python2.
|
@citibeth @adamjstewart A few thoughts I noted down on packages that might support multiple build-systems are at #10411 (comment) In my opinion it will be at another scale of complexity with respect to maintaining a legacy repository + it needs strong support from the concretizer. |
I get it. My point though was that it's not possible to make a
So spack as a repository will be no longer allowing packages to support python 2? Will all previous versions of a package that depend on python 2 need to be removed? I just don't see that as feasible. That's essentially the situation here. |
I'm in agreement here on this. Melding these two package files into one is beginning to look like it will result in something that, sure works, but is going to be extremely complex and quickly become unmaintainable by anyone not deeply familiar with the internal spack class structures. |
In the interest of pragmatism and getting numerous issues unstuck and resolved here, I'm going to abandon this PR and back out the updated meson-based mesa package and replace it with this autotools one. That will "make all right in the world again" with all the problems this has caused. When a better solution for how to handle build system migrations is figured out then I'll be happy to re-introduce the updated mesa package. Until then though I think the best solution for all the downstream packages depending on mesa is to do a build system roll back. |
Just abandoning python 2 support for existing packages isn't an option.
...except that one can always download and use older versions of Spack. If
you're using Python2, then newer versions of Spack will be of limited use
to you, because you won't be able to use newer versions of most Python
packages.
But we had a long phone discussion on the issue yesterday, and that's not
what's being planned. We will be creating a new `python3` branch that
prototypes package updates. The goal is things will use Python3 out of the
box; and there will be a well-documented way for users to build Python2
stuff. The `python3` branch will be tested for both, and beta testers will
be recruited. On January 1 2020, after much publicity, we will merge
`python3` into `develop`. At that point, people wishing to continue
building Python2 stacks will have to make a couple of small changes to
their YAML files; whereas Spack will become Python3 by default.
|
So... are you supporting the idea in #10411, or are you suggesting we settle on a legacy repository approach? I don't yet understand how legacy repos would work. |
Create a backwards compatible mesa package relying on the older autotools build to bypass the python 2/3 compatibility problems.