From c82985cb5e280981a1064855f1577c9a22ac5700 Mon Sep 17 00:00:00 2001 From: Joseph Ciurej Date: Fri, 28 Oct 2016 17:59:21 -0700 Subject: Update and Clean Up the Visit and VTK Packages (#2167) * Made some refactoring improvements to the 'visit' and 'vtk' packages. * Added a small fix for the 'vtk' package when building with 'qt+webkit'. --- var/spack/repos/builtin/packages/visit/package.py | 42 ++++++----- var/spack/repos/builtin/packages/vtk/package.py | 89 ++++++++++++----------- 2 files changed, 69 insertions(+), 62 deletions(-) diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index 5d2ab24cc5..ba1224daee 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -35,28 +35,30 @@ class Visit(Package): version('2.10.2', '253de0837a9d69fb689befc98ea4d068') version('2.10.1', '3cbca162fdb0249f17c4456605c4211e') - depends_on("vtk@6.1.0~opengl2") - depends_on("qt@4.8.6") - depends_on("python") - depends_on("silo+shared") - depends_on("hdf5~mpi") + depends_on('cmake', type='build') + depends_on('vtk@6.1.0~opengl2') + depends_on('qt@4.8.6') + depends_on('python') + depends_on('silo+shared') + depends_on('hdf5~mpi') def install(self, spec, prefix): - with working_dir('spack-build', create=True): - - feature_args = std_cmake_args[:] - feature_args.extend([ - "-DVTK_MAJOR_VERSION=6", - "-DVTK_MINOR_VERSION=1", - "-DVISIT_USE_GLEW=OFF", - "-DVISIT_LOC_QMAKE_EXE:FILEPATH=%s/qmake-qt4" % spec[ - 'qt'].prefix.bin, - "-DPYTHON_EXECUTABLE:FILEPATH=%s/python" % spec[ - 'python'].prefix.bin, - "-DVISIT_SILO_DIR:PATH=%s" % spec['silo'].prefix, - "-DVISIT_HDF5_DIR:PATH=%s" % spec['hdf5'].prefix]) + qt_bin = spec['qt'].prefix.bin + python_bin = spec['python'].prefix.bin - cmake('../src', *feature_args) + with working_dir('spack-build', create=True): + cmake_args = std_cmake_args[:] + cmake_args.extend([ + '-DVTK_MAJOR_VERSION=6', + '-DVTK_MINOR_VERSION=1', + '-DVISIT_USE_GLEW=OFF', + '-DVISIT_LOC_QMAKE_EXE:FILEPATH={0}/qmake-qt4'.format(qt_bin), + '-DPYTHON_EXECUTABLE:FILEPATH={0}/python'.format(python_bin), + '-DVISIT_SILO_DIR:PATH={0}'.format(spec['silo'].prefix), + '-DVISIT_HDF5_DIR:PATH={0}'.format(spec['hdf5'].prefix), + '-DVISIT_VTK_DIR:PATH={0}'.format(spec['vtk'].prefix), + ]) + cmake(join_path('..', 'src'), *cmake_args) make() - make("install") + make('install') diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index fe3ebc9536..c2d5ff399f 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -22,6 +22,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## + from spack import * @@ -29,66 +30,70 @@ class Vtk(Package): """The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. """ + homepage = "http://www.vtk.org" - url = "http://www.vtk.org/files/release/6.1/VTK-6.1.0.tar.gz" + base_url = "http://www.vtk.org/files/release" - version("7.0.0", "5fe35312db5fb2341139b8e4955c367d", - url="http://www.vtk.org/files/release/7.0/VTK-7.0.0.tar.gz") + version('7.0.0', '5fe35312db5fb2341139b8e4955c367d') + version('6.3.0', '0231ca4840408e9dd60af48b314c5b6d') + version('6.1.0', '25e4dfb3bad778722dcaec80cd5dab7d') - version("6.3.0", '0231ca4840408e9dd60af48b314c5b6d', - url="http://www.vtk.org/files/release/6.3/VTK-6.3.0.tar.gz") + # VTK7 defaults to OpenGL2 rendering backend + variant('opengl2', default=True, description='Build with OpenGL2 instead of OpenGL as rendering backend') + variant('python', default=False, description='Build the python modules') - version('6.1.0', '25e4dfb3bad778722dcaec80cd5dab7d') + patch('gcc.patch') - patch("gcc.patch") + depends_on('cmake', type='build') + depends_on('qt') extends('python', when='+python') depends_on('python', when='+python') - depends_on('cmake', type='build') - depends_on("qt") - # VTK7 defaults to OpenGL2 rendering backend - variant('opengl2', default=True, - description='Build with OpenGL instead of OpenGL2 backend') - variant('python', default=False, - description='Build the python modules') + def url_for_version(self, ver): + return '{0}/{1}/VTK-{2}.tar.gz'.format(Vtk.base_url, ver.up_to(2), ver) def install(self, spec, prefix): def feature_to_bool(feature, on='ON', off='OFF'): - if feature in spec: - return on - return off + return on if '+{0}'.format(feature) in spec else off with working_dir('spack-build', create=True): - cmake_args = [ - "..", - "-DBUILD_SHARED_LIBS=ON", - "-DVTK_WRAP_PYTHON=" + ("ON" if "+python" in spec else "OFF"), - # Disable wrappers for other languages. - "-DVTK_WRAP_JAVA=OFF", - "-DVTK_WRAP_TCL=OFF"] - cmake_args.extend(std_cmake_args) + opengl_ver = 'OpenGL{0}'.format('2' if '+opengl2' in spec else '') + qt_ver = spec['qt'].version.up_to(1) + qt_bin = spec['qt'].prefix.bin - # Enable Qt support here. + cmake_args = std_cmake_args[:] cmake_args.extend([ - "-DQT_QMAKE_EXECUTABLE:PATH=%s/qmake" % spec['qt'].prefix.bin, - "-DVTK_Group_Qt:BOOL=ON", - # Ignore webkit because it's hard to build w/Qt - "-DVTK_Group_Qt=OFF", - "-DModule_vtkGUISupportQt:BOOL=ON", - "-DModule_vtkGUISupportQtOpenGL:BOOL=ON" - ]) + '-DBUILD_SHARED_LIBS=ON', + '-DVTK_RENDERING_BACKEND:STRING={0}'.format(opengl_ver), + + # Enable/Disable wrappers for Python. + '-DVTK_WRAP_PYTHON={0}'.format(feature_to_bool('python')), - if spec['qt'].satisfies('@5'): - cmake_args.append("-DVTK_QT_VERSION:STRING=5") + # Disable wrappers for other languages. + '-DVTK_WRAP_JAVA=OFF', + '-DVTK_WRAP_TCL=OFF', + + # Enable Qt support here. + '-DVTK_QT_VERSION:STRING={0}'.format(qt_ver), + '-DQT_QMAKE_EXECUTABLE:PATH={0}/qmake'.format(qt_bin), + '-DVTK_Group_Qt:BOOL=ON', + ]) - if spec.satisfies("@6.1.0"): - cmake_args.append("-DCMAKE_C_FLAGS=-DGLX_GLXEXT_LEGACY") - cmake_args.append("-DCMAKE_CXX_FLAGS=-DGLX_GLXEXT_LEGACY") + # NOTE: The following definitions are required in order to allow + # VTK to build with qt~webkit versions (see the documentation for + # more info: http://www.vtk.org/Wiki/VTK/Tutorials/QtSetup). + if '~webkit' in spec['qt']: + cmake_args.extend([ + '-DVTK_Group_Qt:BOOL=OFF', + '-DModule_vtkGUISupportQt:BOOL=ON', + '-DModule_vtkGUISupportQtOpenGL:BOOL=ON', + ]) - cmake_args.append('-DVTK_RENDERING_BACKEND:STRING=%s' % - feature_to_bool('+opengl2', 'OpenGL2', 'OpenGL')) + if spec.satisfies('@:6.1.0'): + cmake_args.append('-DCMAKE_C_FLAGS=-DGLX_GLXEXT_LEGACY') + cmake_args.append('-DCMAKE_CXX_FLAGS=-DGLX_GLXEXT_LEGACY') - cmake(*cmake_args) + cmake('..', *cmake_args) make() - make("install") + make('install') -- cgit v1.2.3-70-g09d2