summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/gcc/package.py1
-rw-r--r--var/spack/repos/builtin/packages/intel-parallel-studio/package.py143
-rw-r--r--var/spack/repos/builtin/packages/intel/package.py47
-rw-r--r--var/spack/repos/builtin/packages/lmod/fix_tclsh_paths.patch10
-rw-r--r--var/spack/repos/builtin/packages/lmod/package.py12
-rw-r--r--var/spack/repos/builtin/packages/tcl/package.py2
6 files changed, 195 insertions, 20 deletions
diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py
index 224105ea0f..72a5cb22f8 100644
--- a/var/spack/repos/builtin/packages/gcc/package.py
+++ b/var/spack/repos/builtin/packages/gcc/package.py
@@ -15,6 +15,7 @@ class Gcc(Package):
list_depth = 2
version('6.1.0', '8fb6cb98b8459f5863328380fbf06bd1')
+ version('5.4.0', '4c626ac2a83ef30dfb9260e6f59c2b30')
version('5.3.0', 'c9616fd448f980259c31de613e575719')
version('5.2.0', 'a51bcfeb3da7dd4c623e27207ed43467')
version('4.9.3', '6f831b4d251872736e8e9cc09746f327')
diff --git a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
index 493ca16417..fb98b2473c 100644
--- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
+++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
@@ -42,15 +42,27 @@ class IntelParallelStudio(IntelInstaller):
variant('daal',
default=True, description="Install the Intel DAAL libraries")
variant('ipp', default=True, description="Install the Intel IPP libraries")
- variant('tools', default=True, description="""Install the Intel Advisor,\
-VTune Amplifier, and Inspector tools""")
+ variant('tools', default=True, description="Install the Intel Advisor, "
+ "VTune Amplifier, and Inspector tools")
provides('mpi', when='@cluster:+mpi')
provides('mkl', when='+mkl')
provides('daal', when='+daal')
provides('ipp', when='+ipp')
+ def check_variants(self, spec):
+ error_message = '\t{variant} can not be turned off if "+all" is set'
+
+ if self.spec.satisfies('+all'):
+ errors = [error_message.format(variant=x)
+ for x in ('mpi', 'mkl', 'daal', 'ipp', 'tools')
+ if ('~' + x) in self.spec]
+ if errors:
+ errors = ['incompatible variants given'] + errors
+ raise InstallError('\n'.join(errors))
+
def install(self, spec, prefix):
+ self.check_variants(spec)
base_components = "ALL" # when in doubt, install everything
mpi_components = ""
@@ -58,9 +70,7 @@ VTune Amplifier, and Inspector tools""")
daal_components = ""
ipp_components = ""
- if spec.satisfies('+all'):
- base_components = "ALL"
- else:
+ if not spec.satisfies('+all'):
all_components = get_all_components()
regex = '(comp|openmp|intel-tbb|icc|ifort|psxe|icsxe-pset)'
base_components = \
@@ -77,10 +87,10 @@ VTune Amplifier, and Inspector tools""")
regex = '(gdb|vtune|inspector|advisor)'
tool_components = \
filter_pick(all_components, re.compile(regex).search)
+ components = base_components
- components = base_components
if not spec.satisfies('+all'):
- if spec.satisfies('+mpi') and 'cluster' in str(spec.version):
+ if spec.satisfies('+mpi'):
components += mpi_components
if spec.satisfies('+mkl'):
components += mkl_components
@@ -92,7 +102,10 @@ VTune Amplifier, and Inspector tools""")
spec.satisfies('@professional')):
components += tool_components
- self.intel_components = ';'.join(components)
+ if spec.satisfies('+all'):
+ self.intel_components = 'ALL'
+ else:
+ self.intel_components = ';'.join(components)
IntelInstaller.install(self, spec, prefix)
absbindir = os.path.dirname(os.path.realpath(os.path.join(
@@ -116,8 +129,11 @@ VTune Amplifier, and Inspector tools""")
if (spec.satisfies('+all') or spec.satisfies('+mpi')) and \
spec.satisfies('@cluster'):
- os.symlink(self.global_license_file, os.path.join(
- self.prefix, "itac_latest", "license.lic"))
+ for ifile in os.listdir(os.path.join(self.prefix, "itac")):
+ if os.path.isdir(os.path.join(self.prefix, "itac", ifile)):
+ os.symlink(self.global_license_file,
+ os.path.join(self.prefix, "itac", ifile,
+ "license.lic"))
if spec.satisfies('~newdtags'):
wrappers = ["mpif77", "mpif77", "mpif90", "mpif90",
"mpigcc", "mpigcc", "mpigxx", "mpigxx",
@@ -142,3 +158,110 @@ VTune Amplifier, and Inspector tools""")
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
os.path.join(self.prefix.man, "man1"))
+
+ def setup_environment(self, spack_env, run_env):
+ # TODO: Determine variables needed for the professional edition.
+
+ major_ver = self.version[1]
+
+ # Remove paths that were guessed but are incorrect for this package.
+ run_env.remove_path('LIBRARY_PATH',
+ join_path(self.prefix, 'lib'))
+ run_env.remove_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'lib'))
+ run_env.remove_path('CPATH',
+ join_path(self.prefix, 'include'))
+
+ # Add the default set of variables
+ run_env.prepend_path('LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'intel64'))
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'intel64'))
+ run_env.prepend_path('LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib',
+ 'intel64', 'gcc4.4'))
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib',
+ 'intel64', 'gcc4.4'))
+ run_env.prepend_path('CPATH',
+ join_path(self.prefix, 'tbb', 'include'))
+ run_env.prepend_path('MIC_LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'mic'))
+ run_env.prepend_path('MIC_LD_LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'mic'))
+ run_env.prepend_path('MIC_LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib', 'mic'))
+ run_env.prepend_path('MIC_LD_LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib', 'mic'))
+
+ if self.spec.satisfies('+all'):
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix,
+ 'debugger_{0}'.format(major_ver),
+ 'libipt', 'intel64', 'lib'))
+ run_env.set('GDBSERVER_MIC',
+ join_path(self.prefix,
+ 'debugger_{0}'.format(major_ver), 'gdb',
+ 'targets', 'mic', 'bin', 'gdbserver'))
+ run_env.set('GDB_CROSS',
+ join_path(self.prefix,
+ 'debugger_{0}'.format(major_ver),
+ 'gdb', 'intel64_mic', 'bin', 'gdb-mic'))
+ run_env.set('MPM_LAUNCHER',
+ join_path(self.prefix,
+ 'debugger_{0}'.format(major_ver), 'mpm',
+ 'mic',
+ 'bin', 'start_mpm.sh'))
+ run_env.set('INTEL_PYTHONHOME',
+ join_path(self.prefix,
+ 'debugger_{0}'.format(major_ver), 'python',
+ 'intel64'))
+
+ if (self.spec.satisfies('+all') or self.spec.satisfies('+mpi')):
+ # Only I_MPI_ROOT is set here because setting the various PATH
+ # variables will potentially be in conflict with other MPI
+ # environment modules. The I_MPI_ROOT environment variable can be
+ # used as a base to set necessary PATH variables for using Intel
+ # MPI. It is also possible to set the variables in the modules.yaml
+ # file if Intel MPI is the dominant, or only, MPI on a system.
+ run_env.set('I_MPI_ROOT', join_path(self.prefix, 'impi'))
+
+ if self.spec.satisfies('+all') or self.spec.satisfies('+mkl'):
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'mkl', 'lib',
+ 'intel64'))
+ run_env.prepend_path('LIBRARY_PATH',
+ join_path(self.prefix, 'mkl', 'lib',
+ 'intel64'))
+ run_env.prepend_path('CPATH',
+ join_path(self.prefix, 'mkl', 'include'))
+ run_env.prepend_path('MIC_LD_LIBRARY_PATH',
+ join_path(self.prefix, 'mkl', 'lib', 'mic'))
+ run_env.set('MKLROOT', join_path(self.prefix, 'mkl'))
+
+ if self.spec.satisfies('+all') or self.spec.satisfies('+daal'):
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'daal', 'lib',
+ 'intel64_lin'))
+ run_env.prepend_path('LIBRARY_PATH',
+ join_path(self.prefix, 'daal', 'lib',
+ 'intel64_lin'))
+ run_env.prepend_path('CPATH',
+ join_path(self.prefix, 'daal', 'include'))
+ run_env.prepend_path('CLASSPATH',
+ join_path(self.prefix, 'daal', 'lib',
+ 'daal.jar'))
+ run_env.set('DAALROOT', join_path(self.prefix, 'daal'))
+
+ if self.spec.satisfies('+all') or self.spec.satisfies('+ipp'):
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'ipp', 'lib',
+ 'intel64'))
+ run_env.prepend_path('LIBRARY_PATH',
+ join_path(self.prefix, 'ipp', 'lib',
+ 'intel64'))
+ run_env.prepend_path('CPATH',
+ join_path(self.prefix, 'ipp', 'include'))
+ run_env.prepend_path('MIC_LD_LIBRARY_PATH',
+ join_path(self.prefix, 'ipp', 'lib', 'mic'))
+ run_env.set('IPPROOT', join_path(self.prefix, 'ipp'))
diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py
index 56d9fabddf..d171411946 100644
--- a/var/spack/repos/builtin/packages/intel/package.py
+++ b/var/spack/repos/builtin/packages/intel/package.py
@@ -49,13 +49,6 @@ class IntelInstaller(Package):
def install(self, spec, prefix):
- # Remove the installation DB, otherwise it will try to install into
- # location of other Intel builds
- if os.path.exists(os.path.join(os.environ["HOME"], "intel",
- "intel_sdp_products.db")):
- os.remove(os.path.join(os.environ["HOME"], "intel",
- "intel_sdp_products.db"))
-
if not hasattr(self, "intel_prefix"):
self.intel_prefix = self.prefix
@@ -66,12 +59,14 @@ ACCEPT_EULA=accept
PSET_MODE=install
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
PSET_INSTALL_DIR=%s
+NONRPM_DB_DIR=%s
ACTIVATION_LICENSE_FILE=%s
ACTIVATION_TYPE=license_file
PHONEHOME_SEND_USAGE_DATA=no
CONTINUE_WITH_OPTIONAL_ERROR=yes
COMPONENTS=%s
-""" % (self.intel_prefix, self.global_license_file, self.intel_components))
+""" % (self.intel_prefix, self.intel_prefix, self.global_license_file,
+ self.intel_components))
install_script = Executable("./install.sh")
install_script('--silent', silent_config_filename)
@@ -111,8 +106,8 @@ class Intel(IntelInstaller):
self.prefix.lib, "intel64", "libimf.a")))[0]
# symlink or copy?
- os.symlink(self.global_license_file, os.path.join(absbindir,
- "license.lic"))
+ os.symlink(self.global_license_file,
+ os.path.join(absbindir, "license.lic"))
if spec.satisfies('+rpath'):
for compiler_command in ["icc", "icpc", "ifort"]:
@@ -123,3 +118,35 @@ class Intel(IntelInstaller):
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
os.path.join(self.prefix.man, "man1"))
+
+ def setup_environment(self, spack_env, run_env):
+
+ # Remove paths that were guessed but are incorrect for this package.
+ run_env.remove_path('LIBRARY_PATH',
+ join_path(self.prefix, 'lib'))
+ run_env.remove_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'lib'))
+ run_env.remove_path('CPATH',
+ join_path(self.prefix, 'include'))
+
+ # Add the default set of variables
+ run_env.prepend_path('LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'intel64'))
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'intel64'))
+ run_env.prepend_path('LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib',
+ 'intel64', 'gcc4.4'))
+ run_env.prepend_path('LD_LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib',
+ 'intel64', 'gcc4.4'))
+ run_env.prepend_path('CPATH',
+ join_path(self.prefix, 'tbb', 'include'))
+ run_env.prepend_path('MIC_LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'mic'))
+ run_env.prepend_path('MIC_LD_LIBRARY_PATH',
+ join_path(self.prefix, 'lib', 'mic'))
+ run_env.prepend_path('MIC_LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib', 'mic'))
+ run_env.prepend_path('MIC_LD_LIBRARY_PATH',
+ join_path(self.prefix, 'tbb', 'lib', 'mic'))
diff --git a/var/spack/repos/builtin/packages/lmod/fix_tclsh_paths.patch b/var/spack/repos/builtin/packages/lmod/fix_tclsh_paths.patch
new file mode 100644
index 0000000000..70f0d47925
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lmod/fix_tclsh_paths.patch
@@ -0,0 +1,10 @@
+--- a/Makefile.in 2016-07-21 13:03:27.861000000 -0400
++++ b/Makefile.in 2016-07-21 13:03:58.416000000 -0400
+@@ -197,6 +197,7 @@
+ -e 's|@colorize@|$(COLORIZE)|g' \
+ -e 's|@duplicate_paths@|$(DUPLICATE_PATHS)|g' \
+ -e 's|@allow_tcl_mfiles@|$(ALLOW_TCL_MFILES)|g' \
++ -e 's|@path_to_tclsh@|$(PATH_TO_TCLSH)|g' \
+ -e 's|@mpath_avail@|$(MPATH_AVAIL)|g' \
+ -e 's|@short_time@|$(SHORT_TIME)|g' \
+ -e 's|@cacheDirs@|$(SPIDER_CACHE_DIRS)|g' \
diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py
index efa235f646..01911c1a30 100644
--- a/var/spack/repos/builtin/packages/lmod/package.py
+++ b/var/spack/repos/builtin/packages/lmod/package.py
@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
+from glob import glob
class Lmod(Package):
@@ -44,6 +45,7 @@ class Lmod(Package):
depends_on('lua@5.2:')
depends_on('lua-luaposix', type=nolink)
depends_on('lua-luafilesystem', type=nolink)
+ depends_on('tcl', type=nolink)
parallel = False
@@ -53,6 +55,16 @@ class Lmod(Package):
spack_env.append_path('LUA_PATH', stage_lua_path.format(
version=self.version), separator=';')
+ patch('fix_tclsh_paths.patch')
+
+ def patch(self):
+ """The tcl scripts should use the tclsh that was discovered
+ by the configure script. Touch up their #! lines so that the
+ sed in the Makefile's install step has something to work on.
+ Requires the change in the associated patch file.fg"""
+ for tclscript in glob('src/*.tcl'):
+ filter_file(r'^#!.*tclsh', '#!@path_to_tclsh@', tclscript)
+
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
make('install')
diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py
index ef922314d8..16d896acc6 100644
--- a/var/spack/repos/builtin/packages/tcl/package.py
+++ b/var/spack/repos/builtin/packages/tcl/package.py
@@ -57,3 +57,5 @@ class Tcl(Package):
configure("--prefix={0}".format(prefix))
make()
make("install")
+ with working_dir(prefix.bin):
+ symlink('tclsh{0}'.format(self.version.up_to(2)), 'tclsh')