Add new MavenPackage build system base class (#18185)

* Add new MavenPackage build system base class

* Fix flake8 and doc tests

* More specific regex

* Java 8 required for these packages
This commit is contained in:
Adam J. Stewart 2020-09-03 17:30:39 -05:00 committed by GitHub
parent fab2622a71
commit 7728b0737b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 209 additions and 209 deletions

View file

@ -29,6 +29,7 @@ on these ideas for each distinct build system that Spack supports:
:maxdepth: 1 :maxdepth: 1
:caption: Make-incompatible :caption: Make-incompatible
build_systems/mavenpackage
build_systems/sconspackage build_systems/sconspackage
build_systems/wafpackage build_systems/wafpackage

View file

@ -0,0 +1,84 @@
.. 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)
.. _mavenpackage:
------------
MavenPackage
------------
Apache Maven is a general-purpose build system that does not rely
on Makefiles to build software. It is designed for building and
managing and Java-based project.
^^^^^^
Phases
^^^^^^
The ``MavenPackage`` base class comes with the following phases:
#. ``build`` - compile code and package into a JAR file
#. ``install`` - copy to installation prefix
By default, these phases run:
.. code-block:: console
$ mvn package
$ install . <prefix>
^^^^^^^^^^^^^^^
Important files
^^^^^^^^^^^^^^^
Maven packages can be identified by the presence of a ``pom.xml`` file.
This file lists dependencies and other metadata about the project.
There may also be configuration files in the ``.mvn`` directory.
^^^^^^^^^^^^^^^^^^^^^^^^^
Build system dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^
Maven requires the ``mvn`` executable to build the project. It also
requires Java at both build- and run-time. Because of this, the base
class automatically adds the following dependencies:
.. code-block:: python
depends_on('java', type=('build', 'run'))
depends_on('maven', type='build')
In the ``pom.xml`` file, you may see sections like:
.. code-block:: xml
<requireJavaVersion>
<version>[1.7,)</version>
</requireJavaVersion>
<requireMavenVersion>
<version>[3.5.4,)</version>
</requireMavenVersion>
This specifies the versions of Java and Maven that are required to
build the package. See
https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN402
for a description of this version range syntax. In this case, you
should add:
.. code-block:: python
depends_on('java@7:', type='build')
depends_on('maven@3.5.4:', type='build')
^^^^^^^^^^^^^^^^^^^^^^
External documentation
^^^^^^^^^^^^^^^^^^^^^^
For more information on the Maven build system, see:
https://maven.apache.org/index.html

View file

@ -0,0 +1,55 @@
# 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 llnl.util.filesystem import install_tree, working_dir
from spack.directives import depends_on
from spack.package import PackageBase, run_after
from spack.util.executable import which
class MavenPackage(PackageBase):
"""Specialized class for packages that are built using the
Maven build system. See https://maven.apache.org/index.html
for more information.
This class provides the following phases that can be overridden:
* build
* install
"""
# Default phases
phases = ['build', 'install']
# To be used in UI queries that require to know which
# build-system class we are using
build_system_class = 'MavenPackage'
depends_on('java', type=('build', 'run'))
depends_on('maven', type='build')
@property
def build_directory(self):
"""The directory containing the ``pom.xml`` file."""
return self.stage.source_path
def build(self, spec, prefix):
"""Compile code and package into a JAR file."""
with working_dir(self.build_directory):
mvn = which('mvn')
if self.run_tests:
mvn('verify')
else:
mvn('package', '-DskipTests')
def install(self, spec, prefix):
"""Copy to installation prefix."""
with working_dir(self.build_directory):
install_tree('.', prefix)
# Check that self.prefix is there after installation
run_after('install')(PackageBase.sanity_check_prefix)

View file

