From a6e2f1a96a473b3b0aacdd0aae83b263462ea05a Mon Sep 17 00:00:00 2001 From: Neil Flood Date: Wed, 19 Dec 2018 19:04:25 +1000 Subject: mapserver: new package (#10067) --- .../repos/builtin/packages/mapserver/package.py | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mapserver/package.py diff --git a/var/spack/repos/builtin/packages/mapserver/package.py b/var/spack/repos/builtin/packages/mapserver/package.py new file mode 100644 index 0000000000..7767cc2ea1 --- /dev/null +++ b/var/spack/repos/builtin/packages/mapserver/package.py @@ -0,0 +1,100 @@ +# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * +import os + + +class Mapserver(CMakePackage): + """MapServer is an Open Source geographic data rendering engine written + in C. Beyond browsing GIS data, MapServer allows you create + "geographic image maps", that is, maps that can direct users + to content""" + + homepage = "http://www.mapserver.org/" + url = "http://download.osgeo.org/mapserver/mapserver-7.2.1.tar.gz" + + version('7.2.1', sha256='9459a7057d5a85be66a41096a5d804f74665381186c37077c94b56e784db6102') + + variant('python', default=False, description='Enable Python mapscript support') + variant('curl', default=False, description='Enable Curl HTTP support (required for wms/wfs client, and remote SLD)') + variant('ruby', default=False, description='Enable Ruby mapscript support') + variant('java', default=False, description='Enable Java mapscript support') + variant('perl', default=False, description='Enable Perl mapscript support') + + depends_on('libpng') + depends_on('freetype') + depends_on('jpeg') + depends_on('zlib') + depends_on('proj') + depends_on('curl', when='+curl') + depends_on('geos') + depends_on('libxml2') + depends_on('gdal') + depends_on('swig', type='build') + depends_on('python', when='+python') + depends_on('ruby', when='+ruby') + depends_on('java', when='+java') + depends_on('perl', when='+perl') + + extends('python', when='+python') + + @when('+python') + def patch(self): + # The Python bindings install themselves into the main python + # site-packages directory, instead of under the current package + # prefix. This hack patches the CMakeLists.txt for the Python + # bindings and hard-wires in the right destination. A bit ugly, + # sorry, but I don't speak cmake. + pyversiondir = "python{0}".format(self.spec['python'].version.up_to(2)) + sitepackages = os.path.join(self.spec.prefix.lib, + pyversiondir, + "site-packages") + filter_file(r'\${PYTHON_SITE_PACKAGES}', + sitepackages, + 'mapscript/python/CMakeLists.txt') + + def cmake_args(self): + args = [] + + if '+python' in self.spec: + args.append('-DWITH_PYTHON=ON') + else: + args.append('-DWITH_PYTHON=OFF') + + if '+java' in self.spec: + args.append('-DWITH_JAVA=ON') + else: + args.append('-DWITH_JAVA=OFF') + + if '+ruby' in self.spec: + args.append('-DWITH_RUBY=ON') + else: + args.append('-DWITH_RUBY=OFF') + + if '+perl' in self.spec: + args.append('-DWITH_PERL=ON') + else: + args.append('-DWITH_PERL=OFF') + + if '+curl' in self.spec: + args.append('-DWITH_CURL=ON') + else: + args.append('-DWITH_CURL=OFF') + + # These things are switched on by default, although possibly some + # should be variants. + args.append('-DWITH_WCS=ON') + args.append('-DWITH_WFS=ON') + args.append('-DWITH_WMS=ON') + + # These things are switched of until someone bothers to make them work + args.append('-DWITH_FRIBIDI=OFF') + args.append('-DWITH_HARFBUZZ=OFF') + args.append('-DWITH_CAIRO=OFF') + args.append('-DWITH_FCGI=OFF') + args.append('-DWITH_PROTOBUFC=OFF') + + return args -- cgit v1.2.3-60-g2f50