graphviz: Tame Language Bindings (#1089)
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`.
This commit is contained in:
parent
1de2c53935
commit
7180613218
1 changed files with 79 additions and 18 deletions
|
@ -29,33 +29,94 @@
|
||||||
|
|
||||||
class Graphviz(AutotoolsPackage):
|
class Graphviz(AutotoolsPackage):
|
||||||
"""Graph Visualization Software"""
|
"""Graph Visualization Software"""
|
||||||
homepage = "http://www.graphviz.org"
|
homepage = 'http://www.graphviz.org'
|
||||||
url = "http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.38.0.tar.gz"
|
url = 'http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.38.0.tar.gz'
|
||||||
|
|
||||||
version('2.38.0', '5b6a829b2ac94efcd5fa3c223ed6d3ae')
|
version('2.38.0', '5b6a829b2ac94efcd5fa3c223ed6d3ae')
|
||||||
|
|
||||||
# By default disable optional Perl language support to prevent build issues
|
# We try to leave language bindings enabled if they don't cause
|
||||||
# related to missing Perl packages. If spack begins support for Perl in the
|
# build issues or add dependencies.
|
||||||
# future, this package can be updated to depend_on('perl') and the
|
variant('swig', default=False,
|
||||||
# ncecessary devel packages.
|
description='Enable for optional swig language bindings'
|
||||||
variant(
|
' (not yet functional)')
|
||||||
'perl', default=False,
|
variant('sharp', default=False,
|
||||||
description='Enable if you need the optional Perl language bindings.')
|
description='Enable for optional sharp language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('go', default=False,
|
||||||
|
description='Enable for optional go language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('guile', default=False,
|
||||||
|
description='Enable for optional guile language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('io', default=False,
|
||||||
|
description='Enable for optional io language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('java', default=False, # Spack has no Java support
|
||||||
|
description='Enable for optional java language bindings')
|
||||||
|
variant('lua', default=False,
|
||||||
|
description='Enable for optional lua language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('ocaml', default=False,
|
||||||
|
description='Enable for optional ocaml language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('perl', default=False, # Spack has no Perl support
|
||||||
|
description='Enable for optional perl language bindings')
|
||||||
|
variant('php', default=False,
|
||||||
|
description='Enable for optional php language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('python', default=False, # Build issues with Python 2/3
|
||||||
|
description='Enable for optional python language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('r', default=False,
|
||||||
|
description='Enable for optional r language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('ruby', default=False,
|
||||||
|
description='Enable for optional ruby language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
variant('tcl', default=False,
|
||||||
|
description='Enable for optional tcl language bindings'
|
||||||
|
' (not yet functional)')
|
||||||
|
|
||||||
parallel = False
|
parallel = False
|
||||||
|
|
||||||
depends_on("swig")
|
depends_on('swig', when='+swig')
|
||||||
depends_on("python")
|
depends_on('ghostscript')
|
||||||
depends_on("ghostscript")
|
depends_on('freetype')
|
||||||
depends_on("freetype")
|
depends_on('expat')
|
||||||
depends_on("expat")
|
depends_on('libtool')
|
||||||
depends_on("libtool")
|
depends_on('pkg-config', type='build')
|
||||||
depends_on("pkg-config", type='build')
|
|
||||||
|
depends_on('jdk', when='+java')
|
||||||
|
depends_on('python@2:2.8', when='+python')
|
||||||
|
|
||||||
def configure_args(self):
|
def configure_args(self):
|
||||||
options = []
|
options = []
|
||||||
if '+perl' not in self.spec:
|
|
||||||
options.append('--disable-perl')
|
# These language bindings have been tested, we know they work.
|
||||||
|
tested_bindings = ('+java', '+perl')
|
||||||
|
|
||||||
|
# These language bindings have not yet been tested. They
|
||||||
|
# likely need additional dependencies to get working.
|
||||||
|
untested_bindings = (
|
||||||
|
'+swig', '+sharp', '+go', '+guile', '+io',
|
||||||
|
'+lua', '+ocaml', '+php',
|
||||||
|
'+python', '+r', '+ruby', '+tcl')
|
||||||
|
|
||||||
|
for var in untested_bindings:
|
||||||
|
if var in spec:
|
||||||
|
raise SpackException(
|
||||||
|
"The variant {0} for language bindings has not been "
|
||||||
|
"tested. It might or might not work. To try it "
|
||||||
|
"out, run `spack edit graphviz`, and then move '{0}' "
|
||||||
|
"from the `untested_bindings` list to the "
|
||||||
|
"`tested_bindings` list. Be prepared to add "
|
||||||
|
"required dependencies. "
|
||||||
|
"Please then submit a pull request to "
|
||||||
|
"http://github.com/llnl/spack")
|
||||||
|
|
||||||
|
for var in tested_bindings:
|
||||||
|
enable = 'enable' if (var in spec) else 'disable'
|
||||||
|
options.append('--%s-%s' % (enable, var[1:]))
|
||||||
|
|
||||||
# On OSX fix the compiler error:
|
# On OSX fix the compiler error:
|
||||||
# In file included from tkStubLib.c:15:
|
# In file included from tkStubLib.c:15:
|
||||||
|
|
Loading…
Reference in a new issue