summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/leveldb/package.py65
1 files changed, 56 insertions, 9 deletions
diff --git a/var/spack/repos/builtin/packages/leveldb/package.py b/var/spack/repos/builtin/packages/leveldb/package.py
index b0acdfc75c..f8a453859c 100644
--- a/var/spack/repos/builtin/packages/leveldb/package.py
+++ b/var/spack/repos/builtin/packages/leveldb/package.py
@@ -7,40 +7,87 @@ import glob
from spack import *
-class Leveldb(MakefilePackage):
+class Leveldb(CMakePackage):
"""LevelDB is a fast key-value storage library written at Google
that provides an ordered mapping from string keys to string values."""
homepage = "https://github.com/google/leveldb"
- url = "https://github.com/google/leveldb/archive/v1.20.tar.gz"
+ url = "https://github.com/google/leveldb/archive/1.22.tar.gz"
git = "https://github.com/google/leveldb.git"
version('master', branch='master')
+ version('1.22', '55423cac9e3306f4a9502c738a001e4a339d1a38ffbee7572d4a07d5d63949b2')
version('1.20', '298b5bddf12c675d6345784261302252')
version('1.18', '73770de34a2a5ab34498d2e05b2b7fa0')
- depends_on("snappy")
+ variant('shared', default=True, description='Build shared library')
+ depends_on('cmake@3.9:', when='@1.21:', type='build')
+
+ depends_on('snappy')
+
+ def url_for_version(self, version):
+ url = 'https://github.com/google/leveldb/archive/{0}.tar.gz'
+
+ if version >= Version('1.21'):
+ ver = version
+ else:
+ ver = 'v{0}'.format(version)
+
+ return url.format(ver)
+
+ # CMake support was added in version 1.21
+ @when('@:1.20')
+ def cmake(self, spec, prefix):
+ pass
+
+ @when('@:1.20')
+ def build(self, spec, prefix):
+ pass
+
+ @when('@:1.20')
def install(self, spec, prefix):
- mkdirp(prefix.lib.pkgconfig)
+ make()
+ mkdirp(prefix.lib)
+
+ # Needed for version 1.20
libraries = glob.glob('out-shared/libleveldb.*')
libraries += glob.glob('out-static/libleveldb.*')
+ # Needed for version 1.18
+ libraries += glob.glob('libleveldb.*')
+
for library in libraries:
install(library, prefix.lib)
install_tree('include', prefix.include)
- with open(join_path(prefix.lib, 'pkgconfig', 'leveldb.pc'), 'w') as f:
- f.write('prefix={0}\n'.format(prefix))
+ def cmake_args(self):
+ args = []
+
+ if '+shared' in self.spec:
+ args.append('-DBUILD_SHARED_LIBS=ON')
+ else:
+ args.append('-DBUILD_SHARED_LIBS=OFF')
+
+ return args
+
+ @run_after('install')
+ def install_pkgconfig(self):
+ libdir = self.spec['leveldb'].libs.directories[0]
+ pkg_path = join_path(libdir, 'pkgconfig')
+ mkdirp(pkg_path)
+
+ with open(join_path(pkg_path, 'leveldb.pc'), 'w') as f:
+ f.write('prefix={0}\n'.format(self.prefix))
f.write('exec_prefix=${prefix}\n')
- f.write('libdir={0}\n'.format(prefix.lib))
- f.write('includedir={0}\n'.format(prefix.include))
+ f.write('libdir={0}\n'.format(libdir))
+ f.write('includedir={0}\n'.format(self.prefix.include))
f.write('\n')
f.write('Name: leveldb\n')
f.write('Description: LevelDB is a fast key-value storage library'
' written at Google that provides an ordered mapping from'
' string keys to string values.\n')
- f.write('Version: {0}\n'.format(spec.version))
+ f.write('Version: {0}\n'.format(self.spec.version))
f.write('Cflags: -I${includedir}\n')
f.write('Libs: -L${libdir} -lleveldb\n')