summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--lib/spack/spack/cmd/package-list.py24
-rw-r--r--var/spack/repos/builtin/packages/mkl/package.py38
3 files changed, 50 insertions, 14 deletions
diff --git a/.gitignore b/.gitignore
index 040df3eafd..bfc6172a4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
/var/spack/stage
/var/spack/cache
*.pyc
-/opt/
+/opt
*~
.DS_Store
.idea
diff --git a/lib/spack/spack/cmd/package-list.py b/lib/spack/spack/cmd/package-list.py
index bc64c77eab..a27502d30e 100644
--- a/lib/spack/spack/cmd/package-list.py
+++ b/lib/spack/spack/cmd/package-list.py
@@ -22,10 +22,8 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
-import re
import cgi
from StringIO import StringIO
-import llnl.util.tty as tty
from llnl.util.tty.colify import *
import spack
@@ -34,21 +32,22 @@ description = "Print a list of all packages in reStructuredText."
def github_url(pkg):
"""Link to a package file on github."""
- return ("https://github.com/llnl/spack/blob/master/var/spack/packages/%s/package.py" %
- pkg.name)
+ url = "https://github.com/llnl/spack/blob/master/var/spack/packages/%s/package.py" # NOQA: ignore=E501
+ return (url % pkg.name)
def rst_table(elts):
"""Print out a RST-style table."""
cols = StringIO()
ncol, widths = colify(elts, output=cols, tty=True)
- header = " ".join("=" * (w-1) for w in widths)
+ header = " ".join("=" * (w - 1) for w in widths)
return "%s\n%s%s" % (header, cols.getvalue(), header)
def print_rst_package_list():
"""Print out information on all packages in restructured text."""
- pkgs = sorted(spack.repo.all_packages(), key=lambda s:s.name.lower())
+ pkgs = sorted(spack.repo.all_packages(), key=lambda s: s.name.lower())
+ pkg_names = [p.name for p in pkgs]
print ".. _package-list:"
print
@@ -62,7 +61,7 @@ def print_rst_package_list():
print "Spack currently has %d mainline packages:" % len(pkgs)
print
- print rst_table("`%s`_" % p.name for p in pkgs)
+ print rst_table("`%s`_" % p for p in pkg_names)
print
print "-----"
@@ -79,14 +78,15 @@ def print_rst_package_list():
print
if pkg.versions:
print "Versions:"
- print " " + ", ".join(str(v) for v in reversed(sorted(pkg.versions)))
+ print " " + ", ".join(str(v) for v in
+ reversed(sorted(pkg.versions)))
- for deptype in ('build', 'link', 'run'):
- deps = pkg.dependencies(deptype)
+ for deptype in spack.alldeps:
+ deps = pkg.dependencies_of_type(deptype)
if deps:
print "%s Dependencies" % deptype.capitalize()
- print " " + ", ".join("`%s`_" % d if d != "mpi" else d
- for d in build_deps)
+ print " " + ", ".join("%s_" % d if d in pkg_names
+ else d for d in deps)
print
print "Description:"
diff --git a/var/spack/repos/builtin/packages/mkl/package.py b/var/spack/repos/builtin/packages/mkl/package.py
index 454e78d29c..6ea64f5313 100644
--- a/var/spack/repos/builtin/packages/mkl/package.py
+++ b/var/spack/repos/builtin/packages/mkl/package.py
@@ -9,7 +9,13 @@ class Mkl(IntelInstaller):
Note: You will have to add the download file to a
mirror so that Spack can find it. For instructions on how to set up a
- mirror, see http://software.llnl.gov/spack/mirrors.html"""
+ mirror, see http://software.llnl.gov/spack/mirrors.html.
+
+ To set the threading layer at run time set MKL_THREADING_LAYER
+ variable to one of the following values: INTEL, SEQUENTIAL, PGI.
+ To set interface layer at run time, use set the MKL_INTERFACE_LAYER
+ variable to LP64 or ILP64.
+ """
homepage = "https://software.intel.com/en-us/intel-mkl"
@@ -18,6 +24,11 @@ class Mkl(IntelInstaller):
version('11.3.3.210', 'f72546df27f5ebb0941b5d21fd804e34',
url="file://%s/l_mkl_11.3.3.210.tgz" % os.getcwd())
+ # virtual dependency
+ provides('blas')
+ provides('lapack')
+ # TODO: MKL also provides implementation of Scalapack.
+
def install(self, spec, prefix):
self.intel_prefix = os.path.join(prefix, "pkg")
@@ -26,3 +37,28 @@ class Mkl(IntelInstaller):
mkl_dir = os.path.join(self.intel_prefix, "mkl")
for f in os.listdir(mkl_dir):
os.symlink(os.path.join(mkl_dir, f), os.path.join(self.prefix, f))
+
+ def setup_dependent_package(self, module, dspec):
+ # For now use Single Dynamic Library:
+ # To set the threading layer at run time, use the
+ # mkl_set_threading_layer function or set MKL_THREADING_LAYER
+ # variable to one of the following values: INTEL, SEQUENTIAL, PGI.
+ # To set interface layer at run time, use the mkl_set_interface_layer
+ # function or set the MKL_INTERFACE_LAYER variable to LP64 or ILP64.
+
+ # Otherwise one would need to specify several libraries
+ # (e.g. mkl_intel_lp64;mkl_sequential;mkl_core), which reflect
+ # different interface and threading layers.
+
+ name = 'libmkl_rt.%s' % dso_suffix
+ libdir = find_library_path(name, self.prefix.lib64, self.prefix.lib)
+
+ self.spec.blas_shared_lib = join_path(libdir, name)
+ self.spec.lapack_shared_lib = self.spec.blas_shared_lib
+
+ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
+ # set up MKLROOT for everyone using MKL package
+ spack_env.set('MKLROOT', self.prefix)
+
+ def setup_environment(self, spack_env, env):
+ env.set('MKLROOT', self.prefix)