Auto-Generation of Spack Packages from PyPI and Anaconda#2750
Auto-Generation of Spack Packages from PyPI and Anaconda#2750
Conversation
|
This should be integrated into |
Thanks, I'm glad to see you're interested in working on it! But... I'd like to see how far we can push good auto-generation before we worry about how it's integrated into the rest of Spack. A bigger question would be... how would #2709 need to change in order to support this functionality? I'd be happy to have a Another thing to consider is to create a separate repo in Spack for Python packages. It could have its own namespace, we could consider getting rid of the
Maybe we need to be more clear about what problem we're trying to address, and how we feel about the relative benefits of the solution. I agree, I don't like the long URLs. They are ugly to look at. But now that you point that out, I'm wondering why I've spent so much time on this issue: not having to look at ugly URLs is not worth very much. A bigger problem was how to find those URLs in the first place. That always seemed to be a challenge. Both #2718 and this proposal address that problem, but at different points in the process --- this proposal at package creation time, #2718 at package execution time. If I had to choose between the two, I'd lean toward this one: it takes complexity out of package execution, which is already complex enough. (I know, I originally proposed #2718; but now I'm wondering if doing it this way would be better). Beyond the problem of long/ugly/hard-to-find URLs, this PR proposes to address a bigger problem --- getting along with existing packaging systems. So far, we have no good solutions. If this works out, we will we get a bonanza of Python Spack packages. But we will also be able to apply the same ides to R, JavaScript, etc. The possible prize, and win for Spack, is much bigger than getting rid of ugly URLs. |
I think in #2281 we decided on using a
This is unrelated. We can continue this particular debate in #2094.
When was it a problem to find the URLs? Anyone can Google Yes, the ugly URL problem isn't that big of a deal. But when the only URL available contains a hash, things like The way I see it, #2718 is important for fetching and finding different versions of packages hosted on PyPi. Your proposal is important for making it easier to create new packages by autofilling things like homepage, description, and dependencies. Both are important, but one does not replace the other. They are orthogonal. |
We did, but this is a different question. In #2281, we were looking at how to adjust URLs, and assuming that packages were (essentially) hand-built. Now we're considering auto-generated packages. Auto-generated code frequently looks different from hand-built code, and has different needs. It's entirely reasonable to considering maybe having a base class that supports those needs. Then again, maybe we don't need a new base class for auto-generated code.
I disagree. It's reasonable to consider keeping auto-generated packages separate from hand-built packages. It depends on the degree of auto-generation that we achieve.
Would moving to a more automated approach would make such things obsolete? What if you could just run
This PR could also be used to update existing packages, bringing more automation all parts of the process. |
All (or most) packages in Spack were auto-generated by
|
|
The general idea is that Spack would create AND MANAGE the entire package,
other than "extra" stuff (custom install() method, setup_xxx_environment(),
variants, etc). Even after a package has been created and edited, Spack
would be able to read that package back, edit it, and write it out again.
There would be no more manual updating of versions, hashes or URL.
The easiest way to do this is have a line in the file --- stuff above the
line, Spack owns. Stuff below the line, Spack maintainers can edit. The
hope is that for most Python packages, there would be nothing below the
line.
The new namespace would be for packages that are handled automatically in
this way.
If this technology works out well, we could also apply it back to the rest
of Spack, allowing us to more automagically maintain new package versions.
As you mentioned, the list of dependencies isn't as robust as you would
like.
I suspect the Anaconda dependencies are pretty robust.
I wouldn't want anything added to Spack that wasn't tested and vetted to
make sure the installation works. As you mentioned, the list of
dependencies isn't as robust as you would like.
I agree. But suppose I want to install A, which had 10 dependencies, 3 of
them in Spack. With recursive generation (and updating), one command would
get Spack to generate 8 packages, and possibly update 3 with new versions
(that might be required by the 8 packages I just generated). The result
would have to be tested --- which I would do when I now try to build. And
once it works for me, I submit back to Spack.
My experience with Python packages is that many of them "just work." So
with a relatively high degree of "just workedness," someone could add a lot
of packages to Spack without a whole lot of manual intervention.
…On Thu, Jan 5, 2017 at 12:17 PM, Adam J. Stewart ***@***.***> wrote:
It's reasonable to consider keeping auto-generated packages separate from
hand-built packages. It depends on the degree of auto-generation that we
achieve.
All (or most) packages in Spack were auto-generated by spack create. Your
suggestion is just to make auto-generation better. I wouldn't want anything
added to Spack that wasn't tested and vetted to make sure the installation
works. As you mentioned, the list of dependencies isn't as robust as you
would like.
spack recreate sounds an awful lot like spack create --force.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#2750 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AB1cd_qusyB4F_tbN6NfCkGvUsaSRznhks5rPSWqgaJpZM4Lb3-Z>
.
|
|
This PR has been stale for almost 3 years and it is in a very early stage of discussion. Since Spack is now extendable with custom commands I would be for closing the PR and perfectioning any attempt of doing what's proposed here in a custom command. Waiting for a while to see if there are objections before closing though. |
|
Since there were no objections I'm closing this. Feel free to reopen if you want to continue working on it. |
Continuation of #2749. Note that this this branch is on the main Git repo (not a fork), to encourage collaboration.