netlib-lapack : unified build with netlib-blas

openssl : updated version
py-numpy : updated dependencies
This commit is contained in:
alalazo 2016-03-03 16:39:21 +01:00
parent e5276856cb
commit 63ae407169
4 changed files with 21 additions and 86 deletions

View File

@ -1,46 +0,0 @@
from spack import *
import os
class NetlibBlas(Package):
"""Netlib reference BLAS"""
homepage = "http://www.netlib.org/lapack/"
url = "http://www.netlib.org/lapack/lapack-3.5.0.tgz"
version('3.5.0', 'b1d3e3e425b2e44a06760ff173104bdf')
variant('fpic', default=False, description="Build with -fpic compiler option")
# virtual dependency
provides('blas')
# Doesn't always build correctly in parallel
parallel = False
def patch(self):
os.symlink('make.inc.example', 'make.inc')
mf = FileFilter('make.inc')
mf.filter('^FORTRAN.*', 'FORTRAN = f90')
mf.filter('^LOADER.*', 'LOADER = f90')
mf.filter('^CC =.*', 'CC = cc')
if '+fpic' in self.spec:
mf.filter('^OPTS.*=.*', 'OPTS = -O2 -frecursive -fpic')
mf.filter('^CFLAGS =.*', 'CFLAGS = -O3 -fpic')
def install(self, spec, prefix):
make('blaslib')
# Tests that blas builds correctly
make('blas_testing')
# No install provided
mkdirp(prefix.lib)
install('librefblas.a', prefix.lib)
# Blas virtual package should provide blas.a and libblas.a
with working_dir(prefix.lib):
symlink('librefblas.a', 'blas.a')
symlink('librefblas.a', 'libblas.a')

View File

@ -1,16 +1,15 @@
from spack import * from spack import *
class NetlibLapack(Package): class NetlibLapack(Package):
""" """
LAPACK version 3.X is a comprehensive FORTRAN library that does LAPACK version 3.X is a comprehensive FORTRAN library that does linear algebra operations including matrix
linear algebra operations including matrix inversions, least inversions, least squared solutions to linear sets of equations, eigenvector analysis, singular value
squared solutions to linear sets of equations, eigenvector decomposition, etc. It is a very comprehensive and reputable package that has found extensive use in the
analysis, singular value decomposition, etc. It is a very scientific community.
comprehensive and reputable package that has found extensive
use in the scientific community.
""" """
homepage = "http://www.netlib.org/lapack/" homepage = "http://www.netlib.org/lapack/"
url = "http://www.netlib.org/lapack/lapack-3.5.0.tgz" url = "http://www.netlib.org/lapack/lapack-3.5.0.tgz"
version('3.5.0', 'b1d3e3e425b2e44a06760ff173104bdf') version('3.5.0', 'b1d3e3e425b2e44a06760ff173104bdf')
version('3.4.2', '61bf1a8a4469d4bdb7604f5897179478') version('3.4.2', '61bf1a8a4469d4bdb7604f5897179478')
@ -18,42 +17,24 @@ class NetlibLapack(Package):
version('3.4.0', '02d5706ec03ba885fc246e5fa10d8c70') version('3.4.0', '02d5706ec03ba885fc246e5fa10d8c70')
version('3.3.1', 'd0d533ec9a5b74933c2a1e84eedc58b4') version('3.3.1', 'd0d533ec9a5b74933c2a1e84eedc58b4')
variant('shared', default=False, description="Build shared library version") variant('debug', default=False, description='Activates the Debug build type')
variant('shared', default=True, description="Build shared library version")
variant('lapacke', default=True, description='Activates the build of the LAPACKE C interface')
# virtual dependency # virtual dependency
provides('blas')
provides('lapack') provides('lapack')
# blas is a virtual dependency.
depends_on('blas')
depends_on('cmake') depends_on('cmake')
# Doesn't always build correctly in parallel
parallel = False
@when('^netlib-blas')
def get_blas_libs(self):
blas = self.spec['netlib-blas']
return [join_path(blas.prefix.lib, 'blas.a')]
@when('^atlas')
def get_blas_libs(self):
blas = self.spec['atlas']
return [join_path(blas.prefix.lib, l)
for l in ('libf77blas.a', 'libatlas.a')]
def install(self, spec, prefix): def install(self, spec, prefix):
blas_libs = ";".join(self.get_blas_libs()) cmake_args = ['-DBUILD_SHARED_LIBS:BOOL=%s' % ('ON' if '+shared' in spec else 'OFF'),
cmake_args = [".", '-DBLAS_LIBRARIES=' + blas_libs] '-DCMAKE_BUILD_TYPE:STRING=%s' % ('Debug' if '+debug' in spec else 'Release'),
'-DLAPACKE:BOOL=%s' % ('ON' if '+lapacke' in spec else 'OFF')]
if '+shared' in spec: cmake_args.extend(std_cmake_args)
cmake_args.append('-DBUILD_SHARED_LIBS=ON')
cmake_args += std_cmake_args
cmake(*cmake_args)
make()
make("install")
with working_dir('spack-build', create=True):
cmake('..', *cmake_args)
make()
make("install")

View File

@ -17,6 +17,7 @@ class Openssl(Package):
version('1.0.2d', '38dd619b2e77cbac69b99f52a053d25a') version('1.0.2d', '38dd619b2e77cbac69b99f52a053d25a')
version('1.0.2e', '5262bfa25b60ed9de9f28d5d52d77fc5') version('1.0.2e', '5262bfa25b60ed9de9f28d5d52d77fc5')
version('1.0.2f', 'b3bf73f507172be9292ea2a8c28b659d') version('1.0.2f', 'b3bf73f507172be9292ea2a8c28b659d')
version('1.0.2g', 'f3c710c045cdee5fd114feb69feba7aa')
depends_on("zlib") depends_on("zlib")
parallel = False parallel = False

View File

@ -12,8 +12,7 @@ class PyNumpy(Package):
extends('python') extends('python')
depends_on('py-nose') depends_on('py-nose')
depends_on('netlib-blas+fpic', when='+blas') depends_on('lapack+shared', when='+blas')
depends_on('netlib-lapack+shared', when='+blas')
def install(self, spec, prefix): def install(self, spec, prefix):
if '+blas' in spec: if '+blas' in spec: