gplates: new package (#8336)
This also adds an older 1.x version to gdal that is required by gplates.
This commit is contained in:
		 Michael Kuhn
					Michael Kuhn
				
			
				
					committed by
					
						 Adam J. Stewart
						Adam J. Stewart
					
				
			
			
				
	
			
			
			 Adam J. Stewart
						Adam J. Stewart
					
				
			
						parent
						
							470d4ddd96
						
					
				
				
					commit
					04dce19155
				
			| @@ -41,9 +41,10 @@ class Gdal(AutotoolsPackage): | |||||||
|     list_url   = "http://download.osgeo.org/gdal/" |     list_url   = "http://download.osgeo.org/gdal/" | ||||||
|     list_depth = 1 |     list_depth = 1 | ||||||
|  |  | ||||||
|     version('2.3.0', '2fe9d64fcd9dc37645940df020d3e200') |     version('2.3.0',  '2fe9d64fcd9dc37645940df020d3e200') | ||||||
|     version('2.1.2', 'ae85b78888514c75e813d658cac9478e') |     version('2.1.2',  'ae85b78888514c75e813d658cac9478e') | ||||||
|     version('2.0.2', '940208e737c87d31a90eaae43d0efd65') |     version('2.0.2',  '940208e737c87d31a90eaae43d0efd65') | ||||||
|  |     version('1.11.5', '5fcee5622430fbeb25556a4d07c06dd7') | ||||||
|  |  | ||||||
|     variant('libtool',   default=True,  description='Use libtool to build the library') |     variant('libtool',   default=True,  description='Use libtool to build the library') | ||||||
|     variant('libz',      default=True,  description='Include libz support') |     variant('libz',      default=True,  description='Include libz support') | ||||||
| @@ -92,14 +93,15 @@ class Gdal(AutotoolsPackage): | |||||||
|     # Required dependencies |     # Required dependencies | ||||||
|     depends_on('libtiff@3.6.0:')  # 3.9.0+ needed to pass testsuite |     depends_on('libtiff@3.6.0:')  # 3.9.0+ needed to pass testsuite | ||||||
|     depends_on('libgeotiff@1.2.1:') |     depends_on('libgeotiff@1.2.1:') | ||||||
|     depends_on('json-c') |     depends_on('json-c', when='@2.3:') | ||||||
|  |     depends_on('json-c@0.12.1', when='@:2.2.99') | ||||||
|  |  | ||||||
|     # Optional dependencies |     # Optional dependencies | ||||||
|     depends_on('libtool', type='build', when='+libtool') |     depends_on('libtool', type='build', when='+libtool') | ||||||
|     depends_on('zlib', when='+libz') |     depends_on('zlib', when='+libz') | ||||||
|     depends_on('libiconv', when='+libiconv') |     depends_on('libiconv', when='+libiconv') | ||||||
|     depends_on('xz', when='+liblzma') |     depends_on('xz', when='+liblzma') | ||||||
|     depends_on('zstd', when='+zstd') |     depends_on('zstd', when='+zstd @2.3:') | ||||||
|     depends_on('postgresql', when='+pg') |     depends_on('postgresql', when='+pg') | ||||||
|     depends_on('cfitsio', when='+cfitsio') |     depends_on('cfitsio', when='+cfitsio') | ||||||
|     depends_on('libpng', when='+png') |     depends_on('libpng', when='+png') | ||||||
| @@ -108,7 +110,7 @@ class Gdal(AutotoolsPackage): | |||||||
|     depends_on('fyba', when='+sosi') |     depends_on('fyba', when='+sosi') | ||||||
|     depends_on('hdf', when='+hdf4') |     depends_on('hdf', when='+hdf4') | ||||||
|     depends_on('hdf5', when='+hdf5') |     depends_on('hdf5', when='+hdf5') | ||||||
|     depends_on('kealib', when='+kea') |     depends_on('kealib', when='+kea @2:') | ||||||
|     depends_on('netcdf', when='+netcdf') |     depends_on('netcdf', when='+netcdf') | ||||||
|     depends_on('jasper@1.900.1', patches=patch('uuid.patch'), when='+jasper') |     depends_on('jasper@1.900.1', patches=patch('uuid.patch'), when='+jasper') | ||||||
|     depends_on('openjpeg', when='+openjpeg') |     depends_on('openjpeg', when='+openjpeg') | ||||||
| @@ -120,16 +122,16 @@ class Gdal(AutotoolsPackage): | |||||||
|     depends_on('sqlite@3:', when='+sqlite3') |     depends_on('sqlite@3:', when='+sqlite3') | ||||||
|     depends_on('pcre', when='+pcre') |     depends_on('pcre', when='+pcre') | ||||||
|     depends_on('geos', when='+geos') |     depends_on('geos', when='+geos') | ||||||
|     depends_on('qhull', when='+qhull') |     depends_on('qhull', when='+qhull @2.1:') | ||||||
|     depends_on('opencl', when='+opencl') |     depends_on('opencl', when='+opencl') | ||||||
|     depends_on('poppler', when='+poppler') |     depends_on('poppler', when='+poppler') | ||||||
|     depends_on('proj', when='+proj') |     depends_on('proj', when='+proj @2.3:') | ||||||
|     depends_on('perl', type=('build', 'run'), when='+perl') |     depends_on('perl', type=('build', 'run'), when='+perl') | ||||||
|     depends_on('python', type=('build', 'run'), when='+python') |     depends_on('python', type=('build', 'run'), when='+python') | ||||||
|     depends_on('java', type=('build', 'run'), when='+java') |     depends_on('java', type=('build', 'run'), when='+java') | ||||||
|     depends_on('armadillo', when='+armadillo') |     depends_on('armadillo', when='+armadillo') | ||||||
|     depends_on('cryptopp', when='+cryptopp') |     depends_on('cryptopp', when='+cryptopp @2.1:') | ||||||
|     depends_on('openssl', when='+crypto') |     depends_on('openssl', when='+crypto @2.3:') | ||||||
|  |  | ||||||
|     # https://trac.osgeo.org/gdal/wiki/SWIG |     # https://trac.osgeo.org/gdal/wiki/SWIG | ||||||
|     depends_on('swig', type='build', when='+python') |     depends_on('swig', type='build', when='+python') | ||||||
| @@ -155,6 +157,45 @@ def configure_args(self): | |||||||
|             '--with-libjson-c={0}'.format(spec['json-c'].prefix), |             '--with-libjson-c={0}'.format(spec['json-c'].prefix), | ||||||
|         ] |         ] | ||||||
|  |  | ||||||
|  |         if spec.satisfies('@2.3:'): | ||||||
|  |             if '+zstd' in spec: | ||||||
|  |                 args.append('--with-zstd={0}'.format(spec['zstd'].prefix)) | ||||||
|  |             else: | ||||||
|  |                 args.append('--with-zstd=no') | ||||||
|  |  | ||||||
|  |             if '+proj' in spec: | ||||||
|  |                 args.append('--with-proj={0}'.format(spec['proj'].prefix)) | ||||||
|  |                 if spec.satisfies('^proj@5.0:5.999'): | ||||||
|  |                     args.append('--with-proj5-api=yes') | ||||||
|  |                 else: | ||||||
|  |                     args.append('--with-proj5-api=no') | ||||||
|  |             else: | ||||||
|  |                 args.append('--with-proj=no') | ||||||
|  |  | ||||||
|  |             if '+crypto' in spec: | ||||||
|  |                 args.append('--with-crypto={0}'.format(spec['openssl'].prefix)) | ||||||
|  |             else: | ||||||
|  |                 args.append('--with-crypto=no') | ||||||
|  |  | ||||||
|  |         if spec.satisfies('@2.1:'): | ||||||
|  |             if '+qhull' in spec: | ||||||
|  |                 args.append('--with-qhull=yes') | ||||||
|  |             else: | ||||||
|  |                 args.append('--with-qhull=no') | ||||||
|  |  | ||||||
|  |             if '+cryptopp' in spec: | ||||||
|  |                 args.append('--with-cryptopp={0}'.format( | ||||||
|  |                     spec['cryptopp'].prefix)) | ||||||
|  |             else: | ||||||
|  |                 args.append('--with-cryptopp=no') | ||||||
|  |  | ||||||
|  |         if spec.satisfies('@2:'): | ||||||
|  |             if '+kea' in spec: | ||||||
|  |                 args.append('--with-kea={0}'.format( | ||||||
|  |                     join_path(spec['kealib'].prefix.bin, 'kea-config'))) | ||||||
|  |             else: | ||||||
|  |                 args.append('--with-kea=no') | ||||||
|  |  | ||||||
|         # Optional dependencies |         # Optional dependencies | ||||||
|         if '+libtool' in spec: |         if '+libtool' in spec: | ||||||
|             args.append('--with-libtool=yes') |             args.append('--with-libtool=yes') | ||||||
| @@ -177,11 +218,6 @@ def configure_args(self): | |||||||
|         else: |         else: | ||||||
|             args.append('--with-liblzma=no') |             args.append('--with-liblzma=no') | ||||||
|  |  | ||||||
|         if '+zstd' in spec: |  | ||||||
|             args.append('--with-zstd={0}'.format(spec['zstd'].prefix)) |  | ||||||
|         else: |  | ||||||
|             args.append('--with-zstd=no') |  | ||||||
|  |  | ||||||
|         if '+pg' in spec: |         if '+pg' in spec: | ||||||
|             args.append('--with-pg={0}'.format( |             args.append('--with-pg={0}'.format( | ||||||
|                 spec['postgresql'].prefix.bin.pg_config)) |                 spec['postgresql'].prefix.bin.pg_config)) | ||||||
| @@ -225,12 +261,6 @@ def configure_args(self): | |||||||
|         else: |         else: | ||||||
|             args.append('--with-hdf5=no') |             args.append('--with-hdf5=no') | ||||||
|  |  | ||||||
|         if '+kea' in spec: |  | ||||||
|             args.append('--with-kea={0}'.format( |  | ||||||
|                 join_path(spec['kealib'].prefix.bin, 'kea-config'))) |  | ||||||
|         else: |  | ||||||
|             args.append('--with-kea=no') |  | ||||||
|  |  | ||||||
|         # https://trac.osgeo.org/gdal/wiki/NetCDF |         # https://trac.osgeo.org/gdal/wiki/NetCDF | ||||||
|         if '+netcdf' in spec: |         if '+netcdf' in spec: | ||||||
|             args.append('--with-netcdf={0}'.format(spec['netcdf'].prefix)) |             args.append('--with-netcdf={0}'.format(spec['netcdf'].prefix)) | ||||||
| @@ -293,11 +323,6 @@ def configure_args(self): | |||||||
|         else: |         else: | ||||||
|             args.append('--with-geos=no') |             args.append('--with-geos=no') | ||||||
|  |  | ||||||
|         if '+qhull' in spec: |  | ||||||
|             args.append('--with-qhull=yes') |  | ||||||
|         else: |  | ||||||
|             args.append('--with-qhull=no') |  | ||||||
|  |  | ||||||
|         if '+opencl' in spec: |         if '+opencl' in spec: | ||||||
|             args.append('--with-opencl={0}'.format(spec['opencl'].prefix)) |             args.append('--with-opencl={0}'.format(spec['opencl'].prefix)) | ||||||
|         else: |         else: | ||||||
| @@ -308,15 +333,6 @@ def configure_args(self): | |||||||
|         else: |         else: | ||||||
|             args.append('--with-poppler=no') |             args.append('--with-poppler=no') | ||||||
|  |  | ||||||
|         if '+proj' in spec: |  | ||||||
|             args.append('--with-proj={0}'.format(spec['proj'].prefix)) |  | ||||||
|             if spec.satisfies('^proj@5.0:5.999'): |  | ||||||
|                 args.append('--with-proj5-api=yes') |  | ||||||
|             else: |  | ||||||
|                 args.append('--with-proj5-api=no') |  | ||||||
|         else: |  | ||||||
|             args.append('--with-proj=no') |  | ||||||
|  |  | ||||||
|         if '+perl' in spec: |         if '+perl' in spec: | ||||||
|             args.append('--with-perl=yes') |             args.append('--with-perl=yes') | ||||||
|         else: |         else: | ||||||
| @@ -339,16 +355,6 @@ def configure_args(self): | |||||||
|         else: |         else: | ||||||
|             args.append('--with-armadillo=no') |             args.append('--with-armadillo=no') | ||||||
|  |  | ||||||
|         if '+cryptopp' in spec: |  | ||||||
|             args.append('--with-cryptopp={0}'.format(spec['cryptopp'].prefix)) |  | ||||||
|         else: |  | ||||||
|             args.append('--with-cryptopp=no') |  | ||||||
|  |  | ||||||
|         if '+crypto' in spec: |  | ||||||
|             args.append('--with-crypto={0}'.format(spec['openssl'].prefix)) |  | ||||||
|         else: |  | ||||||
|             args.append('--with-crypto=no') |  | ||||||
|  |  | ||||||
|         # TODO: add packages for these dependencies |         # TODO: add packages for these dependencies | ||||||
|         args.extend([ |         args.extend([ | ||||||
|             # https://trac.osgeo.org/gdal/wiki/GRASS |             # https://trac.osgeo.org/gdal/wiki/GRASS | ||||||
| @@ -360,7 +366,6 @@ def configure_args(self): | |||||||
|             '--with-pcidsk=no', |             '--with-pcidsk=no', | ||||||
|             '--with-ogdi=no', |             '--with-ogdi=no', | ||||||
|             '--with-fme=no', |             '--with-fme=no', | ||||||
|             '--with-mongocxx=no', |  | ||||||
|             # https://trac.osgeo.org/gdal/wiki/FileGDB |             # https://trac.osgeo.org/gdal/wiki/FileGDB | ||||||
|             '--with-fgdb=no', |             '--with-fgdb=no', | ||||||
|             # https://trac.osgeo.org/gdal/wiki/ECW |             # https://trac.osgeo.org/gdal/wiki/ECW | ||||||
| @@ -371,14 +376,12 @@ def configure_args(self): | |||||||
|             '--with-mrsid=no', |             '--with-mrsid=no', | ||||||
|             '--with-jp2mrsid=no', |             '--with-jp2mrsid=no', | ||||||
|             '--with-mrsid_lidar=no', |             '--with-mrsid_lidar=no', | ||||||
|             '--with-jp2lura=no', |  | ||||||
|             # https://trac.osgeo.org/gdal/wiki/MSG |             # https://trac.osgeo.org/gdal/wiki/MSG | ||||||
|             '--with-msg=no', |             '--with-msg=no', | ||||||
|             '--with-bsb=no', |             '--with-bsb=no', | ||||||
|             # https://trac.osgeo.org/gdal/wiki/Oracle |             # https://trac.osgeo.org/gdal/wiki/Oracle | ||||||
|             '--with-oci=no', |             '--with-oci=no', | ||||||
|             '--with-grib=no', |             '--with-grib=no', | ||||||
|             '--with-gnm=no', |  | ||||||
|             '--with-mysql=no', |             '--with-mysql=no', | ||||||
|             # https://trac.osgeo.org/gdal/wiki/Ingres |             # https://trac.osgeo.org/gdal/wiki/Ingres | ||||||
|             '--with-ingres=no', |             '--with-ingres=no', | ||||||
| @@ -386,27 +389,40 @@ def configure_args(self): | |||||||
|             '--with-libkml=no', |             '--with-libkml=no', | ||||||
|             '--with-dods-root=no', |             '--with-dods-root=no', | ||||||
|             '--with-spatialite=no', |             '--with-spatialite=no', | ||||||
|             '--with-rasterlite2=no', |  | ||||||
|             # https://trac.osgeo.org/gdal/wiki/DxfDwg |  | ||||||
|             '--with-teigha=no', |  | ||||||
|             '--with-idb=no', |             '--with-idb=no', | ||||||
|             # https://trac.osgeo.org/gdal/wiki/ArcSDE |             # https://trac.osgeo.org/gdal/wiki/ArcSDE | ||||||
|             '--with-sde=no', |             '--with-sde=no', | ||||||
|             # https://trac.osgeo.org/gdal/wiki/Epsilon |             # https://trac.osgeo.org/gdal/wiki/Epsilon | ||||||
|             '--with-epsilon=no', |             '--with-epsilon=no', | ||||||
|             '--with-webp=no', |             '--with-webp=no', | ||||||
|             '--with-sfcgal=no', |  | ||||||
|             '--with-freexl=no', |             '--with-freexl=no', | ||||||
|             '--with-pam=no', |             '--with-pam=no', | ||||||
|             '--with-podofo=no', |             '--with-podofo=no', | ||||||
|             '--with-pdfium=no', |  | ||||||
|             '--with-php=no', |             '--with-php=no', | ||||||
|             # https://trac.osgeo.org/gdal/wiki/mdbtools |             # https://trac.osgeo.org/gdal/wiki/mdbtools | ||||||
|             '--with-mdb=no', |             '--with-mdb=no', | ||||||
|             '--with-rasdaman=no', |             '--with-rasdaman=no', | ||||||
|             '--with-mrf=no', |  | ||||||
|         ]) |         ]) | ||||||
|  |  | ||||||
|  |         # TODO: add packages for these dependencies (only for 2.3 and newer) | ||||||
|  |         if spec.satisfies('@2.3:'): | ||||||
|  |             args.extend([ | ||||||
|  |                 '--with-jp2lura=no', | ||||||
|  |                 '--with-rasterlite2=no', | ||||||
|  |                 # https://trac.osgeo.org/gdal/wiki/DxfDwg | ||||||
|  |                 '--with-teigha=no', | ||||||
|  |                 '--with-sfcgal=no', | ||||||
|  |                 '--with-mrf=no', | ||||||
|  |             ]) | ||||||
|  |  | ||||||
|  |         # TODO: add packages for these dependencies (only for 2.1 and newer) | ||||||
|  |         if spec.satisfies('@2.1:'): | ||||||
|  |             args.extend([ | ||||||
|  |                 '--with-mongocxx=no', | ||||||
|  |                 '--with-gnm=no', | ||||||
|  |                 '--with-pdfium=no', | ||||||
|  |             ]) | ||||||
|  |  | ||||||
|         return args |         return args | ||||||
|  |  | ||||||
|     @run_after('install') |     @run_after('install') | ||||||
|   | |||||||
							
								
								
									
										77
									
								
								var/spack/repos/builtin/packages/gplates/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								var/spack/repos/builtin/packages/gplates/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | |||||||