@ -204,6 +204,17 @@ def qmake_args(self):
return args""" return args"""
class MavenPackageTemplate(PackageTemplate):
"""Provides appropriate overrides for Maven-based packages"""
base_class_name = 'MavenPackage'
body_def = """\
def build(self, spec, prefix):
# FIXME: If not needed delete this function
pass"""
class SconsPackageTemplate(PackageTemplate): class SconsPackageTemplate(PackageTemplate):
"""Provides appropriate overrides for SCons-based packages""" """Provides appropriate overrides for SCons-based packages"""
@ -430,6 +441,7 @@ def __init__(self, name, *args, **kwargs):
'cmake': CMakePackageTemplate, 'cmake': CMakePackageTemplate,
'bundle': BundlePackageTemplate, 'bundle': BundlePackageTemplate,
'qmake': QMakePackageTemplate, 'qmake': QMakePackageTemplate,
'maven': MavenPackageTemplate,
'scons': SconsPackageTemplate, 'scons': SconsPackageTemplate,
'waf': WafPackageTemplate, 'waf': WafPackageTemplate,
'bazel': BazelPackageTemplate, 'bazel': BazelPackageTemplate,
@ -515,6 +527,7 @@ def __call__(self, stage, url):
(r'/configure$', 'autotools'), (r'/configure$', 'autotools'),
(r'/configure\.(in|ac)$', 'autoreconf'), (r'/configure\.(in|ac)$', 'autoreconf'),
(r'/Makefile\.am$', 'autoreconf'), (r'/Makefile\.am$', 'autoreconf'),
(r'/pom\.xml$', 'maven'),
(r'/SConstruct$', 'scons'), (r'/SConstruct$', 'scons'),
(r'/waf$', 'waf'), (r'/waf$', 'waf'),
(r'/setup\.py$', 'python'), (r'/setup\.py$', 'python'),

View file

@ -21,6 +21,7 @@
from spack.build_systems.cmake import CMakePackage from spack.build_systems.cmake import CMakePackage
from spack.build_systems.cuda import CudaPackage from spack.build_systems.cuda import CudaPackage
from spack.build_systems.qmake import QMakePackage from spack.build_systems.qmake import QMakePackage
from spack.build_systems.maven import MavenPackage
from spack.build_systems.scons import SConsPackage from spack.build_systems.scons import SConsPackage
from spack.build_systems.waf import WafPackage from spack.build_systems.waf import WafPackage
from spack.build_systems.octave import OctavePackage from spack.build_systems.octave import OctavePackage

View file

