Added package files for Lapack (has virtual dependency blas) and Netlib blas (provides virtual dependency blas).
This commit is contained in:
parent
af92250c7e
commit
3d2df174d1
2 changed files with 70 additions and 0 deletions
41
var/spack/packages/lapack/package.py
Normal file
41
var/spack/packages/lapack/package.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
from spack import *
|
||||
from subprocess import call
|
||||
import sys
|
||||
import glob
|
||||
|
||||
class Lapack(Package):
|
||||
"""
|
||||
Netlib implementation of Lapack. If we end up having more Lapack libraries, we should
|
||||
turn it into a virtual dependency.
|
||||
"""
|
||||
homepage = "http://www.netlib.org/lapack/"
|
||||
url = "http://www.netlib.org/lapack/lapack-3.5.0.tgz"
|
||||
|
||||
version('3.5.0', 'b1d3e3e425b2e44a06760ff173104bdf')
|
||||
|
||||
# Doesn't always build correctly in parallel
|
||||
parallel = False
|
||||
|
||||
# virtual
|
||||
depends_on("blas")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# CMake could be used if the build becomes more complex
|
||||
|
||||
call(['cp', 'make.inc.example', 'make.inc'])
|
||||
|
||||
# Retrieves name of package that satisifies 'blas' virtual dependency
|
||||
blas_name = next(m for m in ('netlib_blas', 'atlas') if m in spec)
|
||||
blas_spec = spec[blas_name]
|
||||
blas_object_path = blas_spec.prefix.lib + '/blas.a'
|
||||
|
||||
# The blas dependency must provide a 'blas.a' - but this is not gauranteed right now
|
||||
# So maybe we should check if it exists first... maybe...
|
||||
make('BLASLIB="%s"' % blas_object_path)
|
||||
|
||||
# Manual install since no method provided
|
||||
# Should probably be changed so only one external call is made
|
||||
# Can install be used on a list of files?
|
||||
mkdirp(prefix.lib)
|
||||
for file in glob.glob('*.a'):
|
||||
install(file, prefix.lib)
|
29
var/spack/packages/netlib_blas/package.py
Normal file
29
var/spack/packages/netlib_blas/package.py
Normal file
|
@ -0,0 +1,29 @@
|
|||
from spack import *
|
||||
from subprocess import call
|
||||
|
||||
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')
|
||||
|
||||
# virtual dependency
|
||||
provides('blas')
|
||||
|
||||
# Doesn't always build correctly in parallel
|
||||
parallel = False
|
||||
|
||||
def install(self, spec, prefix):
|
||||
call(['cp', 'make.inc.example', 'make.inc'])
|
||||
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
|
||||
call(['ln', '-s', prefix.lib + '/librefblas.a', prefix.lib + '/blas.a'])
|
Loading…
Reference in a new issue