|  | ############################################################################## | ||||||
|  | # Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC. | ||||||
|  | # Produced at the Lawrence Livermore National Laboratory. | ||||||
|  | # | ||||||
|  | # This file is part of Spack. | ||||||
|  | # Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. | ||||||
|  | # LLNL-CODE-647188 | ||||||
|  | # | ||||||
|  | # For details, see https://github.com/spack/spack | ||||||
|  | # Please also see the NOTICE and LICENSE files for our notice and the LGPL. | ||||||
|  | # | ||||||
|  | # This program is free software; you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU Lesser General Public License (as | ||||||
|  | # published by the Free Software Foundation) version 2.1, February 1999. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, but | ||||||
|  | # WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and | ||||||
|  | # conditions of the GNU Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General Public | ||||||
|  | # 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 * | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Gplates(CMakePackage): | ||||||
|  |     """GPlates is desktop software for the interactive visualisation of | ||||||
|  |     plate-tectonics. GPlates offers a novel combination of interactive | ||||||
|  |     plate-tectonic reconstructions, geographic information system (GIS) | ||||||
|  |     functionality and raster data visualisation. GPlates enables both the | ||||||
|  |     visualisation and the manipulation of plate-tectonic reconstructions | ||||||
|  |     and associated data through geological time.""" | ||||||
|  |  | ||||||
|  |     homepage = 'https://www.gplates.org' | ||||||
|  |     url      = 'https://sourceforge.net/projects/gplates/files/gplates/2.0/gplates-2.0.0-unixsrc.tar.bz2/download' | ||||||
|  |  | ||||||
|  |     version('2.0.0', '9e95874b35a01f4c9bff5845a1621ad5') | ||||||
|  |  | ||||||
|  |     depends_on('cmake@2.6.2:', type='build') | ||||||
|  |     # Qt 5 does not support (at least) the Q_WS_* constants. | ||||||
|  |     depends_on('qt+opengl@4.4.0:4.99') | ||||||
|  |     depends_on('qwt@6.0.1:') | ||||||
|  |     depends_on('mesa-glu') | ||||||
|  |     depends_on('glew') | ||||||
|  |     # GDAL's OGRSFDriverRegistrar is not compatible anymore starting with 2.0. | ||||||
|  |     depends_on('gdal@1.3.2:1.99') | ||||||
|  |     depends_on('cgal@3.5:') | ||||||
|  |     depends_on('proj@4.6.0:') | ||||||
|  |     # Boost's Python library has a different name starting with 1.67. | ||||||
|  |     # There were changes to Boost's optional in 1.61 that make the build fail. | ||||||
|  |     depends_on('boost+python@1.34:1.60') | ||||||
|  |     depends_on('python@2:2.99') | ||||||
|  |  | ||||||
|  |     # Officially, GPlates only supports GCC 4. Moreover, it requires | ||||||
|  |     # QtXmlPatterns, which Qt 4 only builds with GCC 4. | ||||||
|  |     conflicts('%gcc@5:') | ||||||
|  |  | ||||||
|  |     # When built in parallel, headers are not generated before they are used | ||||||
|  |     # (specifically, ViewportWindowUi.h). | ||||||
|  |     parallel = False | ||||||
|  |  | ||||||
|  |     def url_for_version(self, version): | ||||||
|  |         url = 'https://sourceforge.net/projects/gplates/files/gplates/{0}/gplates-{1}-unixsrc.tar.bz2/download' | ||||||
|  |         return url.format(version.up_to(2), version) | ||||||
|  |  | ||||||
|  |     def patch(self): | ||||||
|  |         # GPlates overrides FindPythonLibs and finds the static library, which | ||||||
|  |         # can not be used easily. Fall back to CMake's version, which finds | ||||||
|  |         # the shared library instead. | ||||||
|  |         force_remove('cmake/modules/FindPythonLibs.cmake') | ||||||
|  |  | ||||||
|  |         # GPlates only installs its binary for the Release configuration. | ||||||
|  |         filter_file('CONFIGURATIONS release', | ||||||
|  |                     'CONFIGURATIONS Debug Release RelWithDebInfo MinSizeRel', | ||||||
|  |                     'src/CMakeLists.txt') | ||||||
| @@ -38,7 +38,7 @@ class JsonC(AutotoolsPackage): | |||||||
|  |  | ||||||
|     parallel = False |     parallel = False | ||||||
|  |  | ||||||
|     @when('@0.12.1 %gcc@7') |     @when('@0.12.1 %gcc@7:') | ||||||
|     def patch(self): |     def patch(self): | ||||||
|         filter_file('-Wextra', |         filter_file('-Wextra', | ||||||
|                     '-Wextra -Wno-error=implicit-fallthrough', |                     '-Wextra -Wno-error=implicit-fallthrough', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user