Allow ghostscript to build with Spack dependencies (#4065)

This commit is contained in:
Adam J. Stewart 2017-05-02 09:45:10 -05:00 committed by GitHub
parent 0f9059236c
commit 9a3acea759

View File

@ -23,28 +23,59 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
import shutil
class Ghostscript(Package):
class Ghostscript(AutotoolsPackage):
"""An interpreter for the PostScript language and for PDF."""
homepage = "http://ghostscript.com/"
url = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs921/ghostscript-9.21.tar.gz"
version('9.21', '6f60d7fcb5eef6a8bec5abedf21c6a7008a8c0c7')
version('9.21', '5f213281761d2750fcf27476c404d17f')
version('9.18', '33a47567d7a591c00a253caddd12a88a')
parallel = False
depends_on('pkg-config', type='build')
depends_on('freetype@2.4.2:')
depends_on('jpeg')
depends_on('lcms')
depends_on('libpng')
depends_on('libtiff')
depends_on('zlib')
def url_for_version(self, version):
baseurl = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs{0}/ghostscript-{1}.tar.gz"
return baseurl.format(version.joined, version.dotted)
def install(self, spec, prefix):
configure('--prefix={0}'.format(prefix),
'--with-system-libtiff')
def patch(self):
"""Ghostscript comes with all of its dependencies vendored.
In order to build with Spack versions of these dependencies,
we have to remove these vendored dependencies.
Note that this approach is also recommended by Linux from Scratch:
http://www.linuxfromscratch.org/blfs/view/svn/pst/gs.html
"""
directories = ['freetype', 'jpeg', 'lcms2', 'libpng', 'zlib']
for directory in directories:
shutil.rmtree(directory)
filter_file('ZLIBDIR=src',
'ZLIBDIR={0}'.format(self.spec['zlib'].prefix.include),
'configure.ac', 'configure',
string=True)
def configure_args(self):
return [
'--disable-compile-inits',
'--enable-dynamic',
'--with-system-libtiff',
]
def build(self, spec, prefix):
make()
make('so')
def install(self, spec, prefix):
make('install')
make('soinstall')