diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/povray/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/povray/package.py | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/povray/package.py b/var/spack/repos/builtin/packages/povray/package.py new file mode 100644 index 0000000000..2c80552a74 --- /dev/null +++ b/var/spack/repos/builtin/packages/povray/package.py @@ -0,0 +1,140 @@ +# Copyright 2013-2020 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 * +# For getting fqdn for defaulting COMPILED_BY +import socket +# For getting username for defaulting COMPILED_BY +import getpass + + +class Povray(AutotoolsPackage): + """The Persistence of Vision Raytracer creates three-dimensional, + photo-realistic images using a rendering technique called ray-tracing. It + reads in a text file containing information describing the objects and + lighting in a scene and generates an image of that scene from the view + point of a camera also described in the text file. Ray-tracing is not a + fast process by any means, but it produces very high quality images with + realistic reflections, shading, perspective and other effects. + """ + + # Add a proper url for your package's homepage here. + homepage = "http://povray.org/download/" + url = "https://github.com/POV-Ray/povray/archive/v3.7.0.8.tar.gz" + git = "https://github.com/POV-Ray/povray.git" + + # maintainers = ['payerle' ] + + version('3.7.0.8', sha256='53d11ebd2972fc452af168a00eb83aefb61387662c10784e81b63e44aa575de4') + + variant('boost', default=True, description='Build with boost support') + variant('debug', default=False, + description='Enable compiler debugging mode') + variant('io-restrictions', default=True, + description='Enable POV-Rays mechanism for control of I/O ' + 'operations') + variant('jpeg', default=True, description='Build with jpeg support') + variant('libpng', default=True, description='Build with libpng support') + variant('libtiff', default=True, description='Build with libtiff support') + variant('mkl', default=True, description='Build with Intel MKL support') + variant('openexr', default=True, description='Build with OpenEXR support') + variant('profile', default=False, + description='Enable program execution profiling') + variant('static', default=False, + description='Build static instead shared binaries') + variant('zlib', default=True, description='Build with zlib support') + # SDL support is limited to sdl version 1, not sdl2, and spack currently + # only supports sdl2 + # variant('sdl', default=True, + # description='Build with SDL support (for display preview)') + # X11 support requires SDL, and I believe therefore lacks support for + # remote displays. As we do not have SDL support, no X11 support + # variant('x11', default=True, description='Build with X11 support') + + # Build dependencies + depends_on('autoconf@2.59:', type='build') + depends_on('automake@1.9:', type='build') + depends_on('perl', type='build') + depends_on('m4', type='build') + depends_on('boost@1.37:', when='+boost') + depends_on('zlib@1.2.1:', when='+zlib') + depends_on('libpng@1.2.5:', when='+libpng') + depends_on('jpeg', when='+jpeg') + depends_on('libtiff@3.6.1:', when='+libtiff') + depends_on('openexr@1.2:', when='+openexr') + + # This patch enables prebuild.sh to be invoked from any directory + # (it immediately cds to the directory containing prebuild.sh) + # This is better than a broken check that it was called from the + # containing directory + patch('fix_prebuild.sh.patch') + + @run_before('autoreconf') + def run_prebuild_script(self): + # We need to run <build_dir>/unix/prebuild.sh + # and it must be run from within the directory containing it + unix_dir = join_path(self.build_directory, 'unix') + prebuild_path = join_path(unix_dir, 'prebuild.sh') + prebuild_script = which(prebuild_path) + prebuild_script() + + def configure_args(self): + extra_args = [] + + # POVRay insists upon a COMPILED_BY value being passed to configure + # We generate a generic using process owner and fqdn of build host. + fqdn = socket.getfqdn() + uname = getpass.getuser() + compiled_by = 'Installed by spack <{0}@{1}>'.format(uname, fqdn) + extra_args.append('COMPILED_BY={0}'.format(compiled_by)) + + extra_args.append('--disable-silent-rules') # Verbose make output + extra_args += self.enable_or_disable('debug') + extra_args += self.enable_or_disable('io-restrictions') + extra_args += self.enable_or_disable('profile') + extra_args += self.enable_or_disable('static') + + if '+boost' in self.spec: + extra_args.append('--with-boost={0}'.format( + self.spec['boost'].prefix)) + else: + extra_args.append('--without-boost') + + if '+jpeg' in self.spec: + extra_args.append('--with-libjpeg={0}'.format( + self.spec['jpeg'].prefix)) + else: + extra_args.append('--without-libjpeg') + + if '+libpng' in self.spec: + extra_args.append('--with-libpng={0}'.format( + self.spec['libpng'].prefix)) + else: + extra_args.append('--without-libpng') + + if '+libtiff' in self.spec: + extra_args.append('--with-libtiff={0}'.format( + self.spec['libtiff'].prefix)) + else: + extra_args.append('--without-libtiff') + + if '+mkl' in self.spec: + extra_args.append('--with-libmkl={0}'.format( + self.spec['mkl'].prefix)) + else: + extra_args.append('--without-libmkl') + + if '+openexr' in self.spec: + extra_args.append('--with-openexr={0}'.format( + self.spec['openexr'].prefix)) + else: + extra_args.append('--without-openexr') + + # POV-Ray only supports sdl v1, spack only supports sdl2 at this time + # and X11 support requires sdl + extra_args.append('--without-libsdl') + extra_args.append('--without-x') + + return extra_args |