@ -16,6 +16,7 @@
('configure', 'autotools'), ('configure', 'autotools'),
('CMakeLists.txt', 'cmake'), ('CMakeLists.txt', 'cmake'),
('project.pro', 'qmake'), ('project.pro', 'qmake'),
('pom.xml', 'maven'),
('SConstruct', 'scons'), ('SConstruct', 'scons'),
('waf', 'waf'), ('waf', 'waf'),
('setup.py', 'python'), ('setup.py', 'python'),

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Accumulo(MavenPackage):
class Accumulo(Package):
"""Apache Accumulo is a sorted, distributed key/value store that """Apache Accumulo is a sorted, distributed key/value store that
provides robust, scalable data storage and retrieval.""" provides robust, scalable data storage and retrieval."""
@ -17,10 +15,5 @@ class Accumulo(Package):
version('1.9.3', sha256='d9548d5b9cf9f494f027f0fe59d5d6d45d09064359d7761cade62991ce2a5d0c') version('1.9.3', sha256='d9548d5b9cf9f494f027f0fe59d5d6d45d09064359d7761cade62991ce2a5d0c')
version('1.9.2', sha256='11ab028143ad6313cd5fc701b36b4c35e46a4a3fa2ce663869860b9f6bf5ee4d') version('1.9.2', sha256='11ab028143ad6313cd5fc701b36b4c35e46a4a3fa2ce663869860b9f6bf5ee4d')
depends_on('maven', type='build') depends_on('java@8:', type=('build', 'run'))
depends_on('java', type=('build', 'run')) depends_on('maven@3.5.0:', type='build')
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Canal(MavenPackage):
class Canal(Package):
"""Alibaba MySQL binlog incremental subscription & consumer components.""" """Alibaba MySQL binlog incremental subscription & consumer components."""
homepage = "https://github.com/alibaba/canal/wiki" homepage = "https://github.com/alibaba/canal/wiki"
@ -15,11 +13,3 @@ class Canal(Package):
version('1.1.4', sha256='740e0adac56d7f281cba21eca173eef3e8d42aa3e0fb49709f92cb6a1451dfbc') version('1.1.4', sha256='740e0adac56d7f281cba21eca173eef3e8d42aa3e0fb49709f92cb6a1451dfbc')
version('1.1.3', sha256='3fe75ca5eb5cb97eb35818426c1427542ccddb0de052cf154e948ef321822cbc') version('1.1.3', sha256='3fe75ca5eb5cb97eb35818426c1427542ccddb0de052cf154e948ef321822cbc')
version('1.1.2', sha256='097190f952bdf09b835ed68966f5a98fa8308322a6aab11c1bfd16cec1800cf2') version('1.1.2', sha256='097190f952bdf09b835ed68966f5a98fa8308322a6aab11c1bfd16cec1800cf2')
depends_on('maven', type='build')
depends_on('java', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('install', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Giraph(MavenPackage):
class Giraph(Package):
"""Apache Giraph is an iterative graph processing system built """Apache Giraph is an iterative graph processing system built
for high scalability.""" for high scalability."""
@ -18,12 +16,10 @@ class Giraph(Package):
version('1.2.0', sha256='6206f4ad220ea42aa0c4abecce343e36026cf9c6e0a2853f1eb08543da452ad1') version('1.2.0', sha256='6206f4ad220ea42aa0c4abecce343e36026cf9c6e0a2853f1eb08543da452ad1')
version('1.1.0', sha256='181d94b8198c0f312d4611e24b0056b5181c8358a7ec89b0393661736cd19a4c') version('1.1.0', sha256='181d94b8198c0f312d4611e24b0056b5181c8358a7ec89b0393661736cd19a4c')
depends_on('maven', type='build') depends_on('java@7:', type=('build', 'run'))
depends_on('java@8', type=('build', 'run')) depends_on('maven@3.0.0:', type='build')
def install(self, spec, prefix): def install(self, spec, prefix):
mvn = which('mvn')
mvn('clean', 'package', '-DskipTests')
giraph_path = join_path(self.stage.source_path, giraph_path = join_path(self.stage.source_path,
'giraph-dist', 'target', 'giraph-dist', 'target',
'giraph-{0}-for-hadoop-1.2.1-bin' 'giraph-{0}-for-hadoop-1.2.1-bin'

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class H2database(MavenPackage):
class H2database(Package):
"""H2 is an embeddable RDBMS written in Java.""" """H2 is an embeddable RDBMS written in Java."""
homepage = "https://h2database.com" homepage = "https://h2database.com"
@ -23,15 +21,4 @@ class H2database(Package):
version('1.4.192', sha256='b5f370d7256cf816696a28acd282ed10bf8a05e09b814bf79d4527509846c977') version('1.4.192', sha256='b5f370d7256cf816696a28acd282ed10bf8a05e09b814bf79d4527509846c977')
version('1.4.191', sha256='9890adc66979647b131242e87ad1498b906c0dcc041d25fcb24ff304b86b4f98') version('1.4.191', sha256='9890adc66979647b131242e87ad1498b906c0dcc041d25fcb24ff304b86b4f98')
depends_on('maven', type='build') build_directory = 'h2'
depends_on('java', type=('build', 'run'))
@property
def build_directory(self):
return 'h2'
def install(self, spec, prefix):
with working_dir(self.build_directory):
mvn = which('mvn')
mvn('install', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Hazelcast(MavenPackage):
class Hazelcast(Package):
"""Hazelcast is an open-source distributed in-memory data """Hazelcast is an open-source distributed in-memory data
store and computation platform. It provides a wide variety store and computation platform. It provides a wide variety
of distributed data structures and concurrency primitives.""" of distributed data structures and concurrency primitives."""
@ -20,10 +18,4 @@ class Hazelcast(Package):
version('3.12.7', sha256='0747de968082bc50202f825b4010be28a3885b3dbcee4b83cbe21b2f8b26a7e0') version('3.12.7', sha256='0747de968082bc50202f825b4010be28a3885b3dbcee4b83cbe21b2f8b26a7e0')
version('3.11.7', sha256='c9f636b8813027d4cc24459bd27740549f89b4f11f62a868079bcb5b41d9b2bb') version('3.11.7', sha256='c9f636b8813027d4cc24459bd27740549f89b4f11f62a868079bcb5b41d9b2bb')
depends_on('maven', type='build') depends_on('java@8:', type=('build', 'run'))
depends_on('java', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Hibench(MavenPackage):
class Hibench(Package):
"""HiBench is a big data benchmark suite that helps evaluate different big """HiBench is a big data benchmark suite that helps evaluate different big
data frameworks in terms of speed, throughput and system resource data frameworks in terms of speed, throughput and system resource
utilizations. It contains a set of Hadoop,Spark and streaming workloads, utilizations. It contains a set of Hadoop,Spark and streaming workloads,
@ -25,11 +23,3 @@ class Hibench(Package):
version('3.0.0', sha256='869771e73593caac3a9b2fb14a10041a485d248074ba38cca812c934897db63d') version('3.0.0', sha256='869771e73593caac3a9b2fb14a10041a485d248074ba38cca812c934897db63d')
version('2.2.1', sha256='f8531cbaff8d93bfd1c0742fec5dbb375bfeeb9ec1b39b4e857120e933a2c9ec') version('2.2.1', sha256='f8531cbaff8d93bfd1c0742fec5dbb375bfeeb9ec1b39b4e857120e933a2c9ec')
version('2.2', sha256='5f68e22339cdd141b846d8b1d7134b2b8ff5fbd5e847e406214dc845f5d005cf') version('2.2', sha256='5f68e22339cdd141b846d8b1d7134b2b8ff5fbd5e847e406214dc845f5d005cf')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Hudi(MavenPackage):
class Hudi(Package):
"""Apache Hudi stands for Hadoop Upserts Deletes and Incrementals. """Apache Hudi stands for Hadoop Upserts Deletes and Incrementals.
Hudi manages the storage of large analytical datasets on DFS.""" Hudi manages the storage of large analytical datasets on DFS."""
@ -15,10 +13,4 @@ class Hudi(Package):
version('0.5.3', sha256='8cbf52007fddd07eebd20c8962cd630b05a8ae4c597523fd63db837a45a0b227') version('0.5.3', sha256='8cbf52007fddd07eebd20c8962cd630b05a8ae4c597523fd63db837a45a0b227')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run')) depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -46,7 +46,10 @@ class Interproscan(Package):
def install(self, spec, prefix): def install(self, spec, prefix):
with working_dir('core'): with working_dir('core'):
which('mvn')('clean', 'install') if self.run_tests:
which('mvn')('verify')
else:
which('mvn')('package', '-DskipTests')
install_tree('.', prefix) install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Kinesis(MavenPackage):
class Kinesis(Package):
"""The Amazon Kinesis Client Library for Java (Amazon KCL) enables Java """The Amazon Kinesis Client Library for Java (Amazon KCL) enables Java
developers to easily consume and process data from Amazon Kinesis.""" developers to easily consume and process data from Amazon Kinesis."""
@ -18,10 +16,4 @@ class Kinesis(Package):
version('2.2.8', sha256='0753d6c84247fa58c09749ca7d258a11c658b64eb65286eff74a2115613183a8') version('2.2.8', sha256='0753d6c84247fa58c09749ca7d258a11c658b64eb65286eff74a2115613183a8')
version('2.2.7', sha256='1838ef2327920d1df6f41db1de55318d6935d16ddde90b6e65ec65d374993177') version('2.2.7', sha256='1838ef2327920d1df6f41db1de55318d6935d16ddde90b6e65ec65d374993177')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run')) depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('clean', 'install', '-Dgpg.skip=true', '-DskipITs')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Mahout(MavenPackage):
class Mahout(Package):
"""The Apache Mahout project's goal is to build an environment for """The Apache Mahout project's goal is to build an environment for
quickly creating scalable performant machine learning applications.""" quickly creating scalable performant machine learning applications."""
@ -20,10 +18,5 @@ class Mahout(Package):
version('0.12.1', sha256='32e334115e4b2bfa21ba58e888fc47cdde2ca32c915d1694ed6761bda3b05dbb') version('0.12.1', sha256='32e334115e4b2bfa21ba58e888fc47cdde2ca32c915d1694ed6761bda3b05dbb')
version('0.12.0', sha256='65f340072131b1178b7bf4da115782254bdb20d6abd9789f10fc6dfe1ea7e7ad') version('0.12.0', sha256='65f340072131b1178b7bf4da115782254bdb20d6abd9789f10fc6dfe1ea7e7ad')
depends_on('maven', type='build') depends_on('java@8:', type=('build', 'run'))
depends_on('java@8', type=('build', 'run')) depends_on('maven@3.3.3:', type='build')
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,7 +3,7 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import * import re
class Maven(Package): class Maven(Package):
@ -19,7 +19,15 @@ class Maven(Package):
version('3.5.0', sha256='beb91419245395bd69a4a6edad5ca3ec1a8b64e41457672dc687c173a495f034') version('3.5.0', sha256='beb91419245395bd69a4a6edad5ca3ec1a8b64e41457672dc687c173a495f034')
version('3.3.9', sha256='6e3e9c949ab4695a204f74038717aa7b2689b1be94875899ac1b3fe42800ff82') version('3.3.9', sha256='6e3e9c949ab4695a204f74038717aa7b2689b1be94875899ac1b3fe42800ff82')
depends_on('java') depends_on('java', type='run')
executables = ['^mvn$']
@classmethod
def determine_version(cls, exe):
output = Executable(exe)('--version', output=str, error=str)
match = re.search(r'Apache Maven (\S+)', output)
return match.group(1) if match else None
def install(self, spec, prefix): def install(self, spec, prefix):
# install pre-built distribution # install pre-built distribution

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class MongodbAsyncDriver(MavenPackage):
class MongodbAsyncDriver(Package):
"""The MongoDB Asynchronous Java Driver.""" """The MongoDB Asynchronous Java Driver."""
homepage = "http://www.allanbank.com/mongodb-async-driver/" homepage = "http://www.allanbank.com/mongodb-async-driver/"
@ -14,11 +12,3 @@ class MongodbAsyncDriver(Package):
version('2.0.1', sha256='87f22c16f3744a847eeb8276ed132bf235f025db0b7dee0d0f239d5cdcab720c') version('2.0.1', sha256='87f22c16f3744a847eeb8276ed132bf235f025db0b7dee0d0f239d5cdcab720c')
version('2.0.0', sha256='8cffe4c960d42550be30c27d66f5de6df4edb5ee7a094c50519986dc5cbcf9b8') version('2.0.0', sha256='8cffe4c960d42550be30c27d66f5de6df4edb5ee7a094c50519986dc5cbcf9b8')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Mrbench(MavenPackage):
class Mrbench(Package):
"""A simple Java tool for SMTP server benchmarking.""" """A simple Java tool for SMTP server benchmarking."""
homepage = "https://github.com/marcorosi/mrbench" homepage = "https://github.com/marcorosi/mrbench"
@ -14,10 +12,4 @@ class Mrbench(Package):
version('master', branch='master') version('master', branch='master')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run')) depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Neo4j(MavenPackage):
class Neo4j(Package):
"""Neo4j is the world's leading Graph Database. It is a high performance """Neo4j is the world's leading Graph Database. It is a high performance
graph store with all the features expected of a mature and robust graph store with all the features expected of a mature and robust
database, like a friendly query language and ACID transactions. The database, like a friendly query language and ACID transactions. The
@ -23,9 +21,4 @@ class Neo4j(Package):
version('4.0.0', sha256='7173b97baf53be82b46f95fa52f99af591606a318e03915917ddd7141936fec5') version('4.0.0', sha256='7173b97baf53be82b46f95fa52f99af591606a318e03915917ddd7141936fec5')
version('3.5.16', sha256='1304fcd56b0f08f35b05d8b546fd844637ba1ffa5e00bb1e9a81a06b6242cb88') version('3.5.16', sha256='1304fcd56b0f08f35b05d8b546fd844637ba1ffa5e00bb1e9a81a06b6242cb88')
depends_on('maven', type=('build', 'run')) depends_on('maven@3.5.4:', type='build')
def install(self, spec, prefix):
maven = which('mvn')
maven('clean', 'install', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Phoenix(MavenPackage):
class Phoenix(Package):
"""Apache Phoenix is a SQL skin over HBase delivered as a client-embedded """Apache Phoenix is a SQL skin over HBase delivered as a client-embedded
JDBC driver targeting low latency queries over HBase data.""" JDBC driver targeting low latency queries over HBase data."""
@ -14,11 +12,3 @@ class Phoenix(Package):
git = "https://github.com/apache/phoenix.git" git = "https://github.com/apache/phoenix.git"
version('master', branch='master') version('master', branch='master')
depends_on('java@8:', type=('build', 'run'))
depends_on('maven', type='build')
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Presto(MavenPackage):
class Presto(Package):
"""Presto is a distributed SQL query engine for big data.""" """Presto is a distributed SQL query engine for big data."""
homepage = "https://prestodb.io/" homepage = "https://prestodb.io/"
@ -22,11 +20,3 @@ class Presto(Package):
version('0.236.1', sha256='571c74c0b84ee515750c129eb5de1fbac09cd4d028943d9df99c8e89909c83f4') version('0.236.1', sha256='571c74c0b84ee515750c129eb5de1fbac09cd4d028943d9df99c8e89909c83f4')
version('0.236', sha256='6d4c1d79216d2530b64a7737a54c35e698ca738e42d77d086f036224b42b508e') version('0.236', sha256='6d4c1d79216d2530b64a7737a54c35e698ca738e42d77d086f036224b42b508e')
version('0.235.1', sha256='1353b2b8526bc2a365f70e9af7005e294cfff11d53285279b2f67048bb5511a0') version('0.235.1', sha256='1353b2b8526bc2a365f70e9af7005e294cfff11d53285279b2f67048bb5511a0')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('install', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Slf4j(MavenPackage):
class Slf4j(Package):
"""The Simple Logging Facade for Java (SLF4J) serves as a simple facade """The Simple Logging Facade for Java (SLF4J) serves as a simple facade
or abstraction for various logging frameworks (e.g. java.util.logging, or abstraction for various logging frameworks (e.g. java.util.logging,
logback,log4j) allowing the end user to plug in the desired logging logback,log4j) allowing the end user to plug in the desired logging
@ -21,10 +19,4 @@ class Slf4j(Package):
version('1.7.27', sha256='238883cab9808a5cd58cf5245f9f13ac645c9fca878b60d959e00fc4ac588231') version('1.7.27', sha256='238883cab9808a5cd58cf5245f9f13ac645c9fca878b60d959e00fc4ac588231')
version('1.7.26', sha256='dc422820f92e581241c4cfe796d01531d12bad3dc04225bdb315761871156942') version('1.7.26', sha256='dc422820f92e581241c4cfe796d01531d12bad3dc04225bdb315761871156942')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run')) depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Slider(MavenPackage):
class Slider(Package):
"""Slider is a framework for deployment and management of these """Slider is a framework for deployment and management of these
long-running data access applications in Hadoop.""" long-running data access applications in Hadoop."""
@ -19,7 +17,6 @@ class Slider(Package):
version('0.91.0', sha256='212a5cde6de60060c9a081f553d66940b70af4bccb469072febb554c4005bcef') version('0.91.0', sha256='212a5cde6de60060c9a081f553d66940b70af4bccb469072febb554c4005bcef')
version('0.90.2', sha256='410941f772d29f564c4bb90ca0631f29dc895f509048cb6052f8695302e3f944') version('0.90.2', sha256='410941f772d29f564c4bb90ca0631f29dc895f509048cb6052f8695302e3f944')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run')) depends_on('java@8', type=('build', 'run'))
depends_on('python@2.7.0:2.7.99', type='run') depends_on('python@2.7.0:2.7.99', type='run')
@ -27,8 +24,6 @@ def url_for_version(self, version):
return "http://archive.apache.org/dist/incubator/slider/{0}-incubating/apache-slider-{0}-incubating-source-release.tar.gz".format(version) return "http://archive.apache.org/dist/incubator/slider/{0}-incubating/apache-slider-{0}-incubating-source-release.tar.gz".format(version)
def install(self, spec, prefix): def install(self, spec, prefix):
mvn = which('mvn')
mvn('clean', 'package', '-DskipTests')
slider_path = join_path(self.stage.source_path, slider_path = join_path(self.stage.source_path,
'slider-assembly', 'target', 'slider-assembly', 'target',
'slider-{0}-incubating-all' 'slider-{0}-incubating-all'

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Sqoop(MavenPackage):
class Sqoop(Package):
"""Apache Sqoop is a tool designed for efficiently transferring bulk """Apache Sqoop is a tool designed for efficiently transferring bulk
data between Apache Hadoop and structured datastores such as relational data between Apache Hadoop and structured datastores such as relational
databases.""" databases."""
@ -18,10 +16,4 @@ class Sqoop(Package):
version('1.99.7', sha256='caca533554235d9e999435be59a13b5ecae514b3c914ca3b54868fca43a3b74a') version('1.99.7', sha256='caca533554235d9e999435be59a13b5ecae514b3c914ca3b54868fca43a3b74a')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run')) depends_on('java@8', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('clean', 'install', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Testdfsio(MavenPackage):
class Testdfsio(Package):
"""A corrected and enhanced version of Apache Hadoop TestDFSIO""" """A corrected and enhanced version of Apache Hadoop TestDFSIO"""
homepage = "https://github.com/tthx/testdfsio" homepage = "https://github.com/tthx/testdfsio"
@ -14,11 +12,4 @@ class Testdfsio(Package):
version('0.0.1', sha256='fe8cc47260ffb3e3ac90e0796ebfe73eb4dac64964ab77671e5d32435339dd09') version('0.0.1', sha256='fe8cc47260ffb3e3ac90e0796ebfe73eb4dac64964ab77671e5d32435339dd09')
depends_on('maven', type='build')
depends_on('java@8', type=('build', 'run'))
depends_on('hadoop@3.2.1:', type='run') depends_on('hadoop@3.2.1:', type='run')
def install(self, spec, prefix):
mvn = which('mvn')
mvn('clean', 'package', '-Dmaven.test.skip=true')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Ycsb(MavenPackage):
class Ycsb(Package):
"""Yahoo! Cloud Serving Benchmark.""" """Yahoo! Cloud Serving Benchmark."""
homepage = "https://research.yahoo.com/news/yahoo-cloud-serving-benchmark/" homepage = "https://research.yahoo.com/news/yahoo-cloud-serving-benchmark/"
@ -19,11 +17,10 @@ class Ycsb(Package):
version('0.14.0', sha256='456bcc9fa3d5d66d76fffa9cec34afd4528d9f02aa8a8d1135f511650516d5cb') version('0.14.0', sha256='456bcc9fa3d5d66d76fffa9cec34afd4528d9f02aa8a8d1135f511650516d5cb')
version('0.13.0', sha256='21cb8078a0fe2d8d909145744ca15848dbb6757e98a7fdc97fb4049f82f4afbc') version('0.13.0', sha256='21cb8078a0fe2d8d909145744ca15848dbb6757e98a7fdc97fb4049f82f4afbc')
depends_on('maven', type='build') depends_on('maven@3.1.0:', type='build')
depends_on('java@8', type=('build', 'run'))
depends_on('mongodb-async-driver', type='build') depends_on('mongodb-async-driver', type='build')
def install(self, spec, prefix): def build(self, spec, prefix):
mvn = which('mvn') mvn = which('mvn')
jar_name = 'target/mongodb-async-driver-' + \ jar_name = 'target/mongodb-async-driver-' + \
spec['mongodb-async-driver'].version.string + '.jar' spec['mongodb-async-driver'].version.string + '.jar'
@ -32,4 +29,3 @@ def install(self, spec, prefix):
'-DgroupId=com.allanbank', '-DartifactId=mongodb-async-driver', '-DgroupId=com.allanbank', '-DartifactId=mongodb-async-driver',
'-Dversion=2.0.1', '-Dpackaging=jar') '-Dversion=2.0.1', '-Dpackaging=jar')
mvn('package', '-DskipTests') mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Zipkin(MavenPackage):
class Zipkin(Package):
"""Zipkin is a distributed tracing system. It helps gather timing """Zipkin is a distributed tracing system. It helps gather timing
data needed to troubleshoot latency problems in service data needed to troubleshoot latency problems in service
architectures. Features include both the collection and lookup architectures. Features include both the collection and lookup
@ -19,10 +17,4 @@ class Zipkin(Package):
version('2.21.4', sha256='ee7b0110b3852479c925b6429ff278aa38b1d5da27f4762891b1f863e67bdad5') version('2.21.4', sha256='ee7b0110b3852479c925b6429ff278aa38b1d5da27f4762891b1f863e67bdad5')
version('2.21.3', sha256='02526e2ba4de85938b510cb2db01865ec46cdad53157862c39fa5e9b6cbd15b6') version('2.21.3', sha256='02526e2ba4de85938b510cb2db01865ec46cdad53157862c39fa5e9b6cbd15b6')
depends_on('maven', type='build') depends_on('maven@1.8:14', type='build')
depends_on('java', type=('build', 'run'))
def install(self, spec, prefix):
mvn = which('mvn')
mvn('package', '-DskipTests')
install_tree('.', prefix)

View file

@ -3,10 +3,8 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class ZookeeperBenchmark(MavenPackage):
class ZookeeperBenchmark(Package):
"""It is designed to measure the per-request latency of a ZooKeeper """It is designed to measure the per-request latency of a ZooKeeper
ensemble for a predetermined length of time""" ensemble for a predetermined length of time"""
@ -15,11 +13,9 @@ class ZookeeperBenchmark(Package):
version('master', branch='master') version('master', branch='master')
depends_on('maven', type='build')
depends_on('zookeeper', type=('build', 'run')) depends_on('zookeeper', type=('build', 'run'))
def install(self, spec, prefix): def build(self, spec, prefix):
zookeeper_version = self.spec['zookeeper'].version.string zookeeper_version = self.spec['zookeeper'].version.string
mvn = which('mvn') mvn = which('mvn')
mvn('-DZooKeeperVersion=' + zookeeper_version, 'package') mvn('-DZooKeeperVersion=' + zookeeper_version, 'package')
install_tree('.', prefix)