Add MDB driver support to GDAL (#8614)

This commit is contained in:
Adam J. Stewart 2018-08-29 12:35:56 -05:00 committed by GitHub
parent 1e0c337fe9
commit 1383834d15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 216 additions and 5 deletions

View File

@ -0,0 +1,50 @@
##############################################################################
# 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 CommonsLang(Package):
"""The standard Java libraries fail to provide enough methods for
manipulation of its core classes. Apache Commons Lang provides these
extra methods.
Lang provides a host of helper utilities for the java.lang API, notably
String manipulation methods, basic numerical methods, object reflection,
concurrency, creation and serialization and System properties. Additionally
it contains basic enhancements to java.util.Date and a series of utilities
dedicated to help with building methods, such as hashCode, toString and
equals."""
homepage = "http://commons.apache.org/proper/commons-lang/"
url = "https://archive.apache.org/dist/commons/lang/binaries/commons-lang-2.6-bin.tar.gz"
version('2.6', '444075803459bffebfb5e28877861d23')
version('2.4', '5ff5d890e46021a2dbd77caba80f90f2')
extends('jdk')
depends_on('java@2:', type='run')
def install(self, spec, prefix):
install('commons-lang-{0}.jar'.format(self.version), prefix)

View File

@ -0,0 +1,49 @@
##############################################################################
# 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 CommonsLang3(Package):
"""The standard Java libraries fail to provide enough methods for
manipulation of its core classes. Apache Commons Lang provides these
extra methods.
Lang provides a host of helper utilities for the java.lang API, notably
String manipulation methods, basic numerical methods, object reflection,
concurrency, creation and serialization and System properties. Additionally
it contains basic enhancements to java.util.Date and a series of utilities
dedicated to help with building methods, such as hashCode, toString and
equals."""
homepage = "http://commons.apache.org/proper/commons-lang/"
url = "https://archive.apache.org/dist/commons/lang/binaries/commons-lang3-3.7-bin.tar.gz"
version('3.7', 'c7577443639dc6efadc80f1cbc7fced5')
extends('jdk')
depends_on('java@7:', type='run')
def install(self, spec, prefix):
install('commons-lang3-{0}.jar'.format(self.version), prefix)

View File

@ -0,0 +1,51 @@
##############################################################################
# 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 CommonsLogging(Package):
"""When writing a library it is very useful to log information. However
there are many logging implementations out there, and a library cannot
impose the use of a particular one on the overall application that the
library is a part of.
The Logging package is an ultra-thin bridge between different logging
implementations. A library that uses the commons-logging API can be used
with any logging implementation at runtime. Commons-logging comes with
support for a number of popular logging implementations, and writing
adapters for others is a reasonably simple task."""
homepage = "http://commons.apache.org/proper/commons-logging/"
url = "http://archive.apache.org/dist/commons/logging/binaries/commons-logging-1.2-bin.tar.gz"
version('1.2', 'ac043ce7ab3374eb4ed58354a6b2c3de')
version('1.1.3', 'b132f9a1e875677ae6b449406cff2a78')
version('1.1.1', 'e5de09672af9b386c30a311654d8541a')
extends('jdk')
depends_on('java', type='run')
def install(self, spec, prefix):
install('commons-logging-{0}.jar'.format(self.version), prefix)

View File

@ -83,6 +83,7 @@ class Gdal(AutotoolsPackage):
variant('perl', default=False, description='Enable perl bindings')
variant('python', default=False, description='Enable python bindings')
variant('java', default=False, description='Include Java support')
variant('mdb', default=False, description='Include MDB driver')
variant('armadillo', default=False, description='Include Armadillo support for faster TPS transform computation')
variant('cryptopp', default=False, description='Include cryptopp support')
variant('crypto', default=False, description='Include crypto (from openssl) support')
@ -117,7 +118,7 @@ class Gdal(AutotoolsPackage):
depends_on('hdf5', when='+hdf5')
depends_on('kealib', when='+kea @2:')
depends_on('netcdf', when='+netcdf')
depends_on('jasper@1.900.1', patches=patch('uuid.patch'), when='+jasper')
depends_on('jasper@1.900.1', patches='uuid.patch', when='+jasper')
depends_on('openjpeg', when='+openjpeg')
depends_on('xerces-c', when='+xerces')
depends_on('expat', when='+expat')
@ -136,7 +137,8 @@ class Gdal(AutotoolsPackage):
# swig/python/setup.py
depends_on('py-setuptools', type='build', when='+python')
depends_on('py-numpy@1.0.0:', type=('build', 'run'), when='+python')
depends_on('java', type=('build', 'run'), when='+java')
depends_on('java', type=('build', 'link', 'run'), when='+java')
depends_on('jackcess@1.2.0:1.2.999', type='run', when='+mdb')
depends_on('armadillo', when='+armadillo')
depends_on('cryptopp', when='+cryptopp @2.1:')
depends_on('openssl', when='+crypto @2.3:')
@ -149,6 +151,8 @@ class Gdal(AutotoolsPackage):
conflicts('%xl@:13.0', msg=msg)
conflicts('%xl_r@:13.0', msg=msg)
conflicts('+mdb', when='~java', msg='MDB driver requires Java')
def setup_environment(self, spack_env, run_env):
# Needed to install Python bindings to GDAL installation
# prefix instead of Python installation prefix.
@ -355,11 +359,24 @@ def configure_args(self):
else:
args.append('--with-python=no')
# https://trac.osgeo.org/gdal/wiki/GdalOgrInJava
if '+java' in spec:
args.append('--with-java={0}'.format(spec['java'].prefix))
args.extend([
'--with-java={0}'.format(spec['java'].home),
'--with-jvm-lib={0}'.format(
spec['java'].libs.directories[0]),
'--with-jvm-lib-add-rpath'
])
else:
args.append('--with-java=no')
# https://trac.osgeo.org/gdal/wiki/mdbtools
# http://www.gdal.org/drv_mdb.html
if '+mdb' in spec:
args.append('--with-mdb=yes')
else:
args.append('--with-mdb=no')
if '+armadillo' in spec:
args.append('--with-armadillo={0}'.format(
spec['armadillo'].prefix))
@ -410,8 +427,6 @@ def configure_args(self):
'--with-pam=no',
'--with-podofo=no',
'--with-php=no',
# https://trac.osgeo.org/gdal/wiki/mdbtools
'--with-mdb=no',
'--with-rasdaman=no',
])

View File

@ -0,0 +1,46 @@
##############################################################################
# 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 Jackcess(Package):
"""Jackcess is a pure Java library for reading from and writing to
MS Access databases (currently supporting versions 2000-2016)."""
homepage = "http://jackcess.sourceforge.net/"
url = "https://sourceforge.net/projects/jackcess/files/jackcess/2.1.12/jackcess-2.1.12.jar"
version('2.1.12', '7d051d8dd93f2fe7e5e86389ea380619', expand=False)
version('1.2.14.3', 'ef778421c1385ac9ab4aa7edfb954caa', expand=False)
extends('jdk')
depends_on('java', type='run')
depends_on('commons-lang@2.6', when='@2.1.12', type='run')
depends_on('commons-lang@2.4', when='@1.2.14.3', type='run')
depends_on('commons-logging@1.1.3', when='@2.1.12', type='run')
depends_on('commons-logging@1.1.1', when='@1.2.14.3', type='run')
def install(self, spec, prefix):
install('jackcess-{0}.jar'.format(self.version), prefix)