graphviz: Tame Language Bindings#1089
Conversation
|
The latest commit has the obvious advantage of allowing users to enable/disable all language bindings supported by Graphviz (although the Perl and Java bindings might not build on your system, since Spack doesn't yet build Perl and Java). More importantly, it changes the default behavior to minimize the number of dependencies required by graphviz. 99% of Spack users install Graphviz as a dependency for doxygen, which is a (soon-to-be) build dependency for some projects. Language bindings are completely unnecessary --- but they can cause conflicts, for example, with higher-level projects that use Python3. They also cause unnecessary build time for the common case where users just want doxygen. Users who need language bindings can enable them. (Note: language bindings that do not seem to add dependencies were left at their default value). |
|
It seems like the old URL is back up now. |
Do we have a policy on that? Fedora would seem to be a good place to grab tarballs from. |
|
OK, I moved back to the "regular" download location. @tgamblin this should be ready to merge. |
dcc38cd to
645def9
Compare
|
I rebased, should be ready to work. run-flake8 isn't doing it for me locally... |
| variant('ocaml', default=True, | ||
| description='Enable for optional ocaml language bindings.') | ||
| variant('perl', default=False, # Spack has no Perl support | ||
| description='Enable for optional perl language bindings.') |
There was a problem hiding this comment.
Spack does have Perl support now :)
OK... but I'm wondering what to do about this. Questions:
Your thoughts? By far On Wed, Oct 5, 2016 at 1:18 PM, Adam J. Stewart [email protected]
|
|
I agree that we want as few dependencies as are actually required. Any idea what the defaults are for the configure script or in the documentation? That's what I usually go by. If it doesn't specify and none of them are needed for |
|
Default configure options for graphviz are below. If something is enabled, there are three ways the configure script MIGHT work:
My guess is that the bindings here are a mixture of (1) and (2). But from a Spack point of view, I don't think it makes much sense to install language bindings without the language being avaialble. And if we try to do that, we risk having the configure script pick up random other go/sharp/python/etc. installations kicking around the system; time bomb for later. I'm leaning toward turning them all off by default. If users want a binding, they have to turn it on. That at least is simple and predictable. |
|
Flake8 has some complaints too. Your variant descriptions need to be indented by 4 more spaces, and there's two blank lines in a row. |
|
I'll fix the flake8 stuff once we know we like the rest of the PR... As I said before... I'm leaning toward disabling all language bindings by On Wed, Oct 5, 2016 at 1:59 PM, Adam J. Stewart [email protected]
|
|
@citibeth: I like that. When I install just graphviz I basically expect |
|
I don't know why I deleted my branch. Anyay, this PR is now reopened. It should be merged, IMHO. |
|
I don't know why this is closed; reopening. |
…ing. graphviz: Disable java because Spack does not yet support Java, and the system might not have it installed. Update package.py PEP8 graphviz: Added all language binding variants; disabled enough in the default configuration to avoid dependencies. Removed alternate download location (turned into comments).
645def9 to
ea9a48f
Compare
|
OK this looks about ready... @healther would you be able to give it a try? I copied over the |
|
JDK is always a run dependency. It can sometimes be a build dependency as well if the configure script searches for Java before building. But it's never a link dependency as far as I know. |
|
A Java compiler is almost certainly needed to create these bindings (since
Java code is generally compiled to `.jar.` files).
So probably ('build', 'run').
…On Thu, Feb 9, 2017 at 11:27 PM, Adam J. Stewart ***@***.***> wrote:
JDK is always a run dependency. It can sometimes be a build dependency as
well if the configure script searches for Java before building. But it's
never a link dependency as far as I know.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
<#1089 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AB1cd349VzPtRHsYnbrorRbjJxWNWww2ks5ra-cagaJpZM4I7U5D>
.
|
| variant('ruby', default=False, | ||
| description='Enable for optional ruby language bindings.') | ||
| variant('tcl', default=False, | ||
| description='Enable for optional tcl language bindings.') |
There was a problem hiding this comment.
How many of these variants actually build? It seems like a lot of them are missing dependencies. Can you try enabling all of them and see if you can build it?
Not sure. I agree, there are probably some missing dependencies.
Sorry, I don't have the time for that. We can either:
I vote for (1), as it is the least effort. And it leaves the package at least as well-off as it was before: when people need a new binding, they can just add the dependency they need, rather than figuring out the configure flags, adding a variant, etc. --- in a possibly non-standard way. Maybe should I add a comment explaining this? It would be nice to explain which language bindings DO work. I can't verify that any of them work. But if others can vouch for one or more bindings, we can add that info to the package. Whether or not we identify which variants don't work, I would like to leave all variants in there --- either as non-functional variants; or, the package would give an error if you try to use them. That way, as people enable language bindings in the future, we don't end up changing hashes. |
|
I vote for (2). If I run |
|
OK, how does this look? It checks the language bindings you've asked for, and raises an exception if that binding is not yet known to work. I want to keep all the variants in there to avoid endless annoying changes of hashes as people enable language bindings in the future. |
|
My thinking was.... before this PR, |
graphviz: * Download from Fedora projet, as main graphviz site not working. * Disable java because Spack does not yet support Java, and the system might not have it installed. * Added all language binding variants; disabled enough in the default configuration to avoid dependencies. * Removed alternate download location (turned into comments). * Turn off all language bindings by default. * Raise an exception on bindings that have not been verified to work. * Added text indicating what works and doesn't work when user runs `spack info`.
graphviz: * Download from Fedora projet, as main graphviz site not working. * Disable java because Spack does not yet support Java, and the system might not have it installed. * Added all language binding variants; disabled enough in the default configuration to avoid dependencies. * Removed alternate download location (turned into comments). * Turn off all language bindings by default. * Raise an exception on bindings that have not been verified to work. * Added text indicating what works and doesn't work when user runs `spack info`.
graphviz: * Download from Fedora projet, as main graphviz site not working. * Disable java because Spack does not yet support Java, and the system might not have it installed. * Added all language binding variants; disabled enough in the default configuration to avoid dependencies. * Removed alternate download location (turned into comments). * Turn off all language bindings by default. * Raise an exception on bindings that have not been verified to work. * Added text indicating what works and doesn't work when user runs `spack info`.
graphviz: * Download from Fedora projet, as main graphviz site not working. * Disable java because Spack does not yet support Java, and the system might not have it installed. * Added all language binding variants; disabled enough in the default configuration to avoid dependencies. * Removed alternate download location (turned into comments). * Turn off all language bindings by default. * Raise an exception on bindings that have not been verified to work. * Added text indicating what works and doesn't work when user runs `spack info`.
The main site graphviz.org was down, and I needed to install stuff. So I modified the package to download the same tarball from a more reliable Fedora. The checksum hasn't changed, so we know this is the same.